Prometheus + Grafana + Alertmanager体系下新增监控指标并实现展示告警

这是一个非常实用的需求。下面我会用一个“新增监控指标并实现展示告警”的全过程为例,详细说明一个现代化监控平台的底层链路,包括:

采集 ➜ 存储 ➜ 展示 ➜ 告警 ➜ 问题定位

我将以 Prometheus + Grafana + Alertmanager 的体系为例,并结合企业常见的微服务或数据库平台(如 Kafka/MongoDB/MySQL)进行说明,结构如下:


✅ 一、链路总览

[被监控服务]
    │
    └─ Exporter(暴露指标)
          ↓
    Prometheus(拉取采集)
          ↓
    时序数据库(TSDB)
          ↓
    Grafana(查询展示)
          ↓
    Alertmanager(告警)

🧪 二、客户新增一个监控指标的场景示例

假设客户想新增一个指标:MongoDB 当前活跃连接数 mongodb_connections{state="active"}


步骤 1:数据源暴露指标

  • 组件:MongoDB Exporter(或自研 exporter)

  • 操作:

    • Exporter 在 /metrics 暴露 Prometheus 格式的指标,如:

      mongodb_connections{state="active"}  135
      mongodb_connections{state="idle"}     22
      
    • 可通过访问 http://<exporter-host>:9216/metrics 查看

关键点:

  • 若指标未预置在 exporter 中,需要开发插件或修改 exporter 逻辑采集该指标。

步骤 2:Prometheus 采集指标

  • 组件:Prometheus Server

  • 配置:

    scrape_configs:
      - job_name: 'mongodb'
        static_configs:
          - targets: ['10.0.0.1:9216']  # exporter 地址
    
  • 执行流程:

    • Prometheus 每隔 N 秒(默认15s)通过 HTTP 拉取一次 /metrics
    • mongodb_connections{} 指标及其标签、值写入 TSDB

关键点:

  • 采集不到?检查:

    • Exporter 是否暴露正确
    • Prometheus 配置是否 reload 生效
    • Label 是否和预期一致(state=“active”)

步骤 3:Grafana 展示指标

  • 组件:Grafana

  • 操作:

    • 在 Grafana 创建 dashboard 面板,PromQL 查询示例:

      mongodb_connections{state="active"}
      
    • 设置时间区间和刷新频率,生成图表

关键点:

  • 查询返回为空 → 多数为 label 错误或数据未被采集

步骤 4:定义告警规则

  • 组件:Prometheus Alerting Rules

  • 配置(如:活跃连接数超 300 告警):

    groups:
      - name: mongodb.rules
        rules:
          - alert: HighMongoConnections
            expr: mongodb_connections{state="active"} > 300
            for: 1m
            labels:
              severity: critical
            annotations:
              summary: "MongoDB 活跃连接数过高"
              description: "当前连接数为 {{ $value }}, 超出阈值 300"
    

关键点:

  • for: 1m 表示超过 1 分钟才触发告警(避免波动)

步骤 5:Alertmanager 处理告警

  • 组件:Alertmanager

  • 行为:

    • 接收来自 Prometheus 的告警

    • 根据路由规则发送到:

      • 企业微信
      • 邮件
      • webhook(可接入飞书、钉钉、PagerDuty)
  • 示例通知消息:

    [CRITICAL] MongoDB 活跃连接数过高
    当前连接数为 350,超过阈值 300,实例:10.0.0.1
    

关键点:

  • 通知不触发 → 检查 Alertmanager 是否接收到、路由规则是否匹配

步骤 6:问题定位辅助功能

一旦告警触发,你可以通过 Grafana 查询历史曲线、关联其他指标进行根因分析:

  • 当前连接数 vs CPU、内存曲线

  • 当前连接数 vs 请求速率

  • 聚合查询:

    sum by (instance) (mongodb_connections{state="active"})
    

🧠 三、整个链路核心组件定位说明

环节问题排查关键点
Exporter是否监听了指定端口?是否暴露了你关心的指标?
Prometheus配置是否生效?target 状态是 up 吗?是否成功拉取?
TSDB 存储是否写入数据?数据有没有 retention 丢失?
Grafana查询语句是否正确?dashboard 是否引用正确数据源?
Alertmanager是否接到告警?路由规则是否匹配?通知模板是否生效?

✅ 四、参考补充


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值