Advertisement

y83.第四章 Prometheus大厂监控体系及实战 -- prometheus告警机制进阶(十四)

阅读量:

12.prometheus告警机制进阶

12.1 钉钉通知

12.1.1 钉钉群组创建机器人–关键字认证

在这里插入图片描述
12.1.1.1 钉钉认证–关键字
复制代码
    root@prometheus2:~# mkdir /data/scripts
    
    root@prometheus2:~# cat /data/scripts/dingding-keywords.sh
    #!/bin/bash
    #
    #**********************************************************************************************
    #Author:        Raymond
    #QQ:            88563128
    #Date:          2022-05-30
    #FileName:      /data/scripts/dingding-keywords.sh
    #URL:           raymond.blog..net
    #Description:   The test script
    #Copyright (C): 2022 All rights reserved
    #*********************************************************************************************
    #PHONE=$1
    #SUBJECT=$2
    MESSAGE=$1
    
    /usr/bin/curl -X "POST" 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxx' \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text",
       "text": {
        "content": "'${MESSAGE}'"
     }
       }'
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手
12.1.1.2 测试发送消息
复制代码
    root@prometheus2:~# bash /data/scripts/dingding-keywords.sh alertname:测试信息
    {"errcode":0,"errmsg":"ok"}
    
    
      
      
    
    AI助手
在这里插入图片描述
12.1.1.3 部署webhook-dingtalk
复制代码
    root@prometheus2:/apps# wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v1.4.0/prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz
    
    root@prometheus2:/apps# tar xf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz 
    root@prometheus2:/apps# ln -sv /apps/prometheus-webhook-dingtalk-1.4.0.linux-amd64 /apps/prometheus-webhook-dingtalk
    '/apps/prometheus-webhook-dingtalk' -> '/apps/prometheus-webhook-dingtalk-1.4.0.linux-amd64'
    
    root@prometheus2:/apps# cat /usr/lib/systemd/system/dingtalk.service
    [Unit]
    Description=prometheus-webhook-dingtalk
    After=network-online.target
    
    [Service]
    Restart=on-failure
    ExecStart=/apps/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --ding.profile="webhook=https://oapi.dingtalk.com/robot/send?access_token=xxxxxx"
    
    [Install]
    WantedBy=multi-user.target
    
    root@prometheus2:/apps# systemctl enable --now dingtalk
    
    root@prometheus2:/apps# ss -ntl| grep 8060
    LISTEN   0        4096                   *:8060                *:* 
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手
12.1.1.4 部署alertmanager
复制代码
    root@node2:/apps/alertmanager# vim alertmanager.yml
    global:                               
      resolve_timeout: 5m
    
    route:
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 2m
      receiver: 'webhook' 
    receivers:
    - name: 'webhook'
      webhook_configs:
      - url:  'http://172.31.2.102:8060/dingtalk/webhook/send'                            
    send_resolved: true
    
    root@node2:/apps/alertmanager# ./amtool check-config alertmanager.yml 
    Checking 'alertmanager.yml'  SUCCESS
    Found:
     - global config
     - route
     - 1 inhibit rules
     - 2 receivers
     - 0 templates
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手
12.1.1.5 配置prometheus
复制代码
    root@prometheus1:/apps/prometheus# cat file_sd/sd_my_server.json 
    [
      {
    "targets": ["172.31.2.181:9100","172.31.2.182:9100","172.31.2.183:9100"]
      }
    ]
    
    root@prometheus1:/apps/prometheus# vim prometheus.yml
    ...
      - job_name: 'file_sd_my_server'
    file_sd_configs:
      - files:
        - /apps/prometheus/file_sd/sd_my_server.json
        refresh_interval: 10s
    
    root@prometheus1:/apps/prometheus# systemctl restart prometheus
    
    root@node2:/apps/alertmanager# systemctl restart alertmanager
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手
在这里插入图片描述
12.1.1.6 验证消息发送
在这里插入图片描述
在这里插入图片描述
12.1.1.7 钉钉验证消息
在这里插入图片描述

12.1.2 钉钉群组创建机器人–加签认证

