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

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

debian:
   root@debian1:~# apt-get  install -y python-urllib3
   root@debian1:~# wget  http://ftp.cn.debian.org/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:  Zabbix5.0使用钉钉机器人报警
2: 添加一个机器人
2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警
3: 填写安全验证方式

2:  Zabbix5.0使用钉钉机器人报警
4: 获取机器人调用连接
2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警
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 报警媒介

2:  Zabbix5.0使用钉钉机器人报警
新增报警媒介
2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置报警信息模板
2:  Zabbix5.0使用钉钉机器人报警
报警模板

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

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

设置用户

2:  Zabbix5.0使用钉钉机器人报警
设置用户配置

2:  Zabbix5.0使用钉钉机器人报警
设置报警媒介
2:  Zabbix5.0使用钉钉机器人报警

设置动作

我这里直接设置的Admin用户

2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警
问题操作
2:  Zabbix5.0使用钉钉机器人报警
恢复操作
2:  Zabbix5.0使用钉钉机器人报警

测试发送信息

2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警
2:  Zabbix5.0使用钉钉机器人报警