一、修改配置文件
在promethus安装目录下创建文件夹rules,在rules目录下创建文件host.rules
vim host.rules
输入如下内容:
groups:
- name: 实例存活告警规则
rules:
- alert: 实例存活告警 # 告警规则的名称(alertname)
expr: up == 0 # expr 是计算公式,up指标可以获取到当前所有运行的Exporter实例以及其状态,即告警阈值为up==0
for: 1m # for语句会使 Prometheus 服务等待指定的时间, 然后执行查询表达式。(for 表示告警持续的时长,若持续时长小于该时间就不发给alertmanager了,大于该时间再发。for的值不要小于prometheus中的scrape_interval,例如scrape_interval为30s,for为15s,如果触发告警规则,则再经过for时长后也一定会告警,这是因为最新的>度量指标还没有拉取,在15s时仍会用原来值进行计算。另外,要注意的是只有在第一次触发告警时才会等待(for)时长。)
labels: # labels语句允许指定额外的标签列表,把它们附加在告警上。
severity: Disaster
annotations: # annotations语句指定了另一组标签,它们不被当做告警实例的身份标识,它们经常用于存储一些额外的信息,用于报警信息的展示之类的。
summary: "节点失联"
description: "节点断联已超过1分钟!"
- name: process_rule1
rules:
- alert: cpu usage
expr: 100*(1-sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)/sum(increase(node_cpu_seconds_total[1m])) by (instance)) < 97
for: 30s
labels:
severity: low
annotations:
summary: "{{ $labels.instance }}: 1分钟内CPU使用率低于97%"
value: "{{ $labels.instance }}: CPU usage is {{$value}}, below 97%"
二、重启服务即可。
systemctl daemon-reload
systemctl restart prometheus
systemctl status prometheus
三、节点必须部署node-exporter。
mkdir /usr/local/node_exporter
cp node_exporter /usr/local/node_exporter
vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/node_exporter
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter