Alertmanager整合企业微信告警详细配置

前提:已经安装部署prometheus,grafana,xxx进程,xxx_exporter。若不知道怎么部署prometheus可以参考我之前的文章以及CSDN上各路大神的博客。

本文又微信和邮箱配置两种方式。

准备工作:
邮箱准备工作:需要用到两个邮箱,发件邮箱,收件邮箱
我用的126邮箱发送,qq邮箱收件。在使用邮箱时,发件箱需要打开SMTP,手机扫描二维码发送短信,电脑上会显示校验码(就是下文alertmanager.yml文件中的smtp_auth_password),需要牢记,因为只会显示一次,建议复制粘贴转发备忘一下。
Alertmanager整合企业微信告警详细配置

微信准备工作:注册企业微信,可以百度一下企业微信注册方法,不需要实名认证,一般微信号就可以注册企业。
创建完之后,电脑登录企业微信,按照以下步骤创建告警信息发送应用

Alertmanager整合企业微信告警详细配置
Alertmanager整合企业微信告警详细配置
Alertmanager整合企业微信告警详细配置

创建完应用后,需要注意以下信息:to_party、agentid 、api_secret、corp_id。
to_party:可以新建一个部门,或在通讯录页面点击该组右侧的三个点可以查看这个部门的id,该id指定可见的群组成员。不在该部门不可见。如图:

Alertmanager整合企业微信告警详细配置

agentid 、api_secret:在应用管理页点击创建的应用图标可以看到该信息,如图:

Alertmanager整合企业微信告警详细配置
corp_id:企业id,在我的企业最下方查看。

Alertmanager整合企业微信告警详细配置
至此,所有准备工作准备完毕。

开始安装配置。

1.下载alertmanager程序包
下载地址1:https://prometheus.io/download/
下载地址2:https://github.com/prometheus/alertmanager/releases

2.解压,重命名

tar -zxvf alertmanager-0.16.0.linux-amd64.tar.gz

为了以后路径方便,可以将解压后的文件夹更名为alertmanager
mv alertmanager-0.16.0.linux-amd64 alertmanager

3.创建/修改alertmanager.yml。微信告警模板test_wechat.tmpl

vim test_wechat.tmpl

{{ define “wechat.default.message”}}
{{ range .Alerts }}
start=
告警程序: prometheus_alert
告警级别: 1
告警类型: {{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format “2006-01-02 15:04:05” }}

=end===

{{ end }}
{{ end }}

~

alertmanager.yml
global:
resolve_timeout: 5m #在没有报警的情况下声明为已解决的时间
smtp_smarthost: ‘smtp.126.com:25’
#邮箱设置
smtp_from: ‘[email protected]’ #发件箱的地址
smtp_auth_username: ‘[email protected]
#发件箱的名字
smtp_auth_password: ‘AVMMLQHRMRZIOYJW’ #邮箱认证码,不是密码
smtp_require_tls: false #是否启用tls加密
templates: #模板路径
-’/home/prosoft/alertmanager/test_wechat.tmpl’

route:
#路由设置
group_by: [‘alertname’] #分组依据.多值时:group_by:[‘alertname’, ‘cluster’]
group_wait: 10s # 当一个新的报警分组被创建后,需要等待至少group_wait时间来初始化通知,可以确保有足够的时间为同一分组来获取多个警报,然后一起发送
group_interval: 1m #探测新异常的间隔时间

repeat_interval: 8m #同一异常重复发送间隔时间
receiver: ‘wechat’ #默认的receiver:,若为mail,则邮箱发送告警信息
receivers: #reciver设置

  • name: ‘mail’ #邮箱设置
    email_configs:
    -to: ‘[email protected]
  • name: ‘wechat’ #微信配置
    wechat_configs:
    -corp_id: ‘wzzzzzzzzzzzzzzz8’ #企业ID
    to_party: ‘2’ #组id
    agent_id: ‘1000004’ #agentid
    api_secret: ‘hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxM’ #生成的secret

send_resolved: true
inhibit_rules:
-source_match:
severity: ‘critical’
target_match:
severity: 'warning
equal: [‘alertname’, ‘dev’, ‘instance’]

4.检查配置文件正误

./amtool check-config alertmanager.yml

5.Prometheus 配置alertmanager

修改prometheus.yml文件
vim prometheus.yml
加入以下配置:

alerting:
alertmanagers:
-static_configs:
-targets:
- ip:9093 #alertmanager的ip:port默认端口,或指定端口

rule_files:
-"/home/prosoft/prometheus/conf/rules/*.yml" #报警规则,绝对路径

  • job_name: ‘alertmanager’ #prometheus监听alertmanager

static_configs:

  • targets: [‘ip:9093’]
    #alertmanager所在ip:port

6.编辑告警规则

在prometheus文件夹下的
conf/rules/文件夹下创建某进程的报警规则:

vim xxx.yml
#为了测试方便可以随便写个报警公式,能让其告警方便测试即可,比如数据库启动时间,或者cpu占用率小于50%就告警。

例如:
groups:

-name: mongodb-rules
rules:
-alert: mongodb_connection #启动时间
expr: mongodb_instance_uptime_estimate_seconds >2000
for: 15s
annotations:
summary: “mongodb数据库启动时间过长!”
description: “数据库异常报告!”
-alert: mongodb_connection_metrics_total
#启动时间
expr: mongodb_connections_metrics_created_total >782
for: 15s
annotations:
summary: “mongodb数据库测试异常!”
description: “数据库异常报告!”

7:启动alertmanager

在alertmanager文件夹下启动
./alertmanager
–config.file=alertmanager.yml &

8.重启prometheus/重新加载prometheus的配置文件

(1:重启

ps -ef | grep prometheus
kill -9 PID
在prometheus文件夹下:
./prometheus --config.file=prometheus.yml &

(2:重新加载配置文件
ps -ef | grep prometheus
kill -HUP PID
以上两种方式都可以使配置文件生效

9:登录浏览器查看配置是否生效
http://ip:9090/alerts #prometheus所在ip。可以看到警告信息。
Alertmanager整合企业微信告警详细配置

http://ip:9093/#/alerts #alertmanager所在ip:port
Alertmanager整合企业微信告警详细配置
其中9090页面上信息:
inactive: 表示当前报警信息既不是firing状态也不是pending状态
pending: 表示在设置的阈值时间范围内被**了
firing: 表示超过设置的阈值时间被**了

10.当页面上有图上信息时说明报警文件已经生效。说明prometheus和alertmanager部署没有问题。

此时,企业微信指定部门成员会看到报警信息。

Alertmanager整合企业微信告警详细配置
Mail

Alertmanager整合企业微信告警详细配置

参考文章:
https://blog.csdn.net/wanchaopeng/article/details/83857130
https://blog.csdn.net/qq_25934401/article/details/83088344
https://prometheus.io/docs/alerting/alertmanager/ #(alertmanager官网,建议使用谷歌浏览器,带有自动翻译,英语小白也可参考)