1

我编写了一个 Windows 应用程序,每 5 分钟对我的网站进行一次 ping 操作,以控制此时它是 UP 还是 DOWN。它在我们的网络和测试服务器中工作,但我们的实时环境在 Azure 中,它不允许我 ping 那个网站。

我可以使用什么来代替 Ping 在 Azure 中控制我的网站?如何?

4

4 回答 4

2

我建议你把它放在你自己的基础设施之外。主要是因为ping无论如何,某些东西可以给你非常有限的信息。如果该角色已启动并正在运行,但您的网站实际上因异常而崩溃怎么办?如果您有多个角色实例,其中一个已关闭,并且您的 ping 请求没有说明任何问题,该怎么办?

使用类似 Pingdom 的东西:

http://www.pingdom.com

它可以让你做一些你自己的“内部”解决方案可能无法(或不容易)做的事情。例如事务监控(类似于非常基本的 UI 测试,例如让用户登录并点击)、多种警报方式(甚至是 Twitter 警报)和多个不同的请求位置(它可能在英国有效,但它是否有效从法国访问时?)。

像这样的服务是为了这个唯一目的而创建的。您需要定义您认为您的网站何时“启动”或“停止”。是它响应ping's 的时候吗?当您的登录页面显示正常时?是在您的管理页面显示正常的时候吗?

于 2013-04-03T14:20:34.143 回答
2

使用 HttpWebRequest 和 HttpWebResponse 并记住 Dispose 您创建的对象。特别是 HttpWebResponse 的响应流。

HttpWebResponse res = req.GetResponse() as HttpWebResponse;
using (Stream respStream = res.GetResponseStream())
{
  respStream.ReadByte();
  respStream.Close();
} 
于 2013-04-03T16:41:25.863 回答
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;
  }
于 2013-04-03T14:35:31.503 回答
1

另一个更复杂的监控工具是PRTG

它提供了许多监视器,并且对于您希望监视的许多传感器是免费的。

这样,您不仅可以监控站点的存在,还可以监控特定调用的 Web 服务是否返回,即 SQL 查询。可能性几乎是无穷无尽的。

于 2013-04-03T15:18:12.483 回答