1. 监控告警系统升级背景去年我们团队遇到一个棘手问题某次凌晨3点的核心服务宕机直到早上9点上班才发现直接导致6小时业务中断。事后复盘发现传统的邮件短信告警存在明显缺陷——邮件容易被忽略短信成本高且容易被当成垃圾信息。这促使我们开始寻找更高效的监控告警方案。经过多方对比测试最终选择了Prometheus飞书机器人的组合。这套系统运行一年来累计处理告警事件2371次平均响应时间从原来的47分钟缩短到2.3分钟年节省运维成本约2万美元。下面分享具体实现方案和踩坑经验。2. 技术架构设计解析2.1 核心组件选型Prometheus作为监控系统核心主要考虑以下优势多维数据模型metric名称键值对强大的PromQL查询语言不依赖分布式存储单个节点自治通过HTTP拉取pull模式采集数据支持服务发现和动态配置飞书机器人作为告警接收端相比传统方式有三大突破消息必达强提醒功能确保不被遗漏交互闭环直接在消息中处理告警成本优势相比短信费用几乎为零2.2 系统架构图--------------------- | 应用系统 | -------------------- | ------------- -------------v---------- ------------------- | Prometheus -------- Service Discovery | | Alertmanager | ------------ ------------------------ ------------------ | | | | ------v------ ------v--------- | TSDB | | 飞书Webhook | ------------- ----------------3. 关键实现步骤3.1 Prometheus基础配置首先配置监控目标建议采用文件服务发现方式# prometheus.yml scrape_configs: - job_name: node_exporter file_sd_configs: - files: [/etc/prometheus/targets/*.json]对应的targets文件示例[ { targets: [10.0.0.1:9100], labels: { env: prod, app: payment-service } } ]重要提示label设计要遵循业务线-环境-服务三级结构这对后续告警路由至关重要3.2 告警规则配置根据业务特点我们制定了分级告警策略groups: - name: critical-alerts rules: - alert: HighErrorRate expr: rate(http_requests_total{status~5..}[5m]) 0.1 for: 2m labels: severity: critical annotations: summary: High error rate on {{ $labels.instance }} description: Error rate is {{ $value }} - name: warning-alerts rules: - alert: MemoryHigh expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes 0.8 for: 10m labels: severity: warning3.3 飞书机器人对接创建自定义机器人后配置Alertmanagerroute: receiver: feishu-webhook group_by: [alertname] group_wait: 10s group_interval: 5m receivers: - name: feishu-webhook webhook_configs: - url: https://open.feishu.cn/open-apis/bot/v2/hook/your-token send_resolved: true4. 告警闭环设计4.1 消息卡片模板我们开发了交互式消息卡片包含当前告警状态颜色标识影响范围说明最近1小时指标趋势图处理按钮已解决/误报/转派{ msg_type: interactive, card: { elements: [{ tag: div, text: { content: **告警名称**: {{.CommonLabels.alertname}}, tag: lark_md } }], header: { title: { content: [{{.Status}}] 生产告警通知, tag: plain_text } } } }4.2 处理状态同步通过飞书开放API实现状态回写def handle_alert_action(action): if action resolve: requests.post(alertmanager_api, json{ status: resolved, fingerprint: alert_fp }) elif action false_positive: store_in_suppression_db(alert_fp)5. 成本优化实践5.1 消息频率控制通过以下策略降低消息风暴风险告警分组group_by抑制规则inhibit_rules静默配置silenceinhibit_rules: - source_match: severity: critical target_match: severity: warning equal: [alertname]5.2 资源消耗对比方案类型年成本平均响应时间处理闭环率传统短信$24,00047分钟62%飞书机器人$1202.3分钟93%商业监控平台$18,0005.1分钟88%6. 典型问题排查6.1 消息延迟问题曾遇到飞书消息延迟达15分钟的情况排查发现Alertmanager默认resend_interval1h飞书API限流100次/分钟解决方案route: repeat_interval: 5m group_interval: 1m6.2 指标断点问题当Prometheus抓取目标失败时建议配置告警- alert: ScrapeFailed expr: up 0 for: 1m labels: severity: critical7. 运维经验总结标签设计规范每个服务必须有env/app/instance标签避免使用特殊字符如. /告警分级策略Critical影响核心业务流程Warning需要关注但可延迟处理Info仅记录无需立即响应飞书消息优化使用Markdown格式提升可读性关键指标附加趋势图添加直接跳转Grafana的链接这套系统稳定运行后我们的运维效率提升了6倍。最大的收获是建立了完整的监控-告警-处理-复盘闭环现在任何异常都能在5分钟内响应。对于中小团队这套方案既能保证效果又极大降低了成本。
阅读完成 · 觉得有帮助?