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個依賴包網址

# 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)

企業微信的機器人key,需要創建群聊然后再創建機器人,機器人自帶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地址為安裝了webhook-adapter的機器。
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博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM