之前觉得没必要写这个,这两天有同学问到zabbix关于微信告警的相关问题,于是昨天就注册了一个微信公众号,当做学习交流一下;
首先;我们要明白我们创建微信公众号发送消息到底需要哪些参数,这样我们再创建时候注意生成就可以了,需要的有如下几个参数:
1、通讯用户:touser
2、用于生成token的:corpid,secret
3、用于ID
开始操作:企业号注册连接:https://qy.weixin.qq.com/cgi-bin/loginpage
1、点击注册,然后选择团队主从即可:
2、创建企业号名称之后,默认需要创建一个通信账号,要是没有可以点击通讯录创建(touser):
3、点击应用中心,新建应用,消息应用(获取应用ID):
可以看到已经生成应用ID:
4、开始添加应用权限,生成corpid,secret:
点击设置--》权限管理--》进来分组管理的名称和用户用xiaoluo即可:
创建之后可以查看看到corpid和secret了:
然后把应用权限和通讯录权限都添加进去即可,不然可能会报权限错误:
上面的步骤修改通讯录权限,添加我们的用户即可:下面我们用curl来测试一下是否可以
1、通过corpid和secret获取token,发送get请求:
|
1
2
|
[root@monitor weixin]# curl "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wx026430a7e676a190&corpsecret=tbb9lAJRS-tY96qzH0q8hcecCx563GceEKXTWmrvUQYXb52v90AeVBNxBP1O2dq1"
{"access_token":"-z6APpKnSGFgPHNjPgX24Nu9ph7uexsFQOjj2-I8YWZ0F-9_CJ5CgF2WnkX901Lu","expires_in":7200}
|
2、通过tokenid 发送数据:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@monitor weixin]
# cat port_data.py
#!/usr/bin/env python
import
requests
url
=
"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=WkLoCGsyUk7ItDtwG2P5KqX6EPvhIXlzgc4BbUAROAfjAJBD1ZRebeuIOG-_ylUF"
data
=
{
"touser"
:
"xiaoluo"
,
"msgtype"
:
"text"
,
"agentid"
:
1
,
"text"
: {
"content"
:
"hello ,xiaoluoge"
},
"safe"
:
"0"
}
r
=
requests.post(url,json
=
data)
print
r.status_code
print
r.content
|
执行结果:
|
1
2
3
|
[root@monitor weixin]
# python port_data.py
200
{
"errcode"
:
0
,
"errmsg"
:
"ok"
}
|
到此没问题的话,那么说明微信公众号的收发数据功能已经做好了,接下来就是设置zabbix的步骤了
1、添加媒介,设置成我们的脚本:
备注:{ALERT.SENDATO}和{ALERT.MESSAGE}是两个内置宏。
2、创建动作和执行操作:
3、用户添加媒介:
#备注:xiaoluo是传参的第一个参数,就是我们创建的用户。
4、脚本:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
[root@monitor alertscripts]
# cat post_data.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
requests
import
json
import
sys
class
weChat:
def
__init__(
self
,Corpid,Secret):
url
=
'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s'
%
(Corpid,Secret)
res
=
self
.url_req(url)
self
.token
=
res[
"access_token"
]
def
url_req(
self
,url):
req
=
requests.get(url)
res
=
json.loads(req.text)
return
res
def
send_message(
self
,user,content):
url
=
"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s"
%
self
.token
data
=
{
"touser"
: user,
"msgtype"
:
"text"
,
"agentid"
:
1
,
"text"
: {
"content"
: content
},
"safe"
:
"0"
}
res
=
requests.post(url,json
=
data)
if
json.loads(res.content)[
'errmsg'
]
=
=
'ok'
:
return
"send message sucessed"
else
:
return
res
if
__name__
=
=
'__main__'
:
user
=
sys.argv[
1
]
content
=
sys.argv[
2
]
get_token
=
weChat(
id
,Secret)
print
get_token.send_message(user,content)
|
5、执行效果:
zabbix视频请移步:http://www.roncoo.com/details/fb3050a5b34b42f39ccad83ebebc89c1
zabbix自动化课程目录(需求更新中):
1、zabbix生产环境如何使用
2、saltstack批量部署zabbix_agent
3、zabbix API简单使用讲解
4、web UI讲解
5、开始监控之添加一个简单的linux监控
6、zabbix 强大的内置key讲解
7、内置key的使用、 端口、用户数、磁盘读取状态出图
8、trigger表达式学习,实现用户登录数,端口检查告警
9、zabbix邮件告警设置与维护周期
10、zabbix自定义Key添加,tcp状态模板编写
11、自定义监控之、监控nginx解析与实现
12、自定义监控之php-fpm监控
13、自定义监控之mysql状态监控
14、自定义监控之缓存服务器memcached,redis监控
15、自动化之saltstack管理zabbix,批量推送key生效
16、zabbix自动发现绑定删除模板,自动注册
17、zabbix lld发现讲解以及端口发现监控告警出图
18、zabbix lld 发现web站点以及批量获取状态码
19、zabbix lld复习和监控磁盘的运行状况
20、zabbix生成环境规范和按月生成报表资源统计
21、微信公众号告警















