# 告警配置 > 参考:[自定义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: | default = 1m ] rule_files: [ - ... ] alerting: alertmanagers: - static_configs: - targets: - "localhost:9093" # Alertmanager 地址 ```