从未触发执行计数<1的Azure Function监视器警报

时间:2019-05-03 09:21:06

标签: azure azure-functions azure-application-insights azure-monitoring

我有一个带有Azure功能的Azure Function应用程序,我个人希望通过以下规则进行监视:如果Azure Function在N分钟内没有执行,请发送电子邮件/通知。

我想知道是否可以通过Application Insights Alerts来实现,它确实在单个Azure功能的基础上为 count 提供信号逻辑。但是此计数从不为0,在图中似乎没有任何计数<0被视为数字。它显示为-,如下面的测试功能图所示:

testfunction chart(没有足够的声誉来发布图像)

图表上的峰值被视为3,但是如果我使用条件“ 只要testfunction Count小于1 ”,则永远不会触发警报。

更改聚合粒度实际上并没有多大作用,因为信号逻辑似乎从未记录过0或任何小于1的计数。

有很多(稍微)更不方便的方法来进行这种类型的监视,但是使用内置的不错的Azure Application Insights Alerts警报似乎很有可能,我想尽可能使用它。

我是要滥用Application Insights Alerts还是明显没有得到我的帮助?我认为应该有可能基于缺乏执行力的监视规则。

1 个答案:

答案 0 :(得分:0)

您可能必须使用日志/查询警报来执行此操作。如果您要执行基于指标的警报,则其中一些不会发送0作为数据。因此,如果在一个时间范围内什么也没发生,则不会有0警报,因为没有东西提交0、0、0、0。

相反,您将根据以下查询创建警报:https://docs.microsoft.com/en-us/azure/azure-monitor/platform/alerts-unified-log

该文档列出了以下确切情况:

  

在某些情况下,您可能希望在没有事件的情况下创建警报。

     

例如,一个进程可能记录常规事件以指示其正常工作。如果在特定时间段内未记录这些事件之一,则应创建警报。 在这种情况下,您可以将阈值设置为小于1。[加重,这是您的情况,对吗?]

     

“记录数量”示例类型的日志警报

     

考虑一种情况,您想知道基于Web的应用程序何时以代码500(即“内部服务器错误”)向用户做出响应。您将使用以下详细信息创建警报规则:

     

查询:请求|其中resultCode ==“ 500”

     

时间段:30分钟

     

警报频率:5分钟

     

阈值:大于0

在该示例中,由于设置了时间段,查询最终将类似于requests | where timespan < ago(30m) | where resultCode == "500"。 (然后查询本身可以过滤您希望的时间范围/结果设置)

因此,对于您而言,您可能只需要requests,就完全没有任何位置条件,并且无论您使用的时间段和频率如何,都将阈值设为“小于1”。 您还可以进行更复杂的查询,以过滤出测试数据等。

需要注意的一件事是,我相信日志警报将在每次频率过去时发出警报。因此,如果您每5分钟设置请求<1个警报,并且您的函数在2个小时内没有任何呼叫,则该警报将每5分钟触发一次,向您发送40封电子邮件或其他内容。也许你想要:)