Co-authored-by: xiuting.xu <xiutingxt.xu@gmail.com> Reviewed-on: #21 Reviewed-by: huhy <husteryezi@163.com> Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn> Reviewed-by: yuyr <yuyr@zgclab.edu.cn>
60 lines
2.1 KiB
Markdown
60 lines
2.1 KiB
Markdown
# 告警配置
|
||
|
||
> 参考:[自定义Prometheus告警规则](https://yunlzheng.gitbook.io/prometheus-book/parti-prometheus-ji-chu/alert/prometheus-alert-rule)
|
||
|
||
在Prometheus中配置告警的有两个步骤:
|
||
|
||
1. 写告警规则文件(rules文件)
|
||
2. 在promethues.yml里加载规则,并配置Alertmanager
|
||
|
||
## 1. 编写告警规则文件
|
||
告警规则如下:
|
||
```yml
|
||
groups:
|
||
- name: example-rules
|
||
interval: 30s # 每30秒评估一次
|
||
rules:
|
||
- alert: InstanceDown
|
||
expr: up == 0
|
||
for: 1m
|
||
labels:
|
||
severity: critical
|
||
annotations:
|
||
summary: "实例 {{ $labels.instance }} 已宕机"
|
||
description: "{{ $labels.instance }} 在 {{ $labels.job }} 中无响应超过 1 分钟。"
|
||
|
||
- alert: HighCpuUsage
|
||
expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
|
||
for: 5m
|
||
labels:
|
||
severity: warning
|
||
annotations:
|
||
summary: "CPU 使用率过高"
|
||
description: "实例 {{ $labels.instance }} CPU 使用率超过 80% 持续 5 分钟。"
|
||
```
|
||
|
||
其中:
|
||
|
||
- `alert`:告警规则的名称。
|
||
- `expr`:基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
|
||
- `for`:评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警。在等待期间新产生告警的状态为pending。
|
||
- `labels`:自定义标签,允许用户指定要附加到告警上的一组附加标签,可以在Alertmanager中做路由和分组。
|
||
- `annotations`:用于指定一组附加信息,比如用于描述告警详细信息的文字等,annotations的内容在告警产生时会一同作为参数发送到Alertmanager。可以提供告警摘要和详细信息。
|
||
|
||
## 2. promothues.yml里引用
|
||
在prometheus.yml中加上`rule_files`和`alerting`:
|
||
|
||
```yml
|
||
global:
|
||
[ evaluation_interval: <duration> | default = 1m ]
|
||
|
||
rule_files:
|
||
[ - <filepath_glob> ... ]
|
||
|
||
alerting:
|
||
alertmanagers:
|
||
- static_configs:
|
||
- targets:
|
||
- "localhost:9093" # Alertmanager 地址
|
||
|
||
``` |