ITPub博客

首页 > Linux操作系统 > Linux操作系统 > zabbix3.4.15用python实现钉钉机器人告警的方法

zabbix3.4.15用python实现钉钉机器人告警的方法

原创 Linux操作系统 作者:chenfeng 时间:2019-01-29 14:37:26 0 删除 编辑

zabbix服务器监控到异常,可以通过钉钉机器人进行报警通知,具体配置如下:

钉钉机器人配置:

 需要新建一个钉钉群,群里面添加一个机器人即可。



报警用到的python脚本:

#cat dingding.py

#!/usr/bin/env python

#coding:utf-8

#zabbix钉钉报警

import requests,json,sys,os,datetime

webhook=" --钉钉机器人webhook地址

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("/tmp/zabbix_dingding.log"):

    f=open("/tmp/zabbix_dingding.log","a+")

else:

    f=open("/tmp/zabbix_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()


备注:需要把此脚本放到zabbix定义的脚本执行目录里。

查看zabbix里面定义的脚本执行目录方法:

#cat /etc/zabbix/conf/zabbix_server.conf | grep AlertScriptsPath

### Option: AlertScriptsPath

AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts



钉钉机器人webhook地址获取方法:

群设置--> 群机器人-->本群的机器人,选择之前添加的机器人,然后点开,见下图:


WEB界面上的配置:

1、配置用户可以使用脚本报警

用户-->找到Admin,点开,找到报警媒介



2、创建报警媒介:

名称  dingding

类型  脚本

名称  dingding.py

脚本参数:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}



创建用户指定报警媒介类型

管理--> 报警媒介类型-->创建媒体类型



创建触发器发送警告动作

配置-->动作-->创建动作




操作和恢复操作需填写的内容如下:

标题:故障信息!

内容:

主机名称:{HOST.NAME}

主机地址:{HOST.IP}

主机分组:{TRIGGER.HOSTGROUP.NAME}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警项目:({EVENT.ID}){TRIGGER.KEY1}

告警信息:{TRIGGER.NAME}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

事件状态:{TRIGGER.STATUS}

发送时间:{TIME}


默认标题:恢复信息!

消息内容:

主机名称:{HOST.NAME}

主机地址:{HOST.IP}

主机分组:{TRIGGER.HOSTGROUP.NAME}

恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}

恢复项目:({EVENT.RECOVERY.ID}):{TRIGGER.KEY1}

恢复信息:{TRIGGER.NAME}

恢复详情:{ITEM.NAME}:{ITEM.VALUE}:{EVENT.RECOVERY.VALUE} 

当前状态:{EVENT.RECOVERY.STATUS}

发送时间:{TIME}



4、测试发送结果

查看告警发送的日志内容,status列为发送状态,error为错误提示信息。

【报表->审计->动作->选择时间段】

【报表->审计->动作日志->选择时间段】

钉钉能收到报警信息,配置完成。

收到的告警信息类似如下图:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2565146/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
交流MySQL,MongoDB和Redis技术。 微信或QQ:410294

注册时间:2015-12-07

  • 博文量
    758
  • 访问量
    2196021