告警推送的基本原理
告警推送的本质是系统在检测到异常时,主动把消息发送到指定的接收端。比如服务器CPU使用率突然飙到95%,这时候监控工具发现异常,就会触发一条告警信息,推送到你的手机、邮箱或工作群。
常见的推送方式包括邮件、短信、微信公众号、企业微信机器人、钉钉机器人、飞书通知等。选择哪种方式,取决于你用的监控平台和团队协作习惯。
以Prometheus + Alertmanager为例
Prometheus 是常用的监控系统,Alertmanager 负责处理告警。要让告警能推送到钉钉,先在 Alertmanager 配置文件中添加 webhook 配置:
receivers:
- name: 'dingtalk-webhook'
这里的 token 来自你在钉钉群创建的自定义机器人。复制链接后填入即可。注意要开启“安全验证”,否则外人也能发消息到群里。
企业微信告警推送设置
如果你用企业微信,可以在管理后台创建一个应用,获取 agentid 和 secret。然后通过 API 发送消息。例如用 curl 测试:
curl 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET'拿到 access_token 后,再调用消息接口:
curl POST https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN \
-d '{
"toparty": "1",
"msgtype": "text",
"agentid": 100001,
"text": {"content": "服务器磁盘即将写满!"}
}'这个请求会把告警文本发到指定部门。实际部署时可以把这段逻辑封装成脚本,由监控系统调用。
Zabbix如何配置邮件告警
Zabbix 支持通过 SMTP 发送邮件。先进入“管理” → “报警媒介类型”,新建一个 Email 类型,填写邮件服务器地址、端口、用户名和密码。比如使用腾讯企业邮箱:
SMTP服务器:smtp.exmail.qq.com
端口:465
SSL连接:是
用户名:alert@yourcompany.com
密码:授权码(不是登录密码)保存后,在用户个人资料里添加这种媒介,指定接收邮箱。最后在“动作”里创建触发规则,比如当 CPU 负载持续5分钟超过80%时,执行“发送邮件”操作。
避免告警轰炸的小技巧
有一次半夜被连续30条“数据库连接失败”吵醒,结果发现是网络抖动,两分钟后自动恢复。这种无效告警很烦人。可以在 Alertmanager 中设置 group_wait、group_interval 和 repeat_interval,把同一类告警合并发送,避免短时间内刷屏。
比如设置首次延迟30秒发,相同问题每2小时重发一次,就能有效减少打扰。同时加个静默期规则,维护期间自动屏蔽某些告警,省得白忙活。