我正在尝试创建一个新的警报规则,每当服务总线中的主题中出现新的死信时,该规则都会发送电子邮件。
最初,我尝试在订阅级别寻找解决方案,以便我可以选择要监视每个主题的订阅者,但我无法设法设置它(这可能吗?我尝试查询)。 之后,我意识到我可以使用一个默认条件,只要有超过 x 个死信(在我的例子中为 1 个),就会触发警报。这起初有效,但后来我注意到警报仅在超过阈值时触发一次。例如,如果我收到一封新的死信(假设是第三封),它不会触发另一个警报,即使(并且因为实际上)计数仍然高于阈值。不幸的是,我不能每次都立即重置它。
所以: 有没有办法让每一个新的死信都触发警报? 有没有办法在订阅级别而不是仅在主题级别配置规则? 非常感谢!
当服务总线队列或主题中的消息为死信时,无法直接创建警报或警报规则。
为了在触发时创建警报规则,当服务总线主题中的消息为死信时,您可以使用
Service Bus Trigger in Azure Function
或 Logic App triggers
。
目前,有一个选项用于创建警报规则来计算死信主题或队列中的消息数量,如下所示。
前往
Service Bus >> Monitoring >> Alerts >> Alert rules
点击后,您可以看到下面给出的屏幕,用于选择相应的信号。这里应该是
Count of dead-lettered messages in a Queue/Topic
。
完成后,您可以创建一个新的操作组来触发事件,或通过添加电子邮件通知详细信息来相应地选择任何现有的操作组。提供它们后,您可以通过以下方式创建新的警报规则。
另一种选择是编写 KQL 查询来满足您的要求并在 Log Analytics 工作区中运行它。一旦查询按预期执行,您就可以单击警报规则并创建它。
KQL 查询示例:
AzureDiagnostics
| where ResourceType == "NAMESPACES"
| where EntityType_s == "Topic"
| project Resource, EntityName_s, TimeGenerated
注意:对于死字母消息,将
EntityType_s
更改为 /$DeadLetterQueue/Topic
。由于我的环境中没有此类消息,因此我使用了上面的示例查询。
参考SO相关问题或要求。