一、前言
承接上篇文章 Centos7下安装 prometheus+grafana,我们已然对服务器进行了监控,但是只监控不进行报警的监控无疑是用处不大的,今天我们学习部署一下 alertmanager
配置企业微信报警。
二、准备工作
1、安装 alertmanager
1、以下步骤都在 /opt/
目录下执行
1、wget https://github.com/prometheus/alertmanager/releases/download/v0.22.0-rc.2/alertmanager-0.22.0-rc.2.linux-amd64.tar.gz
2、tar -xf alertmanager-0.22.0-rc.2.linux-amd64.tar.gz
3、mv alertmanager-0.22.0-rc.2.linux-amd64 alertmanager
4、mkdir data
5、vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
Documentation=https://github.com/prometheus/alertmanager
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
6、wq && systemctl daemon-reload && systemctl enable alertmanager.service
2、启动 alertmanager.service
:systemctl start alertmanager.service
2、创建企业微信监控应用
1、登陆电脑端企业微信后台:https://work.weixin.qq.com
,没有的请申请企业微信
2、创建应用管理,如下图:
3、获取监控应用的 AgentId
和 Secret
4、获取 企业微信的 企业ID
自此准备工作已经完成,接下来让我们实现监控报警。
三、报警的实现
我们知道 Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。
那么我们可知步骤:连接 Alertmanager 服务 -->定义报警rules-->修改Alertmanager 报警推送配置
1、连接 Alertmanager
服务
1、修改配置
vim /opt/prometheus/prometheus.yml
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 127.0.0.1:9093 # 连接 Alertmanager 服务
2、定义报警rules
1、确定报警文件位置
vim /opt/prometheus/prometheus.yml
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "rules/*.yml" # 报警规则文件位置
# - "second_rules.yml"
2、定义规则
vim /opt/prometheus/rules/host.yml
groups:
- name: hostStatsAlert
rules:
- alert: InstanceDown
expr: up == 0
for: 1m
annotations:
summary: "主机:{{ $labels.hostname }},{{ $labels.instance }} 关机"
- alert: 内存使用率
for: 1m
labels:
severity: warning
annotations:
summary: "内存使用率>5%"
description: "主机:{{ $labels.hostname }},{{ $labels.instance }},当前值:{{ humanize $value }}"
- alert: CPU使用率
for: 1m
labels:
severity: warning
annotations:
summary: "CPU使用率>10%"
description: "主机:{{ $labels.hostname }},{{ $labels.instance }},当前值:{{ humanize $value }}"
- alert: 磁盘使用率
for: 1m
labels:
severity: warning
annotations:
summary: "磁盘使用率>20%"
description: "主机:{{ $labels.hostname }},{{ $labels.instance }},当前值:{{ humanize $value }}"
3、修改Alertmanager 报警推送配置
1、修改 alertmanager.yml 文件
vim /opt/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m # 报警恢复通知
route:
group_by: ['alertname']
group_wait: 10s # 告警等待时间。告警产生后等待10s,如果有同组告警一起发出
group_interval: 10s # 两组告警的间隔时间
repeat_interval: 1m # 重复告警的间隔时间,减少相同右键的发送频率 此处为测试设置为1分钟
receiver: wechat # 默认接收者
routes:
- match:
severity: critical
receiver: wechat
- match_re:
severity: ^(warning|critical)
receiver: wechat
receivers:
- name: 'wechat'
wechat_configs:
- send_resolved: true
to_user: '***' # 接收告警消息的人员企业Id
agent_id: *** # 自建应用的agentId
api_secret: '***' # 自建应用的secret
api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
corp_id: '***' # 企业ID
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
4、开启服务,验证报警
systemctl restart alertmanager.service
systemctl restart prometheus.service
企业应用得到如下报警信息。从下图来看并不好看,那么我们可以使用报警模板。
5、使用模板
1、修改 alertmanager.yml 文件
vim /opt/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
# 添加报警模板文件
templates:
- '/opt/alertmanager/template/*.tmpl'
2、创建报警模板文件
vim /opt/alertmanager/template/wechat.tmpl
{{ define "wechat.default.message" }}
{{ range .Alerts }}
========监控报警==========
告警状态:{{ .Status }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
告警应用:{{ .Annotations.summary }}
告警主机:{{ .Labels.instance }}
告警详情:{{ .Annotations.description }}
触发阀值:{{ .Annotations.value }}
告警时间:{{ .StartsAt.Format "2021-05-21 15:04:05" }}
========end============= {{ end }} {{ end }}
6、重启服务、验证报警模板
systemctl restart alertmanager.service
systemctl restart prometheus.service
四、总结
总体来看并不是特别难,简单记录一下,有问题欢迎指出。