在这里插入图片描述
12.1.2.1 加签认证–获取认证
复制代码
    root@prometheus2:~# vim /data/scripts/dingding-label-sign.py
    #!/usr/bin/python3
    import time
    import hmac
    import hashlib
    import base64
    import urllib.parse
    
    timestamp = str(round(time.time() * 1000))
    secret = 'xxxxxx' #设置加签的secret
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
    print(timestamp)
    print(sign)
    
    root@prometheus2:~# python3 /data/scripts/dingding-label-sign.py 
    1653910512607
    H8EvoSZz75%2Bon5mkGfWcBjShUw43a0CZhUhpMeV%2BwkM%3D
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手
12.1.2.2 消息发送脚本
复制代码
    root@prometheus2:~# vim /data/scripts/dingding-label-send.sh
    #!/bin/bash
    #
    #**********************************************************************************************
    #Author:        Raymond
    #QQ:            88563128
    #Date:          2022-05-30
    #FileName:      /data/scripts/dingding-label-send.sh
    #URL:           raymond.blog..net
    #Description:   The test script
    #Copyright (C): 2022 All rights reserved
    #*********************************************************************************************
    #PHONE=$1
    #SUBJECT=$2
    MESSAGE=$1
    
    secret='xxxxxx' #设置加签的secret
    getkey=$(/usr/bin/python3 /data/scripts/dingding-label-sign.py)
    timestamp=${getkey:0:13}
    sign=$(echo "${getkey:13:100}" |tr -d '\n')
    DateStamp=$(date -d @${getkey:0:10} "+%F %H:%M:%S")
    
    /usr/bin/curl -X "POST" "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx&timestamp=${timestamp}&sign=${sign}" \ #token后面自己设置
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text",
       "text": {
        "content": "'${MESSAGE}'"
     }
       }'
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手
12.1.2.3 测试发送消息
复制代码
    root@prometheus2:~# bash /data/scripts/dingding-label-send.sh "测试加签认证"
    {"errcode":0,"errmsg":"ok"}
    
    
      
      
    
    AI助手
在这里插入图片描述
12.1.2.4 prometheus配置

和上面12.1.1.5 步骤一样

12.1.2.5 webhook-dingtalk启动参数
复制代码
    root@prometheus2:~# systemctl stop dingtalk
    
    #获取当前时间戳和认证秘钥
    root@prometheus2:~# python3 /data/scripts/dingding-label-sign.py 
    1653912164439
    VOCKQhGqwAMUMo2ZG4ThL0oNkYbx8lA4AVEvSxmXeMY%3D
    #每一个小时要重新获取一次
    
    #基于上一个步骤获取的时间戳和认证信息启动webhook-dingtalk
    root@prometheus2:~# /apps/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --ding.profile="webhook=https://oapi.dingtalk.com/robot/send?access_token=ea8fc7aac8bcbea66639d13ad842681054af55043b20d41faed47d7d42f9c1ba&timestamp=1653912164439&sign=VOCKQhGqwAMUMo2ZG4ThL0oNkYbx8lA4AVEvSxmXeMY%3D"
    level=info ts=2022-05-30T12:08:46.705Z caller=main.go:62 msg="Starting prometheus-webhook-dingtalk" version="(version=1.4.0, branch=HEAD, revision=02fe8265a98ab4caaa78ebbed209d3f06b87b4a6)"
    level=info ts=2022-05-30T12:08:46.705Z caller=main.go:63 msg="Build context" (gogo1.13.5,userroot@eb9f8d8f0437,date20191211-03:00:38)=(MISSING)
    level=warn ts=2022-05-30T12:08:46.705Z caller=main.go:105 msg="DEPRECATION: Detected one of the following flags: --ding.profile, --ding.timeout, --template.file"
    level=warn ts=2022-05-30T12:08:46.705Z caller=main.go:106 msg="DEPRECATION: Now working in compatibility mode, please consider upgrading your configurations"
    level=info ts=2022-05-30T12:08:46.705Z caller=main.go:117 component=configuration msg="Loading templates" templates=
    ts=2022-05-30T12:08:46.706Z caller=main.go:133 component=configuration msg="Webhook urls for prometheus alertmanager" urls=http://localhost:8060/dingtalk/webhook/send
    level=info ts=2022-05-30T12:08:46.706Z caller=web.go:210 component=web msg="Start listening for connections" address=:8060
    
    
    #如果不更换时间戳和认证秘钥会出现下面的400报错
    level=error ts=2022-05-30T15:18:44.861Z caller=dingtalk.go:103 component=web target=webhook msg="Failed to send notification to DingTalk" respCode=310000 respMsg="invalid timestamp, more: [https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq]"
    level=info ts=2022-05-30T15:18:44.861Z caller=entry.go:22 component=web http_scheme=http http_proto=HTTP/1.1 http_method=POST remote_addr=172.31.2.182:54418 user_agent=Alertmanager/0.24.0 uri=http://172.31.2.102:8060/dingtalk/webhook/send resp_status=400 resp_bytes_length=27 resp_elapsed_ms=229.918202 msg="request complete"
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手
12.1.2.6 prometheus测试报警信息
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~