prometheus告警配置
prometheus告警配置
prometheus告警流程示意图
相关文件
prometheus.yml
文件中有如下配置
rule_files:
- /etc/config/recording_rules.yml
- /etc/config/alerting_rules.yml
- /etc/config/rules
- /etc/config/alerts
文件 | 说明 |
---|---|
/etc/config/recording_rules.yml | 定义预先计算常用的或计算密集型的 PromQL 表达式,并将结果存储为新的时间序列,目的是提高查询性能并简化复杂查询的使用 |
/etc/config/alerting_rules.yml | 告警规则文件,定义触发告警的条件 |
/etc/config/rules | 将被删除,可查看 官方文档说明 |
/etc/config/alerts | 将被删除,可查看 官方文档说明 |
配置prometheus告警规则
在 alerting_rules.yml
文件中新增告警规则
说明
在prometheus pod的yaml文件中,/etc/config
目录是以名为 prometheus-server
的configmap挂载的
spec
......
volumeMounts:
- mountPath: /etc/config
name: config-volume
readOnly: true
......
volumes:
- configMap:
defaultMode: 420 # 表示文件权限为 rw-r-----
name: prometheus-server
name: config-volume
因此需要编辑 cm prometheus-server
的 data
字段下的 alerting_rules.yml
groups:
- name: node-memory-alerts
rules:
- alert: 内存使用率过高
expr: avg by (node, instance) (100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))) > 80
for: 2m
labels:
severity: warning
annotations:
summary: "节点 {{ $labels.node }} 内存使用率过高"
description: "节点 {{ $labels.node }}(实例 {{ $labels.instance | reReplaceAll \":.*\" \"\" }})的内存使用率当前为 {{ printf \"%.2f\" $value }}%,已超过 20%,持续时间超过 2 分钟。"
编辑完成后查看
$ kubectl get cm prometheus-server -o yaml
apiVersion: v1
data:
alerting_rules.yml: |
groups:
- name: node-memory-alerts
rules:
- alert: 内存使用率过高
expr: avg by (node, instance) (100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))) > 80
for: 2m
labels:
severity: warning
annotations:
summary: "节点 {{ $labels.node }} 内存使用率过高"
description: "节点 {{ $labels.node }}(实例 {{ $labels.instance | reReplaceAll \":.*\" \"\" }})的内存使用率当前为 {{ printf \"%.2f\" $value }}%,已超过 20%,持续时间超过 2 分钟。"
......
字段说明
字段 | 说明 |
---|---|
groups | 告警规则组的列表 |
name | 规则组的名称,此处为 node-memory-alerts |
rules | 具体的告警规则列表 |
alert | 告警名称,此处为
|