zabbix(主服务端)配置 钉钉脚本

centos:
  [root@k8s-master01 alertscripts]# yum install -y    python2-requests

debian:
   root@debian1:~# apt-get  install -y python-urllib3
   root@debian1:~# wget  http:///debian/pool/main/r/requests/python-requests_2.4.3-6_all.deb
   root@debian1:~# dpkg -i python-requests_2.4.3-6_all.deb 
   root@debian1:~# apt-get  install -y python-requests

配置开启钉钉机器人

1: 创建一个群组 2: 添加一个机器人 3: 填写安全验证方式

4: 获取机器人调用连接 5: 整理脚本 调用钉钉连接 发送消息

钉钉发送信息脚本

[root@k8s-master01 alertscripts]# mkdir  /usr/local/zabbix/alertscripts/
[root@k8s-master01 alertscripts]# chmod -R 777 /usr/local/zabbix/alertscripts/
[root@k8s-master01 alertscripts]# cat /usr/local/zabbix/alertscripts/dingding_alert.py 
       #!/usr/bin/env python2
       #coding:utf-8
       #zabbix钉钉报警
       import time
       import hmac
       import hashlib
       import base64
       import urllib
       import requests,json,sys,os,datetime
       #### 钉钉安全设置 选择 加密 需要提供加秘串
       timestamp = long(round(time.time() * 1000))
       secret = 'SE开头的加秘串'
       secret_enc = bytes(secret).encode('utf-8')
       string_to_sign = '{}\n{}'.format(timestamp, secret)
       string_to_sign_enc = bytes(string_to_sign).encode('utf-8')
       hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
       sign = urllib.quote_plus(base64.b64encode(hmac_code))
       #加密串访问地址
       #webhook="https://oapi.dingtalk.com/robot/send?access_token=TOKEN密钥串×tamp=$timestamp&sign=$sign"
       # 白名单 访问当时 需要把自己的IP地址添加到钉钉 安全设置 里面
       webhook="https://oapi.dingtalk.com/robot/send?access_token=TOKEN密钥串"
       user=sys.argv[1]
       tag=sys.argv[2]
       text=sys.argv[3]
       data={
           "msgtype": "text",
           "text": {
               "content": text
               
           },
           "at": {
               "atMobiles": [
                   user
               ],
               "isAtAll": False
           }
       }
       headers = {'Content-Type': 'application/json'}
       x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
       if os.path.exists("/usr/local/zabbix/log/dingding.log"):
           f=open("/usr/local/zabbix/log/dingding.log","a+")
       else:
           f=open("/usr/local/zabbix/log/dingding.log","w+")
       f.write("\n"+"--"*30)
       if x.json()["errcode"] == 0:
           f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
           f.close()
       else:
           f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
       f.close()
[root@k8s-master01 alertscripts]# mkdir  /usr/local/zabbix/log/ -p
[root@k8s-master01 alertscripts]# chmod -R 777  /usr/local/zabbix/log/ 
[root@k8s-master01 alertscripts]# chmod +x dingding_alert.py
[root@k8s-master01 alertscripts]# ./dingding_alert.py  钉钉号  服务器警告  nginx服务器警告  #测试发送
      #第一个参数: 钉钉手机号 
      #第二个参数: 头部信息
      #第三个参数: 具体发送信息

配置zabbix 报警媒介

新增报警媒介 {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE} 配置报警信息模板 报警模板

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {}故障! 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {}故障! 告警主机:{HOSTNAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {} 告警项目:{TRIGGER.KEY1} 告警地址:{TRIGGER.URL} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件 ID:{EVENT.ID} 恢复模板

告警恢复 {EVENT.DURATION}: {} 告警恢复 {EVENT.DURATION}: {} 告警主机:{} 告警信息:{} 告警项目:{ITEM.NAME} 告警地址:{TRIGGER.URL} 告警时间:{EVENT.DATE}{EVENT.TIME} 恢复时间:{EVENT.RECOVERY.DATE}{EVENT.RECOVERY.TIME} 当前状态:{TRIGGER.STATUS} 值={ITEM.VALUE} 故障共持续{EVENT.AGE} 事件ID:{EVENT.ID}

设置用户

设置用户配置

设置报警媒介

设置动作

我这里直接设置的Admin用户

问题操作 恢复操作

测试发送信息