1.1 ) 保证系统安装了 sendmail:
1.1.1 ) yum install sendmail -y
1.1.2 ) echo 'test' | mail -s '主题' XXXX@qq.com
1.2 ) 下载altermanager:
cd /data/src
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar zxf alertmanager-0.21.0.linux-amd64.tar.gz
mv alertmanager-0.21.0.linux-amd64 /data/soft/
cd /data/soft/
ln -sv alertmanager-0.21.0.linux-amd64 alertmanager
1.3 ) 编辑alertmanager.yml 文件:
vim alertmanager.yml
global:
resolve_timeout: 5m #当告警的状态有firing变为resolve的以后还要呆多长时间,才宣布告警解除。这个主要是解决某些监控指标在阀值边缘上波动,一会儿好一会儿不好
smtp_smarthost: 'smtp.163.com:25' # smtp 服务器地址
smtp_from: 'monitor@163.com' # 发送的邮件来自于哪个邮箱
smtp_auth_username: 'monitor@163.com' # 发送邮件的邮箱用户名
smtp_auth_password: 'WJBELNWNasdfasdfasdfasd' # 发送邮件的邮箱密码(安全码)
smtp_require_tls: false # 是否使用tls加密
route: # route用来设置报警的分发策略
group_by: ['alertname'] # 采用哪个标签来作为分组依据
group_wait: 10s # 组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出
group_interval: 10s # 两组告警的间隔时间,同一组的多批次告警间隔多少秒后,才能发出
repeat_interval: 20m # 重复告警的间隔时间,减少相同邮件的发送频率
receiver: 'default-receiver' # 设置默认接收人
routes: # 可以指定哪些组接手哪些消息
- receiver: 'default-receiver'
continue: true
group_wait: 10s
receivers:
- name: 'default-receiver'
email_configs:
- to: '57674891@qq.com'
# group_by: ['alertname'] # 以标签作为分组依据
# group_wait: 10s # 分组报警等待时间
# group_interval: 10s # 发送组告警间隔时间
# repeat_interval: 1h # 重复告警发送间隔时间
inhibit_rules: # 这个叫做抑制项,通过匹配源告警来抑制目的告警。比如说当我们的主机挂了,可能引起主机上的服务,数据库,中间件等一些告警,假如说后续的这些告警相对来说没有意义,我们可以用抑制项这个功能,让PrometheUS只发出主机挂了的告警。
- source_match: # 当此告警发生,其他的告警被抑制
severity: 'critical'
target_match: # 被抑制的对象
severity: 'warning'
equal: ['id', 'instance']
1.3.2 ) 测试规则:
./amtool check-config alertmanager.yml
1.4 ) 启动altermanager:
./alertmanager --config.file='alertmanager.yml'
配置Prometheus:
cd /data/soft/prometheus
vim prometheus.yaml
......
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093 # 默认配置(可以注释)
- 127.0.0.1:9093 # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口
rule_files:
- "nginx.*.rule"
- "rules/*.yml" # 把报警规则文件include进来.
保存退出
######################################################
mkdir -p rules
vim 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}}内存使用率超过80%,当前使用率[{{ $value }}]."
- alert: cpu使用率过高
expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 0
for: 1m
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} cpu使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}cpu使用率超过80%,当前使用率[{{ $value }}]."
# 尽可能把详细告警信息写入summary标签值,因为告警短信/邮件/钉钉发送的内容使用了summary标签中的值。
# Prometheus 测试规则:
./promtool check rules rules/node.yml
[root@bj-check prometheus]# ./promtool check rules rules/node.yml
Checking rules/node.yml
SUCCESS: 2 rules found
# altermanager 测试规则:
./amtool alert --alertmanager.url=http://localhost:9093
[root@bj-check prometheus]# /data/soft/alertmanager/amtool alert --alertmanager.url=http://localhost:9093
Alertname Starts At Summary
内存使用率过高 2021-02-09 10:55:28 UTC Instance 192.168.26.196:9100 内存使用率过高
cpu使用率过高 2021-02-09 10:55:58 UTC Instance 192.168.31.21:9100 cpu使用率过高
# 重启prometheus:
nohup /data/soft/prometheus/prometheus --config.file=/data/soft/prometheus/prometheus.yml &
AlterManager 启动脚本
vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=Prometheus Alertmanager.
Documentation=https://github.com/prometheus/alertmanager
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/data/soft/alertmanager/alertmanager
--config.file=/data/soft/alertmanager/alertmanager.yml
--storage.path=/data/soft/alertmanager/data
--data.retention=120h
--web.external-url "http://106.75.0.0:9093"
--web.listen-address ":9093"
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target
#############################################################
/data/soft/alertmanager/alertmanager # alertmanager 可执行文件
--config.file=/data/soft/alertmanager/alertmanager.yml # alertmanager 配置文件
--storage.path=/data/soft/alertmanager/alertmanager/data # alertmanager 数据存储文件
--data.retention=120h # 历史数据最大保留时间,默认120小时
--web.listen-address="0.0.0.0:9093" # 访问alertmanager web界面的地址.
--web.external-url="http://0.0.0.0:9093" # 这个很重要,下面解释.
** 很重要 **
--web.external-url=http://{IP 或者 域名}:9093 # 被外部访问的地址,IP是本机地址或者域名。
生成返回Alertmanager的相对和绝对连接地址,可以在后续告警通知信息中直接点击连接地址访问alertmanager Web UI其格式为http://{ip或者域名}:9093
该选项一定要加,prometheus发送告警邮件的时候会引用这个地址,如果不加,默认是机器名.
--web.external-url=http://{IP 或者 域名}:9090 # Prometheus 报警后邮件内部source连接被外部访问的地址,IP是本机地址或者域名。
## 集群参数:
--cluster.listen-address=10.41.91.91:9094 # 本机被集群监听的地址
--cluster.peer=10.41.91.91:9094 # 本机监听其他集群的地址
--cluster.peer=10.210.149.26:9094
--cluster.peer=10.210.149.27:9094'
## 启动AlertManager:
systemctl daemon-reload
systemctl enable alertmanager.service
systemctl start alertmanager.service
systemctl status alertmanager.service