我写了一个Windows应用程序,每5分钟ping一次我的网站,以控制它现在是UP还是DOWN。它在我们的网络和我们的测试服务器中工作,但我们的实时环境是在Azure中,它不允许我ping该网站。
我可以使用什么代替Ping来控制Azure中的网站?怎么样?
答案 0 :(得分:2)
我建议你把它放在你自己的基础设施之外。主要是因为ping
某事物无论如何都会给你非常有限的信息。如果角色已启动并正在运行,但您的网站实际上因异常而崩溃,该怎么办?如果您的角色有多个实例,其中一个实例已关闭,并且您的ping请求没有说错,该怎么办?
使用像Pingdom这样的东西:
它允许你做一些事情,这可能是不可能的(或不容易)与你自己的'内部'解决方案。例如事务监控(类似于非常基本的UI测试,有用户登录和点击),多种警报方式(甚至是Twitter警报)和多个不同的请求位置(它可能在英国有效,但它是否有效从法国访问时?)。
此类服务仅为此目的而创建。您需要定义何时相信您的网站“上升”或“下降”。它是否响应ping
的时候?是否在您的登录页面显示正常时?您的管理页面显示正常吗?
答案 1 :(得分:2)
使用HttpWebRequest和HttpWebResponse并记住处理您创建的对象。特别是HttpWebResponse的响应流。
HttpWebResponse res = req.GetResponse() as HttpWebResponse;
using (Stream respStream = res.GetResponseStream())
{
respStream.ReadByte();
respStream.Close();
}
答案 2 :(得分:1)
我使用了HttpWebRequest和HttpWebResponse而不是Ping,但是经过3次程序因某种原因冻结了。我把所有东西放在一个try ... catch块中,但它也没有抛出任何异常,只是冻结。
try
{
var myRequest = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)myRequest.GetResponse(); //After third time it freezes here
if (response.StatusCode == HttpStatusCode.OK)
{
labelResult.Text += TxtIPAddress.Text + " is Available " + " " + System.DateTime.Now.ToString() + " " + Environment.NewLine;
}
else
{
labelResult.Text += TxtIPAddress.Text + " is Unavailable " + System.DateTime.Now.ToString() + " " + Environment.NewLine;
}
}
catch (Exception ex)
{
labelResult.Text += TxtIPAddress.Text + " is Unavailable " + System.DateTime.Now.ToString() + " " + Environment.NewLine;
}
答案 3 :(得分:1)
另一个更复杂的监控工具是PRTG
它提供了许多监视器,并且对于您希望监视的许多传感器是免费的。
通过这种方式,您不仅可以监控网站的存在,还可以监控特定调用的Web服务是否返回SQL查询。可能性几乎是无穷无尽的。