如何为Azure Web应用设置30天无访问告警?管控Dev环境云成本
解决方案:Azure Dev环境闲置资源告警配置
一、优化Azure Monitor告警的时间范围配置
你可以通过调整KQL查询逻辑和告警规则设置来实现30天连续无访问的检测:
- 调整KQL查询逻辑:让查询直接覆盖过去30天的日志,判断是否存在有效访问记录。以App Service为例,示例KQL如下:
AppServiceHTTPLogs | where TimeGenerated > ago(30d) | where RequestMethod != "OPTIONS" // 过滤健康检查等非用户主动访问 | summarize hasTraffic = count() > 0 - 配置告警规则:
- 在Azure Monitor告警规则中,将时间范围设为
30天,检查频率设为每天,匹配你每日巡检的需求。 - 触发条件设置为
当查询结果中的hasTraffic等于false时触发告警通知。
- 在Azure Monitor告警规则中,将时间范围设为
- 适配其他资源:如果是VM、Function App等资源,只需替换对应的日志表(如
VMConnection或FunctionAppLogs),核心逻辑保持一致——检查30天内是否有符合条件的访问记录。
二、替代方案:Azure原生工具组合实现自动化治理
如果Monitor告警配置过于繁琐,可以用Azure原生工具简化流程:
- Azure Advisor:它会自动识别闲置资源(比如连续7天无流量的App Service、未启动的VM等),在成本建议板块就能直接查看这类资源。
- 自动化规则:通过Azure Policy或Azure Automation创建扫描规则,批量识别带
Environment:Dev标签的资源,结合日志查询判断闲置状态,触发邮件通知,甚至可以配置自动停止/删除闲置资源(建议先加人工确认环节)。
三、额外优化建议
- 统一资源标签:给所有Dev环境资源打上
Environment:Dev标签,方便批量查询和管理,避免误触生产资源。 - 分层告警策略:设置两级提醒:连续14天无流量时发提醒通知资源负责人,30天无流量时触发正式告警。
- 排除必要资源:在KQL查询中通过
ResourceId或ResourceGroup排除需要长期保留的基础测试资源(如共享测试数据库)。
内容的提问来源于stack exchange,提问作者Greg Stevens
相关产品推荐
相关产品推荐

