AlertManager实现企业微信报警
1.AlertManager对接企业微信
ALertManager支持的报警方式有邮件报警、钉钉报警、微信报警,本次将实现企业微信报警
2.企业微信配置
2.1.注册一个企业微信
2.2.创建一个报警机器人
在应用管理点击创建应用即可
2.3.创建部门
注册完企业微信就会有一个部门
2.4.记录重要信息用于配置
1、记下企业id号
在我的企业—最下面就会有企业id
ww48f74fc8ed3a07ba
2、记录部门id号
部门id为1
3、记录机器人id和secret
AgentId:1000003
Secret:j3ocaGJJM7KejlqzBIJ38b6D6t9QhqlIAh7k4fA1cT0
在应用管理找到机器人
3.配置prometheus
3.1.集成alertmanager
1.修改配置文件
[root@prometheus-server ~]# vim /data/prometheus/prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.81.210:9093
2.加载配置
[root@prometheus-server ~]# curl -XPOST 192.168.81.210:9090/-/reload
3.2.编写一个磁盘告警的告警规则
1.添加规则
[root@prometheus-server ~]# vim /data/prometheus/rules/node.yml
groups:
- name: node.rules
rules:
- alert: NodeFilessystemUsage
expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100) > 80
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率过高"
description: "{
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率超过80% (当前值: {
{ $value }}) "
2.加载配置
[root@prometheus-server ~]# curl -XPOST 192.168.81.210:9090/-/reload
4.配置alertmanager支持微信报警
4.1.修改主配置文件增加微信报警
配置文件介绍
receivers:
- name: 'wechat' //定义接收者名称
wechat_configs: //使用微信配置
- corp_id: 'ww48f74fc8ed3a07ba' //填写企业id
to_party: '1' //部门id
agent_id: '1000003' //机器人应用id
api_secret: 'j3ocaGJJM7KejlqzBIJ38b6D6t9QhqlIAh7k4fA1cT0' //机器人api secret值
send_resolved: true
1.修改配置文件
[root@prometheus-server ~]# vim /data/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
templates: #定义微信告警内容模板
- '/data/alertmanager/wechat.tmpl'
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 10m
receiver: 'wechat'
receivers:
- name: 'wechat'
wechat_configs:
- corp_id: 'ww48f74fc8ed3a07ba'
to_party: '1'
agent_id: '1000003'
api_secret: 'j3ocaGJJM7KejlqzBIJ38b6D6t9QhqlIAh7k4fA1cT0'
send_resolved: true
4.2.编写微信告警内容模板
[root@prometheus-server ~]# vim /data/alertmanager/wechat.tmpl
{
{ define "wechat.default.message" }}
{
{ range $i, $alert :=.Alerts }}
========监控报警==========
告警状态:{
{ .Status }}
告警级别:{
{ $alert.Labels.severity }}
告警类型:{
{ $alert.Labels.alertname }}
告警应用:{
{ $alert.Annotations.summary }}
告警主机:{
{ $alert.Labels.instance }}
告警详情:{
{ $alert.Annotations.description }}
触发阀值:{
{ $alert.Annotations.value }}
告警时间:{
{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
========end=============
{
{ end }}
{
{ end }}
5.触发磁盘告警
将我们写的告警规则的阈值调小即可触发告警,将阈值改为10
[root@prometheus-server ~]# vim /data/prometheus/rules/node.yml
groups:
- name: node.rules
rules:
- alert: NodeFilessystemUsage
expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100) > 10
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率过高"
description: "{
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率超过80% (当前值: {
{ $value }}) "
已经触发并发送告警
FIRING状态表示问题发生且已经发送告警
6.查看微信告警消息
6.1.问题发生的告警
由于我们有3台node节点,因此都会发到同一条告警消息中
告警状态为firing表示问题发生,且没有处理
6.2.问题解决的告警
告警状态为resolved表示问题已解决已经恢复正常
告警消息极其丰富,特别详细
6.查看微信告警消息
6.2.问题解决的告警
告警状态为resolved表示问题已解决已经恢复正常
告警消息极其丰富,特别详细