Bootstrap

深入 Prometheus 监控生态 - 第六篇:与 Grafana 实现系统全面监控(健康状态和任务状态看板)


前言

Grafana 是一款强大的开源监控和数据可视化工具,广泛应用于 IT 基础设施的监控和性能分析。它支持多种数据源,如 Prometheus、MySQL、Elasticsearch 等,能够将繁杂的数据转换为易于理解的图表、曲线图和统计面板。结合 Prometheus 监控体系,我们将在 Grafana 中构建一个全面的系统健康状态监控看板,涵盖任务状态、硬件健康、资源使用等关键指标,并配置实时告警与企业微信通知功能,帮助运维团队及时应对潜在问题。


部署 Grafana 和连接 Prometheus 数据源

简单部署 Grafana

  1. 下载与安装:根据操作系统选择适合的安装方式(例如,Linux 下通过 aptyum 安装,或者 Docker 中使用 Grafana 镜像)。

    # 使用 Docker 安装 Grafana
    docker run -d --name=grafana -p 3000:3000 grafana/grafana
    
  2. 初次登录:启动后,打开 http://localhost:3000,默认用户名和密码均为 admin。登录后可以根据需求修改密码。

  3. 添加数据源 Prometheus

    • 在 Grafana 主页面,进入 Configuration > Data Sources,点击 Add data source
    • 选择 Prometheus 作为数据源,配置 Prometheus 服务器的地址(通常为 http://<Prometheus_IP>:9090),点击 Save & Test 确认连接成功。

构建系统监控看板

1. 监控信息查看

Prometheus 提供了众多监控指标(metrics),例如任务状态、CPU、内存、磁盘等资源使用情况。通常硬件健康和任务状态可以通过安装的 node_exporter 或其他特定的 exporter 监控。例如,基于 IPMI 协议的监控常用于硬件健康状态,返回的值通常为 1 表示健康、0 表示不健康(具体可根据设备官方相应文档或浏览器访问该 exporter 页面,一般都会有参数说明)。

  • 在监控设备 exporter 页面(通常),查看返回参数信息。
  • Prometheus 首页,点击 Graph ,输入参数可查看返回状态信息。并且可在此页面编写 Prometheus 公式,公式可应用于 Grafana看板警告

2. 看板制作(表格图)

为了直观地展示系统运行状态,Grafana 提供监控数据可视化展示,即看板,但需由用户制作。下面具体说说看板内表格图的详细的配置步骤。

首先在 Dashboards > New Dashboard 新建一个看板,并在看板里面 Add > Visualization 添加一个视图

配置表格图(Line Chart)

  1. 表格图

    • 视图里边,右上角选择 Table 类型。
  2. 配置查询(Query)

    • 输入 Prometheus 查询公式(上面查询公式)。例如,监控 CPU 使用率的公式为:
      100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
      
    • Grafana 会生成一条显示 CPU 使用率的表格。
  3. 监控信息调整

    • 加入监控信息后会发现,生成的默认表格只有两列,左侧是时间,右侧是返回值,那我们就要把有用的信息提取出来。
    • Query > Options > Format 选择 TableType 选择 Instant ,这样发现除时间、返回值以外的,什么 instance、job、hostname 等等全都出来了,和 Pormetheus 在网页上返回的信息一致。
    • 这时要将不要的列去掉,在 Transform > Add transformation 添加 Organize fieIds,将不要的列叉掉,将要的列 Rename 改名,方便查阅。
    • 同时 Transform 还支持多项调整,比如:Filter data by values 支持根据属性值调整返回信息,Add fieId from calculation 支持通过不同列的值计算得出新列等。
  4. 监控设备命名

    • 若是通过大量 IP 监控设备,在视图上无法快速确认该 IP 是什么设备,所以一般会将 IP 命名为指定设备。
    • 右侧点击 Add fieId override > FieIds with name ,并选择那一列的值需要改名,点击 Edit value mappings 根据返回 IP 值修改监控设备名称。
  5. 表格样式调整

    • 右侧 Override x 就是用于调整所选列的样式,如:Column width 就是列宽,Threshold 就是配置相应的阈值和颜色。
    • 可通过 Add fieId override > FieIds with name 新建,再 Add fieId property > Column width 追加属性即可。
    • Override x 基础上,Add fieId property > ‘Cell options > Cell type’ 选择 Colored textAdd fieId property > Thresholds 配置相应的阈值和颜色。例如,设定低于 80% 为绿色(健康),80-90% 为黄色(警告),超过 90% 为红色(严重)。
  6. 其他

    • 配置错误可以对该 视图 点击右上角 Edit 重新修改并保存。

配置告警规则与通知

1. Prometheus 中的告警规则

在 Prometheus 中定义告警规则,可以使监控更加灵活并减轻 Grafana 的负担。我们可以先在 Prometheus 中写好规则,再通过 Grafana 来显示和推送告警。

  1. 编写 Prometheus 告警规则

    • 在 Prometheus 配置文件中添加规则文件路径。
    • 例如,监控 CPU 使用率高于 90% 时触发告警:
      groups:
      - name: CPU Alert
        rules:
        - alert: HighCPUUsage
          expr: (100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)) > 90
          for: 1m
          labels:
            severity: critical
          annotations:
            summary: "Instance {{ $labels.instance }} CPU usage high"
            description: "CPU usage is above 90% (current value: {{ $value }}%)"
      
  2. 在 Grafana 中应用告警

    • 将 Prometheus 中的告警规则显示在 Grafana,看板中的折线图或表格图可以自动引用这些告警。

2. Grafana 告警配置(常用)

  1. 设置告警规则
    • 选择图表中的 Alert > Create Alert
    • 配置告警规则的触发条件(根据 Prometheus 公式配置报警规则)。例如,当 CPU 使用率超过 90% 持续 1 分钟,触发告警。
    • 添加通知渠道(Notification channel),如企业微信。

3. 企业微信通知推送

企业微信支持 API 方式接收告警信息,需先在企业微信后台创建应用,并获取企业 ID、应用 ID、应用 Secret。

  1. 配置企业微信推送 API

    • 企业微信后台创建应用,记录 CorpID(企业ID)、AgentID(应用ID)、Secret(应用Secret)。
    • 配置 Grafana 中的 Notification Channel,使用企业微信 Webhook API(配置 Integration 类型选择 WeCom)。
  2. API 推送设置

    • 在 Grafana 中,进入 Configuration > Notification channels,选择 Webhook 作为通知方式。

    • Webhook URL 格式示例:

      https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
      
    • 配置示例代码:

      {
        "msgtype": "text",
        "text": {
          "content": "告警通知:{{ .Labels.alertname }} - {{ .Annotations.description }}"
        },
        "touser": "@all",
        "agentid": "<AgentID>"
      }
      
    • 替换相应的参数并测试通知是否可行。通过此配置,当告警触发时,企业微信将自动收到通知。


总结

通过 Grafana 和 Prometheus 的结合,运维团队可以创建高度可视化和动态的监控看板,并在关键指标异常时自动告警。合理设置折线图、表格图的动态变色和告警通知,有助于快速定位并处理系统问题,实现了实时、便捷、智能的 IT 监控管理。

目前,已更新的 Prometheus 及其相关篇章有:

;