一、简介
-
在Prometheus中一条告警规则主要由以下几部分组成:
- 告警名称:用户需要为告警规则命名,当然对于命名而言,需要能够直接表达出该告警的主要内容
- 告警规则:告警规则实际上主要由PromQL进行定义,其实际意义是当表达式(PromQL)查询结果持续多长时间(During)后出发告警
- Alertmanager除了提供基本的告警通知能力以外,还主要提供了如:分组、抑制以及静默等告警特性
二、先决条件
- 已经成功部署 prometheus 、mysql_exporter 或 node_exporter 等
三、部署告警
[root@centos ~]# mkdir -p /data/alertmanager/{base,conf,data,software}
[root@centos ~]# cd /data/alertmanager/software
[root@centos software]# wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
[root@centos software]# tar xf alertmanager-0.21.0.linux-amd64.tar.gz -C /data/alertmanager/base
[root@centos software]# mv /data/alertmanager/base/alertmanager-0.21.0.linux-amd64 /data/alertmanager/base/0.21.0
[root@centos software]# mv /data/alertmanager/base/0.21.0/alertmanager.yml /data/alertmanager/conf/alertmanager.yml
- 创建一个 alertmanager.service 管理文件,由 systemd 管理,减少少量运维成本。
[root@centos ~]# vim /etc/systemd/system/alertmanager.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/data/alertmanager/base/0.21.0/alertmanager --config.file=/data/alertmanager/conf/alertmanager.yml --storage.path=/data/alertmanager/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@centos ~]# systemctl start alertmanager.service
[root@centos ~]# systemctl enable alertmanager.service
- Alertmanager 启动后可以通过9093端口访问:http://10.186.60.54:9093/#/alerts
四、关联普罗米修斯
- 添加配置到 prometheus 文件中,关联 Prometheus 与 Alertmanager
- 位置:global 标签的下一个大标签
[root@centos ~]# vim /data/prometheus/conf/prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets: ['10.186.60.54:9093']
- 检查 prometheus 是否成功加载 alertmanager 告警关联配置:http://10.186.60.54:9090/config
五、普罗米修斯告警
- 位置:alerting 标签的下一个大标签
[root@centos ~]# mkdir /data/prometheus/conf/rules
[root@centos ~]# vim /data/prometheus/conf/prometheus.yml
rule_files:
- '/data/prometheus/conf/rules/*.yml'
- 配置内存使用超越 30% 就告警
[root@centos ~]# vim /data/prometheus/conf/rules/node.yml
groups:
- name: "test"
rules:
- alert: 内存使用率过高
expr: 100-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100 > 30
for: 1m # 告警持续时间,超过这个时间才会发送给alertmanager
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} 内存使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}内存使用率超过30%,当前使用率[{{ $value }}]."
# 校验告警配置文件是否存在错误
[root@centos ~]# /data/prometheus/base/2.19.2/promtool check rules /data/prometheus/conf/rules/node.yml
Checking /data/prometheus/conf/rules/node.yml
SUCCESS: 1 rules found
- 内存使用量的确超越 30% 后,prometheus 会进行告警,当超越设置的 1m 时间后还未处理,就会通知到 Alertmanager 进行告警发送。
- Alertmanager 接收到的告警信息( 通过 amtool 命令也可以查看告警信息 )
[root@centos ~]# /data/alertmanager/base/0.21.0/amtool alert --alertmanager.url=http://10.186.60.54:9093
Alertname Starts At Summary
内存使用率过高 2020-08-30 06:33:13 UTC Instance centos 内存使用率过高
六、配置腾讯邮箱告警
[root@centos ~]# vim /data/alertmanager/conf/alertmanager.yml
global:
resolve_timeout: 5m
smtp_from: '885097398@qq.com'
smtp_smarthost: 'smtp.qq.com:465'
smtp_auth_username: '885097398@qq.com'
smtp_auth_password: 'tuumffkbngwnbedh'
smtp_require_tls: false
smtp_hello: 'qq.com'
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: "885097398@qq.com"
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']