码迷,mamicode.com
首页 > 其他好文 > 详细

Zabbix通过公众平台企业号发送短信

时间:2017-09-12 00:06:20      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:time   自己   urllib2   只读   就会   end   weixin   server   rms   

一、注册企业号【体验号】 

打开页面 http://qydev.weixin.qq.com/try?t=experience   (2016年注册的时候的连接)现在可能变了。进行注册操作,默认有90天的期限。

技术分享

填写相关资料后你会收到一封邮件,进行体验账号激活,如下图:

技术分享

注意,这里激活需要绑定在你的微信号上进行激活,激活后会有如下显示:

技术分享

技术分享

 

 

扫描完成后,进入登陆界面,这里的登陆信息就是你刚刚注册用的邮箱和密码,登入:

技术分享

 

二、配置企业号 

进入企业号后,需要进行相关配置:

A、导入用户

选择通讯录,进入我的企业,添加子部门,我这里添加运维平台部。

技术分享

添加部门后,进行成员添加,也就是后续会受到微信的成员了。

技术分享

新增成员信息填写:

技术分享

这里关机是身份验证信息部分,一定要准确。

B、邀请关注

填写成员后,需要进行要求关注,微信受到邀请链接后,即进行关注。

技术分享

技术分享

技术分享

技术分享

技术分享

D、设定管理员

指定应用的管理员。点击设置-> 权限管理 -> 管理 -> 新建管理组 --> 添加管理员和权限。

技术分享

 

技术分享

 

 

三、API测试 

有了前面的corpID和Sectet后,可以根据官方文档进行API测试。

A.文档阅读链接

http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5

我只读了建立连接、管理通讯录、发送消息。

B、建立连接获取access_token。

这个token是一个有有效时间的密钥用于后续操作认证。

Https请求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

正常情况下就会反馈一个json并得到access_token

C、API测试

技术分享

可以进行很多测试,不过这里需要用到上面提到的corpID和Secret。

我这里只要发送报警短信,而且是文本格式的,所以就只需要进行发送消息测试就OK了。

技术分享

然后就坐等微信受到消息吧。

技术分享

 

 

四、编写脚本结合API进行告警测试 

编写报警脚本,和之前通过短信网关类似,
#!/usr/local/bin/python
#fileencoding:utf-8
import sys
import urllib2
import time
import json
import requests

reload(sys)
sys.setdefaultencoding(utf-8)

title = sys.argv[2]   # 位置参数获取title 适用于zabbix
content = sys.argv[3] # 位置参数获取content 适用于zabbix


class Token(object):
    # 获取token
    def __init__(self, corpid, corpsecret):
        self.baseurl = https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}.format(
            corpid, corpsecret)
        self.expire_time = sys.maxint

    def get_token(self):
        if self.expire_time > time.time():
            request = urllib2.Request(self.baseurl)
            response = urllib2.urlopen(request)
            ret = response.read().strip()
            ret = json.loads(ret)
            if errcode in ret.keys():
                print >> ret[errmsg], sys.stderr
                sys.exit(1)
            self.expire_time = time.time() + ret[expires_in]
            self.access_token = ret[access_token]
        return self.access_token


def send_msg(title, content):
    # 发送消息
    corpid = "88888888888888"  # 填写自己应用的
    corpsecret = "88888888888888888888888" # 填写自己应用的
    qs_token = Token(corpid=corpid, corpsecret=corpsecret).get_token()
    url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}".format(
        qs_token)
    payload = {
        "touser": "@all",
        "msgtype": "text",
        "agentid": "4",
        "text": {
                   "content": "{0}\n {1}".format(title, content)

        },
        "safe": "0"
    }
    ret = requests.post(url, data=json.dumps(payload, ensure_ascii=False))
    print ret.json()

if __name__ == __main__:
    # print title, content
  send_msg(title, content)

 

脚本命名为wexin_sendms.py,存放位置为zabbix报警目录,我这里为

/usr/lib/zabbix/alertscripts,具体设置在zabbix_server里进行设置。然后在zabbix的web界面进行配置。

技术分享

技术分享

技术分享

测试微信报警接收,我这里停掉了线上一台puppetmaster的agnet服务,会报出一个5分钟不可达报警。

 技术分享

技术分享

 

至此,微信告警测试完毕。

Zabbix通过公众平台企业号发送短信

标签:time   自己   urllib2   只读   就会   end   weixin   server   rms   

原文地址:http://www.cnblogs.com/skyflask/p/7507938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!