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用户
问题操作
恢复操作
测试发送信息