一、安装配置alertmanager
alertmanagerDownload
#解压
tar xf alertmanager-0.26.0.linux-amd64.tar.gz ; mv alertmanager-0.26.0.linux-amd64/ alertmanager/
#修改配置文件alertmanager.yml
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receivers:
- name: 'mail163'
email_configs:
##收件人163邮箱,需更改为实际
- to: 'example@163.com'
##邮件通知中的发件人,可改成 webapp1! 但from必须与auth_username:匹配
from: 'alertmanager@example.com'
###这里是163邮箱的stmp服务地址,需要配置正确,否则alertmanager无法连接stmp服务,由smtp服务将邮件推送给收件人!!!
smarthost: 'smtp.163.com:25'
##邮件发件人账号!
auth_username: 'alertmanager@example.com'
##注意这里是网易邮箱SMTP服务第三方登录邮箱授权码!!
auth_password: 'XXXXXXXX'
#wq
#systemd管理
vim /etc/systemd/system/alertmanager.service
...
#wq
systemctl daemon-reload ; systemctl enable alertmanager --now
二、prometheus打开alertmanager配置并指定alertmanager告警规则文件
#规则文件统一托管
mkdir -p /usr/local/prometheus/rules
##改prometheus配置
...
alerting:
alertmanagers:
- static_configs:
- targets:
- '192.168.8.130:9093'
...
rule_files:
- "/usr/local/prometheus/rules/*.yml"
#wq
#重启
systemctl restart prometheus
三、二中告警规则文件示例
cd /usr/local/prometheus/rules
vim node-alerts.yml
groups:
- name: 实例存活告警规则
rules:
- alert: 实例存活告警 # 告警规则的名称(alertname)
expr: up == 0 # expr 是计算公式,up指标可以获取到当前所有运行的Exporter实例以及其状态,即告警阈值为up==0
for: 30s # 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: 内存告警规则
rules:
- alert: "内存使用率告警"
expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 75 # 告警阈值为当内存使用率大于75%
for: 30s
labels:
severity: warning
annotations:
summary: "服务器内存报警"
description: "内存资源利用率大于75%!(当前值: {{ $value }}%)"
- name: 磁盘报警规则
rules:
- alert: 磁盘使用率告警
expr: (node_filesystem_size_bytes - node_filesystem_avail_bytes) / node_filesystem_size_bytes * 100 > 80 # 告警阈值为某个挂载点使用大于80%
for: 1m
labels:
severity: warning
annotations:
summary: "服务器 磁盘报警"
description: "服务器磁盘设备使用超过80%!(挂载点: {{ $labels.mountpoint }} 当前值: {{ $value }}%)"
#wq
systemctl restart prometheus
四、测试达到告警文件条件,是否触发邮件告警