Alertmanager报警模块集成钉钉/企业微信机器人

2022/4/7 6:23:12

本文主要是介绍Alertmanager报警模块集成钉钉/企业微信机器人,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

一、简介

AlertmanagerPrometheus的一个报警通知组件,需要结合Prometheus使用。Prometheus将监测到的异常事件发送给AlertmanagerAlertmanager发送异常事件的通知(邮件、webhook等)。

 

二、安装Alertmanager

下载地址:Download | Prometheus

# 解压安装包
tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz
# 文件列表
./
├── alertmanager       # alertmanager的启动程序
├── alertmanager.yml   # alertmanager的配置文件
├── amtool
├── LICENSE
└── NOTICE

  

三、报警规则

修改prometheus的配置文件prometheus.yml

# Alertmanager configuration
# 改为alertmanager的地址
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.1.23:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
# 指定规则文件
rule_files:
  - rules/*.yml

rules目录中添加.yml结尾的规则文件,prometheus会根据这些规则配置文件进行监控报警。
模版:

# 一个配置文件里包含多个组
groups:
- name: example # 组名
  # 触发规则列表
  rules:
  - alert: HighErrorRate # 警告名
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5 # 触发规则
    for: 10m # 规则触发持续多长时间发送告警
    # 告警附加标签
    labels:
      severity: page
    # 告警附加注释
    annotations:
      summary: High request latency
  • node_alived.yml

groups: - name: 实例存活告警规则 rules: - alert: 实例存活告警 expr: up == 0 for: 1m labels: user: prometheus severity: warning annotations: summary: "主机宕机 !!!" description: "该实例主机已经宕机超过一分钟了。"

  • memory_over.yml
groups:
- name: 内存报警规则
  rules:
  - alert: 内存使用率告警
    expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 50
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "服务器可用内存不足。"
      description: "内存使用率已超过50%(当前值:{{ $value }}%)"
  • cpu_over.yml
groups:
- name: CPU报警规则
  rules:
  - alert: CPU使用率告警
    expr: 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[1m]) )) * 100 > 50
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "CPU使用率正在飙升。"
      description: "CPU使用率超过50%(当前值:{{ $value }}%)"
  • disk_over.yml
groups:
- name: 磁盘使用率报警规则
  rules:
  - alert: 磁盘使用率告警
    expr: 100 - node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"xfs|ext4"} * 100 > 80
    for: 20m
    labels:
      severity: warning
    annotations:
      summary: "硬盘分区使用率过高"
      description: "分区使用大于80%(当前值:{{ $value }}%)"

然后重启prometheus服务。

登陆prometheus的UI界面,查看Alerts规则

  • Inactive:没有触发阈值
  • Pending:已触发阈值但未满足告警持续时间
  • Firing:已触发阈值且满足告警持续时间

 

 

四、通知规则

4.1 钉钉告警

docker安装钉钉报警插件(prometheus-webhook-dingtalk),启用一个名为:dingtalk的钉钉机器人。

docker run -d \
--name dingtalk \
--restart always \
-p 8060:8060 \
timonwong/prometheus-webhook-dingtalk:master \
--ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=xxxx(自己的钉钉机器人token)"

设置alertmanager.ymlroutereceivers

route属性用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。

global:
  resolve_timeout: 5m
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - send_resolved: true
    url: 'http://192.168.1.23:8060/dingtalk/webhook1/send'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

 启动alertmanager测试

 

 

 

 

4.2 企业微信告警

下载docker

解决 :下载3个依赖包网址 https://pkgs.org/download/container-selinux https://pkgs.org/download/fuse-overlayfs https://pkgs.org/download/slirp4netns

# 1、卸载旧的版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 2、需要的安装包
yum install -y yum-utils     
# 3、设置镜像的仓库
yum-config-manager \
    --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  推荐使用阿里云的         
#4更新yum软件包索引 
yum makecache fast
#5、安装依赖
container-selinux、 fuse-overlayfs、slirp4netns
# 6、安装docker相关内容(docker-ce 社区版;docker-ee 企业版;推荐使用ce。)
yum install docker-ce docker-ce-cli containerd.io -y 
#7、验证,启动
systemctl start docker
docker version
systemctl enable docker

  

docker安装企业微信报警插件(webhook-adapter),启用一个名为:wechat的钉钉机器人。

docker run -d --name wechat \
--restart always -p 8080:80 \
guyongquan/webhook-adapter \
--adapter=/app/prometheusalert/wx.js=/wx=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx(自己的微信机器人key)

 

编辑alertmanager的alertmanager.yml文件:

global:
  resolve_timeout: 5m
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - send_resolved: true
    url: 'http://192.168.1.23:8080/adapter/wx'    #ip地址为
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

启动alertmanager服务:

#/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/data/  &> /opt/alertmanager/access.log &

然后测试报警

 

 

 

参考网址:(49条消息) Prometheus学习笔记(三)Alertmanager报警模块集成钉钉/企业微信机器人_刘李404not found的博客-CSDN博客



这篇关于Alertmanager报警模块集成钉钉/企业微信机器人的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程