Azure 账号安全设置 微软云监控报警自定义
话说那天凌晨2:17,我正梦见自己在Azure Portal里种玫瑰,手机突然震得像被雷劈——三条短信+两条邮件+一个Teams弹窗,全指向同一个报警:「SQL Database CPU% > 90% 持续5分钟」。我猛醒,灌半杯凉咖啡,连上VPN,发现数据库其实早8点就恢复了……而报警还在孜孜不倦地发第7轮。那一刻,我对着屏幕深深鞠了一躬:谢谢您,Azure,用最温柔的方式提醒我——您的默认报警策略,大概率不是为您家服务器写的,是为隔壁火星数据中心写的。
别笑,这事儿真不稀罕。Azure Monitor自带的「开箱即用」报警规则,就像新买的西装——剪裁工整、面料高级,但袖子长三寸、裤脚堆两褶,不改根本没法出门。今天咱不聊PaaS架构图,不扯ARM模板语法,就坐你工位对面,泡杯茶(或续杯美式),聊聊怎么把Azure监控报警,从「机械闹钟」调成「懂你的智能管家」。
第一步:先搞清它到底在报什么
Azure报警分三类:指标(Metrics)、日志(Log Analytics)、活动日志(Activity Log)。新手常一头扎进「日志报警」,结果发现查询语句写得比年终总结还长,延迟还高达3分钟——别急,90%的常规场景,指标报警才是你的主力队友。它响应快(秒级)、延迟低(1-2分钟)、配置直白(点选+填空),比如CPU、内存、请求失败率、队列长度……全是现成的数字,不用你写KQL查半天。
关键提示:进「Monitor → Alerts → New alert rule」前,请先确认目标资源已启用「Diagnostic settings」——不是勾个框就完事!得选中至少一项指标导出到Log Analytics或Metrics(推荐后者,轻量高效),否则列表里干干净净,像极了你的工资条。
第二步:指标选对,胜过调参十小时
点开指标下拉菜单,眼花缭乱?别慌。记住三个黄金原则:
- 别信「Average」:平均值会掩盖尖峰。你数据库CPU平均才40%,但每分钟有3秒飙到99%——慢查询正在暗处狞笑。换成「Max」或「P95」,才能揪出真凶;
- 时间粒度要咬合:设「过去5分钟,每1分钟聚合」,就得配「聚合粒度=1分钟」。若选「5分钟聚合」却设「阈值持续1分钟」,系统会等满5分钟才判断——等于给故障多盖5分钟被子;
- 跨区域?加维度过滤:一个App Service部署在East US和West US,你想单独监控West US的错误率?必须展开「Dimensions」,勾选「Location = West US」——否则报警一响,你得先打开地图APP确认敌人在哪。
第三步:条件设置——别让阈值变成薛定谔的猫
Azure允许设「静态阈值」或「动态阈值」。静态简单粗暴:CPU > 85%。动态看着高大上,实测在流量波动大的业务上容易误报(比如促销期间自动抬高基线,结果大促结束它还记着峰值,天天喊狼来了)。建议:新业务先用静态+人工校准,跑满两周后,再导出历史数据,用Excel画个趋势图,手动定个「工作日8am-8pm > 75%,其余时段 > 60%」的分时阈值——没错,Azure支持按时间范围设不同条件,就在「Condition」里点「Add condition」。
第四步:动作组——报警不是为了吓人,是为了让人动起来
一个动作组,就是一套「谁、何时、怎么通知」的完整剧本。别只塞邮箱!建议标配三件套:
- 短信+电话(紧急):值班人员手机,且务必测试——某次我填错国家代码+86,结果告警发到了柬埔寨某海鲜市场老板手机上;
- Teams频道(同步):建个#infra-alerts频道,所有报警自动@值班人+抄送oncall轮值表,文字带跳转链接,点一下直达资源页;
- 自动化(救火):接Azure Function或Logic App,比如CPU爆表自动重启实例(谨慎!先加人工确认开关),或调用PowerShell缩容非核心服务保主流程。
重点来了:静默期(Auto resolve & Auto mute)。默认报警触发后,除非指标回落并稳定10分钟,否则反复推送。但实际中,一次故障可能引发连锁反应,5分钟内收到12条同类报警,信息密度≈噪音。解决方案:在动作组里开启「Auto resolve」,并设「Auto mute for 30 minutes」——首次告警响了,接下来半小时同类事件静音,但30分钟后若仍异常,再响。既防刷屏,又防漏检。
第五步:命名与分类——写给未来的你
别起名「Alert-001」或「Prod-CPU-Warn」。好名字是活文档:「[PROD] SQL-OrderDB-CPU-Max-95pct-5min-Teams+SMS」。包含环境、资源、指标、阈值、持续时间、通知方式——下次交接班,新人扫一眼就知道这是干啥的,而不是对着报警记录猜谜语。
最后,几个血泪Tips:
- 测试!测试!测试!:创建后,别光看「Provisioning succeeded」。用「Alerts → Manage alert rules → Test」按钮,模拟触发一次——看短信来没来,Teams消息格式对不对,链接能不能点开;
- Azure 账号安全设置 定期巡检:每月导出「Alert history」,筛出「触发次数Top 10」,问自己:是真故障?还是阈值太敏感?或是监控对象本身该下线了?
- 别忘了活动日志报警:比如「VM被意外删除」「Key Vault密钥被禁用」——这类安全事件,必须用Activity Log报警,指标可不管这些。
写到这儿,窗外天已微亮。我顺手打开Azure Portal,把那个凌晨2:17的报警规则删了,新建了一个:「[PROD] SQL-OrderDB-CPU-Max-82pct-3min-Teams+SMS-AutoMute30m」。保存,测试,喝口温茶。
监控的本质,从来不是制造紧张,而是把不确定性,翻译成可执行的动作。当你不再被报警追着跑,而是主动牵着它走——恭喜,你离「云上从容」,又近了一小步。
(P.S. 如果你试完发现Teams消息里中文乱码……别怀疑人生,那是Webhook URL里少了个「?encoding=utf-8」。这事儿我干过,咖啡泼键盘上了。)

