Azure应用程序洞察 - 自定义警报

时间:2016-08-03 20:51:37

标签: c# azure azure-worker-roles azure-application-insights

我们运行在不同Azure角色上运行的混合应用程序(2个Web角色+ 2个工作者角色)。上周末出了问题,服务进入了#34;反应迟钝"状态并在没有重新启动的情况下进入该状态两天(!)。

我们决定整合Azure Application Insights,因为我们无法忍受2天甚至不知道。

我想拥有的是我应用程序的心跳。我们的一个工作角色有不同的服务同时运行。我想监控这些服务是否正在运行以及它们的性能如何(根据我定义的指标,假设"在一分钟内处理的消息数量")。

如果此指标(例如)下降(或上升)阈值,我希望收到提醒。我试过一个小型的演示应用程序,但我无法做到这一点。

我在C#演示应用上使用Azure Application Insights API做了什么: 1.在每个循环后等待10秒的无限循环内,跟踪一个StartOperation 2.在此StartOperation内,跟踪TrackMetric传递0到10的随机值 3.检查一切是否在Azure上工作(它是) 4.定义一个警报,说明如果该指标在五分钟内小于或等于1,则必须发送电子邮件

什么都没有到,但一切都正常运行。比我停止服务,我看到Azure中的事件丢失,但没有提出警报。这是正常的吗?

你如何检查像我这样的案件?

由于 马可

4 个答案:

答案 0 :(得分:2)

您可以使用Application Insights Web Tests功能来检查端点是否可以从不同的地理区域获得,并在不是时提醒。

如果所有端点都经过身份验证,您可以公开简单的“/ ping”端点并针对此运行Web测试。

但是,除非您将其注册为通过Web协议接受“/ ping”(对于工作者角色可行,例如,可以通过这种方式实现WCF服务),否则它将不适用于工作者角色。

答案 1 :(得分:2)

问题是Application Insights自定义警报目前仅在数据到达时触发。

我们在遇到相同问题时一直使用的策略是让一个单独的服务定期发送相同的度量值,但具有“零含义”值。 在我们的特定情况下,我们使用可用性度量,其中“1”表示健康,而“0”表示无效,它仅用于在定义的持续时间内没有发送“1”的情况下引出警报。

您可以使用任何广泛的可能机制发送“0”指标,只要它与您实际想要监控的服务无关。你需要确保它们不会同时失败。

希望这有帮助, 马克西姆

答案 2 :(得分:1)

不要认为App Insights会让您发送有关缺少指标的提醒,这就是当您的实例无法响应时会发生的情况。

如果您有外部工具的预算,请查看CloudMonix。使用默认配置(不需要代理,自定义代码等),它可以完全满足您的需求。免责声明:我隶属于该产品

答案 3 :(得分:-1)