Linux下安装Docker请参考:Linux安装Docker
Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具。
/opt/alertmanager/config目录,准备用来放置alertmanager的配置文件
#/opt/alertmanager/template目录,准备用来挂载放置alertmanager的模板文件
mkdir -p /opt/alertmanager/{config,template}```
## 授权权限
```linux
chmod -R 777 /opt/alertmanager/config
chmod -R 777 /opt/alertmanager/template
cat > /opt/alertmanager/config/alertmanager.yml << \EOF
global:
resolve_timeout: 5m
# 发件人
smtp_from: [email protected]'
# 邮箱服务器的 POP3/SMTP 主机配置 smtp.qq.com 端口为 465 或 587
smtp_smarthost: 'smtp.qq.com:465'
# 用户名
smtp_auth_username: [email protected]'
# 授权码 或 密码
smtp_auth_password: '你的qq授权码'
smtp_require_tls: false
smtp_hello: 'qq.com'
templates:
# 指定预警内容模板
- '/etc/alertmanager/template/email.tmpl'
route:
# 指定通过什么字段进行告警分组(如:alertname=A和alertname=B的将会被分导两个组里面)
group_by: ['alertname']
# 在组内等待所配置的时间,如果同组内,5 秒内出现相同报警,在一个组内出现
group_wait: 5s
# 如果组内内容不变化,合并为一条警报信息,5 分钟后发送
group_interval: 5m
# 发送告警间隔时间 s/m/h,如果指定时间内没有修复,则重新发送告警
repeat_interval: 5m
# 默认的receiver。 如果一个报警没有被任何一个route匹配,则发送给默认的接收器
receiver: 'justrydeng163email'
#子路由(上面所有的route属性都由所有子路由继承,并且可以在每个子路由上进行覆盖)
routes:
# 当触发当前预警的prometheus规则满足:标签alarmClassify的为normal时(标签名、标签值可以自定义,只要和编写的prometheus的rule里面设置的标签呼应上即可),往justrydeng163email发送邮件
- receiver: justrydeng163email
match_re:
alarmClassify: normal
# 当触发当前预警的prometheus规则满足:标签alarmClassify的值为special时(标签名、标签值可以自定义,只要和编写的prometheus的rule里面设置的标签呼应上即可),往justrydengQQemail发送邮件
- receiver: justrydengQQemail
match_re:
alarmClassify: special
receivers:
- name: 'justrydeng163email'
email_configs:
# 如果想发送多个人就以 ',' 做分割
- to: [email protected]'
send_resolved: true
# 接收邮件的标题
headers: {Subject: "alertmanager报警邮件"}
- name: 'justrydengQQemail'
email_configs:
# 如果想发送多个人就以 ',' 做分割
- to: [email protected]'
send_resolved: true
# 接收邮件的标题
headers: {Subject: "alertmanager报警邮件"}
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
EOF
cat > /opt/alertmanager/template/email.tmpl << \EOF
{{ define "email.html" }}
报警项
实例
报警阀值
开始时间
告警信息
{{ range $i, $alert := .Alerts }}
{{ index $alert.Labels "alertname" }}
{{ index $alert.Labels "instance" }}
{{ index $alert.Annotations "value" }}
{{ $alert.StartsAt }}
{{ index $alert.Annotations "description" }}
{{ end }}
{{ end }} EOF
docker run -d --name=alertmanager \
-p 9093:9093 \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/alertmanager/config/alertmanager.yml:/etc
/alertmanager/alertmanager.yml \
-v /opt/alertmanager/template:/etc
/alertmanager/template \
prom/alertmanager
若未安装Prometheus部分,请参考Docker安装并配置Prometheus
vim /opt/prometheus/config/prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets:
# alertmanager在容器内的地址
- 172.31.113.186:9093
docker ps -a
URL:IP:端口号(本次设置为9093)
Linux安装Docker
Docker搭建并配置Prometheus
Docker拉取并配置Grafana
Docker安装并配置Node-Exporter
Docker安装并配置cAdvisor
Prometheus+Grafana+AlertManager监控Linux主机状态
Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知