zabbix-钉钉报警媒介

参考:https://www.cnblogs.com/zsl-find/protected/articles/11104632.html

1.机器人接口,查询步骤,需要创建自定义钉钉机器人

 

 

 

 

 备注:钉钉必须写关键词,需要你结合报警的信息去写

https://oapi.dingtalk.com/robot/send?access_token=2ff4da2638e5347940298e3fa8644751376e755a2585acab85bcaa30b408e5da

2.linux测试接口


复制代码
curl 'https://oapi.dingtalk.com/robot/send?access_token=2ff4da2638e5347940298e3fa8644751376e755a2585acab85bcaa30b408e5da' \
   -H 'Content-Type: application/json' \
   -d '{"msgtype": "text",
        "text": {
             "content": "我就是我, 是不一样的烟火"
        }
      }'
复制代码

3.查看默认脚本位置


cat /etc/zabbix/zabbix_server.conf|grep AlertScriptsPath
cd /usr/lib/zabbix/alertscripts
vi /usr/lib/zabbix/alertscripts/dingding.py
复制代码
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=2ff4da2638e5347940298e3fa8644751376e755a2585acab85bcaa30b408e5da" #注意修改成自己的接口
user=sys.argv[1]
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/logs/dingding.log"):
    f=open("/usr/local/zabbix/logs/dingding.log","a+")
else:
    f=open("/usr/local/zabbix/logs/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()
复制代码

chown zabbix.zabbix dingding.py
chmod 755 dingding.py
#给脚本权限

mkdir /usr/local/zabbix/logs -p

[root@zabbix210 alertscripts]# mkdir /usr/local/zabbix/logs -p
[root@zabbix210 alertscripts]# touch /usr/local/zabbix/logs/dingding.log
[root@zabbix210 alertscripts]# chown -R zabbix.zabbix /usr/local/zabbix/logs/dingding.log
[root@zabbix210 alertscripts]# chown -R zabbix.zabbix /usr/local/zabbix/logs
./dingding.py test 13140180875 "这个条测试信息,忽略" #测试脚本是否能够正常运行
yum install python-pip #配置python环境
pip -v
[root@zabbix01 monitor_scripts]# pip install requests #报错使用阿里源

[root@xuegod63 ~]# mkdir ~/.pip
[root@xuegod63 ~]# vi /root/.pip/pip.conf #写入下以内容
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
 
 
zabbix server 后台web配置

三个参数
创建报警媒介.  三个参数分别是:ALERT.SENDTO      ALERT.SUBJECT      ALERT.MESSAGE
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
备注:创建时 必须有大括号

 2) 用户添加报警媒介
收件人是钉钉上的手机号码.这里使用Admin管理员用户,在Admin用户的"报警媒介"里添加收件人信息
特别注意:这里只需要添加钉钉群里的任何一个成员的手机号码即可,即添加一个收件人,这样在机器人群里成员都能看到告警信息.
如果添加多个收件人,则机器人群里就会发送多个告警信息,一个收件人发一条信息.

 

 

 

 

 3) 添加动作
动作里的报警信息和恢复信息都发送给Admin用户.

备注:新的触发条件,必须要写,不然,收不到报警信息。可以根据ip等去写条件

 

 

 

 

 

备注:

 {TRIGGER.STATUS}: {TRIGGER.NAME}

告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}

 

 

 

恢复操作(确认操作也是一样):

恢复参数

{TRIGGER.STATUS}: {TRIGGER.NAME}

告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}

其他默认

验证,例如关闭一台测试机,会根据你写的规则去发送信息

 

 

 


 

 

 

 

 

 

 

 

posted @ 2019-11-22 17:03  冬青护城河  阅读(397)  评论(0编辑  收藏  举报