php发送企业通知钉钉,钉钉webhook实现告警通知

之前的运维告警多通过SMS、mail 等方式通知到相应的人员。不过虽着 IM 和手机APP的发展,很多告警也会发送到IM软件上去。目前比较常用的是发送到微信和钉钉上。不过微信发送时,需要开通企业公众号,比较麻烦。而钉钉在今年更新的机器人功能比较易用,只要启用的有钉钉,可以通过官方提供的API,可以很方便的post数据到相应的接收人 。其支持的机器人类型也比较丰富,除支持自定义webhook发送消息外,其还有gitlab、github、jira等机器人。

一、创建自定义webhook

通过桌面版或手机APP的钉钉发起聊天,选取相应的联系人创建聊天:

5b8bfa0fea1d2fa52fec16eabe8fe531.png

点选右上角的机器人

d38ce35a3c1a38d9e95bf6af1af18b27.png

这里选取自定义webhook

d79ec75cfdd30a7ef395eb1ddac13855.png

点击创建后,指定机器人名称并编辑头像后,会后成一个hook地址 。记得复制下来该hook地址。其包含唯一的access tokenid 。

二、python post调用

当前自定义机器人支持文本(text)、连接(link)、markdown(markdown)等消息类型,需要注意的是发起POST请求时,必须将字符集编码设置成UTF-8,并且指定header的类型为json格式---注意字符和header不能少,少了无法正常发送消息。具体可以参考官方文档 。

这里以text类型为例,如下:

#code from www.361way.com

#coding: utf-8

import json,urllib2

url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxx"

header = {

"Content-Type": "application/json",

"charset": "utf-8"

}

data = {

"msgtype": "text",

"text": {

"content": "www.361way.com告警测试"

},

"at": {

"isAtAll":True # at为非必须

}

}

sendData = json.dumps(data)

request = urllib2.Request(url,data = sendData,headers = header)

urlopen = urllib2.urlopen(request)

print urlopen.read()

当然在python下可以使用的post请求模块比较多,也可以使用requests模块进行操作。其用法如下:req = requests.post(url, data=String_textMsg, headers=HEADERS)

成功调用后示例如下:

d76a60e029a90121b828d08be9bc408e.png

三、zabbix告警发送钉钉

将上面的代码修改下,我们将tokenid、suject、message做为参数,具体脚本如下:

#code from www.361way.com

#coding=utf-8

import json,urllib2,sys

def usage():

'''usage'''

print 'Usage: %s %s %s %s' %(sys.argv[0],'tokenid','Subject','Content')

sys.exit()

def dingding(tokenid,subject,message):

url = "https://oapi.dingtalk.com/robot/send?access_token=" + tokenid

header = {

"Content-Type": "application/json",

"charset": "utf-8"

}

data = {

"msgtype": "text",

"text": {

"content": subject + '\n' + content

}

}

sendData = json.dumps(data)

request = urllib2.Request(url,data = sendData,headers = header)

urlopen = urllib2.urlopen(request)

return urlopen.read()

def main():

if len(sys.argv) != 4:

usage()

tokenid = sys.argv[1]

subject = sys.argv[2]

message = sys.argv[3]

dingding(tokenid, subject,message)

if __name__ == "__main__":

main()

将上面的脚本放到zabbix_server.conf中的AlertScriptsPath目录下,并给其可执行权限。并在zabbix的web管理界面找到报警媒介类型---创建媒介类型---脚本---并给脚本创建参数,指定传的三个参数:{ALERT.SENDTO}、 {ALERT.SUBJECT} 、{ALERT.MESSAGE}。

218c78352282fb70d3a7e8b4d0342086.png

并新增一个zabbix用户,指定其接收人为tokenid

3c283f5799ff6d8e4b5e9b25c37548b7.png

接下来在配置---动作中创建新的动作或编辑已存在的动作,指定触发条件,并选择发送到刚刚的用户,选择使用的脚本为刚刚创建的ding宕机告警。

四、其他

由于钉钉机器人配置起来比较便捷,其适用于自动化巡检、svn和git的提交、现网版本发布等各种场景。同时由于官方提供的便捷示例,也可以很方便的创建富文本消息。官方同时提供了java和php调用的demo 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值