配置钉钉群机器人 1点击群的设置按钮 2点击智能群助手 3点击添加机器人 4点添加 5选择自定义机器人 6点添加 7配置名称和安全设置并记录下加签密钥 8记录下webhook地址 配置自定义告警脚本 进入zabbixserver容器 dockerexecuroottizabbixserverbinbash 安装python3。6 yuminstallpython36 安装pip yuminstallpython3pip 安装requests库 pip3installrequests 查看自定义报警脚本路径 catetczabbixzabbixserver。confgrepAlertScriptsPath 进入自定义报警脚本目录 cdusrlibzabbixalertscripts 创建告警脚本 vidingding。py dingding。py参考(脚本来自网络简单修改了下) 配置webhook链接apiurl‘webhook地址’ 配置加签密钥apisecret‘加签密钥’ 配置是否所有人atallTrue 钉钉机器人webhook参考文档 !usrbinenvpython3 coding:utf8 importtime importhmac importhashlib importbase64 importurllib。parse importrequests importjson importsys webhookURL apiurlwebhook地址 secretkey apisecret加签密钥 isall atallTrue defgettimestampsign(): timestampstr(round(time。time()1000)) secretapisecret secretencsecret。encode(utf8) stringtosign{}{}。format(timestamp,secret) stringtosignencstringtosign。encode(utf8) hmaccodehmac。new(secretenc,stringtosignenc,digestmodhashlib。sha256)。digest() signurllib。parse。quoteplus(base64。b64encode(hmaccode)) returntimestamp,sign defgetsignedurl(): timestamp,signgettimestampsign() webhookapiurltimestamptimestampsignsign returnwebhook defgetwebhook(mode): ifmode0: webhookapiurl elifmode1: webhookgetsignedurl() else: webhook returnwebhook defgetmessage(text,userinfo): message{ msgtype:text, text:{ content:text }, at:{ atMobiles:〔 userinfo, 〕, isAtAll:atall } } returnmessage defsenddingmessage(text,userinfo): webhookgetwebhook(1) header{ ContentType:applicationjson, Charset:UTF8 } messagegetmessage(text,userinfo) messagejsonjson。dumps(message) inforequests。post(urlwebhook,datamessagejson,headersheader)。json() codeinfo〔errcode〕 errmsginfo〔errmsg〕 ifcode0: print(sendsuccessreturn:ss(code,errmsg)) else: print(sendfailreturn:ss(code,errmsg)) exit(3) ifnamemain: textsys。argv〔3〕 userinfosys。argv〔1〕 senddingmessage(text,userinfo) 给予执行权 chmodxdingding。py 测试 。dingding。py18137900000titletext 创建报警媒介类型 1管理报警媒介类型创建媒体类型 2配置媒介参数 3切换到Messagetemplates页添加消息模板 4添加告警消息模板 主题: 收到告警:{EVENT。NAME} 消息: 收到告警 ID:{EVENT。ID} 主机:{HOST。NAME} 告警:{EVENT。NAME} 时间:{EVENT。DATE}{EVENT。TIME} 级别:{EVENT。SEVERITY} 数据:{EVENT。OPDATA} 5添加告警恢复模板 主题: 告警恢复:{EVENT。NAME} 消息: 告警已恢复 ID:{EVENT。ID} 主机:{HOST。NAME} 告警:{EVENT。NAME} 时间:{EVENT。RECOVERY。DATE}{EVENT。RECOVERY。TIME} 级别:{EVENT。SEVERITY} 持续时间:{EVENT。DURATION} 测试 1点击报警媒介后面的测试按钮 2输入收件人手机号点击测试 3成功收到消息 配置钉钉告警 1UsersettingsProfile报警媒介添加 2配置告警 创建动作 1配置动作Triggeractions创建动作 2输入名称 3切换到操作页添加告警操作和恢复操作 4告警操作选择用户组或用户仅送到钉钉 5恢复操作选择用户组或用户仅送到钉钉 6手动shutdown一个接口测试成功 附:企业微信告警脚本 !usrbinenvpython3 coding:utf8 importrequests importjson importsys webhookURL apiurlwebhook地址 isall atallTrue defgetmessage(text,userinfo): mentionedmobilelist〔〕 ifatall: mentionedmobilelist。append(all) else: mentionedmobilelist。append(userinfo) message{ msgtype:text, text:{ content:text, mentionedmobilelist:mentionedmobilelist } } returnmessage defsendwechatmessage(text,userinfo): header{ ContentType:applicationjson, Charset:UTF8 } messagegetmessage(text,userinfo) messagejsonjson。dumps(message) inforequests。post(urlapiurl,datamessagejson,headersheader)。json() codeinfo〔errcode〕 errmsginfo〔errmsg〕 ifcode0: print(sendsuccessreturn:ss(code,errmsg)) else: print(sendfailreturn:ss(code,errmsg)) exit(3) ifnamemain: textsys。argv〔3〕 userinfosys。argv〔1〕 sendwechatmessage(text,userinfo)