如何为Azure SQL Database设置特定工作日时段的告警?
Azure SQL Database 特定时段/工作日告警的实现方法
Azure原生告警规则本身没有直接的时段/工作日过滤选项,但可以通过以下几种简便方法实现需求,无需使用Event Hub:
方法1:使用Alert Processing Rules(推荐)
这是Azure官方提供的专门用于控制告警生效时段的功能,步骤如下:
- 先创建常规的Azure SQL Database告警规则(比如针对CPU使用率、连接数等指标),完成触发条件的配置。
- 进入Azure Monitor → Alert processing rules → 新建规则:
- 选择目标:指定刚才创建的SQL Database告警规则作为作用对象。
- 配置规则设置:选择**“Suppress alerts”(抑制告警),切换到“Schedule”**标签页:
- 设置生效时间段(如
9:00到17:00)。 - 勾选生效星期(仅周一至周五)。
- 设置生效时间段(如
- 保存规则后,只有在指定时段和工作日内,告警才会触发动作组的通知;非时段内的告警会被自动抑制,不会发送通知。
方法2:在日志告警查询中直接过滤时间
如果你的告警是基于Log Analytics的日志查询(比如针对SQL数据库的慢查询、错误日志等),可以在Kusto查询语句中直接加入时间过滤条件,示例:
AzureDiagnostics | where ResourceType == "SQLDATABASES" // 过滤周一至周五(dayofweek返回1=周一,5=周五) | where dayofweek(TimeGenerated) between (1 .. 5) // 过滤9:00-17:00 | where hourofday(TimeGenerated) >= 9 and hourofday(TimeGenerated) < 17 // 后续告警条件逻辑 | where ...
查询只会返回指定时段内的日志数据,告警自然只会在该时段触发。
方法3:通过Logic Apps实现时段过滤
如果需要更灵活的通知控制,可以将告警的动作组指向Azure Logic Apps,步骤:
- 创建Logic Apps,触发条件选择**“When an Azure Monitor alert is triggered”**。
- 在Logic Apps中添加条件判断:检查当前时间是否处于周一至周五的9:00-17:00。
- 仅当条件满足时,才执行后续通知动作(如发送邮件、短信、Teams消息等);不满足则直接结束流程,不发送通知。
内容的提问来源于stack exchange,提问作者Dmitri
相关产品推荐
相关产品推荐

