zabbix(主服务端)配置 钉钉脚本
centos:
[[email protected] alertscripts]# yum install -y python2-requests
debian:
[email protected]:~# apt-get install -y python-urllib3
[email protected]:~# wget http://ftp.cn.debian.org/debian/pool/main/r/requests/python-requests_2.4.3-6_all.deb
[email protected]:~# dpkg -i python-requests_2.4.3-6_all.deb
[email protected]:~# apt-get install -y python-requests
配置开启钉钉机器人
1: 创建一个群组
钉钉发送信息脚本
[[email protected] alertscripts]# mkdir /usr/local/zabbix/alertscripts/
[[email protected] alertscripts]# chmod -R 777 /usr/local/zabbix/alertscripts/
[[email protected] 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()
[[email protected] alertscripts]# mkdir /usr/local/zabbix/log/ -p
[[email protected] alertscripts]# chmod -R 777 /usr/local/zabbix/log/
[[email protected] alertscripts]# chmod +x dingding_alert.py
[[email protected] alertscripts]# ./dingding_alert.py 钉钉号 服务器警告 nginx服务器警告 #测试发送
#第一个参数: 钉钉手机号
#第二个参数: 头部信息
#第三个参数: 具体发送信息
配置zabbix 报警媒介
故障{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}告警恢复 {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}设置用户
设置动作
我这里直接设置的Admin用户
精彩评论