文章目录
前言
Grafana 是一款强大的开源监控和数据可视化工具,广泛应用于 IT 基础设施的监控和性能分析。它支持多种数据源,如 Prometheus、MySQL、Elasticsearch 等,能够将繁杂的数据转换为易于理解的图表、曲线图和统计面板。结合 Prometheus 监控体系,我们将在 Grafana 中构建一个全面的系统健康状态监控看板,涵盖任务状态、硬件健康、资源使用等关键指标,并配置实时告警与企业微信通知功能,帮助运维团队及时应对潜在问题。
部署 Grafana 和连接 Prometheus 数据源
简单部署 Grafana
-
下载与安装:根据操作系统选择适合的安装方式(例如,Linux 下通过
apt
或yum
安装,或者 Docker 中使用 Grafana 镜像)。# 使用 Docker 安装 Grafana docker run -d --name=grafana -p 3000:3000 grafana/grafana
-
初次登录:启动后,打开
http://localhost:3000
,默认用户名和密码均为admin
。登录后可以根据需求修改密码。 -
添加数据源 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)
-
表格图:
视图
里边,右上角选择Table
类型。
-
配置查询(Query):
- 输入 Prometheus 查询公式(上面查询公式)。例如,监控 CPU 使用率的公式为:
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
- Grafana 会生成一条显示 CPU 使用率的表格。
- 输入 Prometheus 查询公式(上面查询公式)。例如,监控 CPU 使用率的公式为:
-
监控信息调整:
- 加入监控信息后会发现,生成的默认表格只有两列,左侧是时间,右侧是返回值,那我们就要把有用的信息提取出来。
- 在 Query > Options > Format 选择
Table
,Type 选择Instant
,这样发现除时间、返回值以外的,什么 instance、job、hostname 等等全都出来了,和Pormetheus
在网页上返回的信息一致。 - 这时要将不要的列去掉,在 Transform > Add transformation 添加
Organize fieIds
,将不要的列叉掉,将要的列Rename
改名,方便查阅。 - 同时
Transform
还支持多项调整,比如:Filter data by values
支持根据属性值调整返回信息,Add fieId from calculation
支持通过不同列的值计算得出新列等。
-
监控设备命名:
- 若是通过大量 IP 监控设备,在视图上无法快速确认该 IP 是什么设备,所以一般会将 IP 命名为指定设备。
- 右侧点击 Add fieId override > FieIds with name ,并选择那一列的值需要改名,点击 Edit value mappings 根据返回 IP 值修改监控设备名称。
-
表格样式调整:
- 右侧
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 text
,Add fieId property > Thresholds 配置相应的阈值和颜色。例如,设定低于 80% 为绿色(健康),80-90% 为黄色(警告),超过 90% 为红色(严重)。
- 右侧
-
其他:
- 配置错误可以对该
视图
点击右上角Edit
重新修改并保存。
- 配置错误可以对该
配置告警规则与通知
1. Prometheus 中的告警规则
在 Prometheus 中定义告警规则,可以使监控更加灵活并减轻 Grafana 的负担。我们可以先在 Prometheus 中写好规则,再通过 Grafana 来显示和推送告警。
-
编写 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 }}%)"
-
在 Grafana 中应用告警:
- 将 Prometheus 中的告警规则显示在 Grafana,看板中的折线图或表格图可以自动引用这些告警。
2. Grafana 告警配置(常用)
- 设置告警规则:
- 选择图表中的 Alert > Create Alert。
- 配置告警规则的触发条件(根据
Prometheus
公式配置报警规则)。例如,当 CPU 使用率超过 90% 持续 1 分钟,触发告警。 - 添加通知渠道(Notification channel),如企业微信。
3. 企业微信通知推送
企业微信支持 API 方式接收告警信息,需先在企业微信后台创建应用,并获取企业 ID、应用 ID、应用 Secret。
-
配置企业微信推送 API:
- 企业微信后台创建应用,记录
CorpID
(企业ID)、AgentID
(应用ID)、Secret
(应用Secret)。 - 配置 Grafana 中的 Notification Channel,使用企业微信 Webhook API(配置
Integration
类型选择WeCom
)。
- 企业微信后台创建应用,记录
-
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 及其相关篇章有: