Linux----------zabbix监控-微信、钉钉告警
目录
一,zabbix配置微信告警
写先声明:本人完全python小白,脚本内容有许多看不懂,这都不影响接下来的操作,写这个就是为了复习记忆,也多谢官网推荐的,用于WeChat报警的python脚本,主要是图文教程,配合作者火星小刘的README和脚本,更容易学习.
https://blog.csdn.net/wenhs5479/article/details/90514159
注意事项等,作者火星小刘的README中有,下面开始教程正文
1.1 设置微信企业号
https://work.weixin.qq.com/?from=qyh_redirect
1.2.1 设置微信通讯录
-
登录后台
-
通讯录中添加部门和人员
-
记录部门ID
1.2.2 创建新的应用
-
创建应用
-
设置应用接受人
-
查看监控服务,记录应用ID
1.2.3 应用权限管理
1.2.4 收集微信相关信息
- 1.记录应用ID (点击应用于小程序-监控服务)
- 2.记录CorpID与Secret (点击我的企业-企业信息)
- 3.记录子部门(运维部)ID (点击通讯录-运维部-设置)
1.3 微信脚本
1.3.1 安装依赖
(一)
yum -y install python-pip python-wheel python-setuptools
yum upgrade python-setuptools
pip install requests
pip install --upgrade requests
(二)
wget https://pypi.python.org/packages/c3/38/d95ddb6cc8558930600be088e174a2152261a1e0708a18bf91b5b8c90b22/requests-2.18.3.tar.gz
tar zxvf requests-2.18.3.tar.gz
cd requests-2.18.3
python setup.py build
python setup.py install
1.3.2 下载安装脚本
git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
cp Zabbix-Alert-WeChat/wechat.py /etc/zabbix/alertscripts
chmod +x /usr/local/etc/scripts/wechat.py
chown zabbix.zabbix /usr/local/etc/scripts/wechat.py
1.3.3 填写微信脚本参数
#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
#auther:火星小刘(出自这位大佬的GitHub库,链接在开头)
import requests,sys,json
import urllib3
urllib3.disable_warnings()
reload(sys)
sys.setdefaultencoding('utf-8')
def GetTokenFromServer(Corpid,Secret):
Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
Data = {
"corpid":Corpid,
"corpsecret":Secret
}
r = requests.get(url=Url,params=Data,verify=False)
print(r.json())
if r.json()['errcode'] != 0:
return False
else:
Token = r.json()['access_token']
file = open('/tmp/zabbix_wechat_config.json', 'w')
file.write(r.text)
file.close()
return Token
def SendMessage(User,Agentid,Subject,Content):
try:
file = open('/tmp/zabbix_wechat_config.json', 'r')
Token = json.load(file)['access_token']
file.close()
except:
Token = GetTokenFromServer(Corpid, Secret)
n = 0
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
Data = {
"touser": User, # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
"totag": Tagid, # 企业号中的标签id,群发使用(推荐)
"toparty": Partyid, # 企业号中的部门id,群发时使用。
"msgtype": "text", # 消息类型。
"agentid": Agentid, # 企业号中的应用id。
"text": {
"content": Subject + '\n' + Content
},
"safe": "0"
}
r = requests.post(url=Url,data=json.dumps(Data),verify=False)
while r.json()['errcode'] != 0 and n < 4:
n+=1
Token = GetTokenFromServer(Corpid, Secret)
if Token:
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
r = requests.post(url=Url,data=json.dumps(Data),verify=False)
print(r.json())
return r.json()
if __name__ == '__main__':
User = sys.argv[1] # zabbix传过来的第一个参数{ALERT.SENDTO}
Subject = str(sys.argv[2]) # zabbix传过来的第二个参数{ALERT.SUBJECT}
Content = str(sys.argv[3]) # zabbix传过来的第三个参数{ALERT.MESSAGE}
Corpid = "企业Id" # CorpID是企业号的标识
Secret = "在应用里面" # Secret是管理组凭证密钥
Tagid = "zabbix" # 通讯录标签ID(这个没搞懂,随便写的通讯录标签名)
Agentid = "自己修改" # 应用ID
Partyid = "2" # 部门ID,如果是1,则是技术部,那么技术部下面的,都可以收到告警,显然不合适
Status = SendMessage(User,Agentid,Subject,Content)
print Status
1.4 添加zabbix示警媒介
1.5 添加用户-示警媒介
收件人为微信企业号通讯录内的用户账号
1.6 添加到动作
1.7 自行测试
二、钉钉告警
2.1 配置钉钉
- 下载钉钉后创建群组
- 添加机器人实现报警
2.2 编写告警脚本
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
#api_url后跟告警机器人的webhook
api_url = "上图中的webhook的链接"
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
"手机号" #@群里的一个人
],
"isAtAll": False #@所有人为True,
}
}
print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
//赋予执行权限
chown zabbix.zabbix ding.py
chmod +x ding.py
- 测试
[root@zabbix scripts]# ./ding.py 这是测试
{"errcode":0,"errmsg":"ok"}
[root@zabbix scripts]# ./ding.py 这是测试
{"errcode":0,"errmsg":"ok"}
2.3 添加示警媒介
2.4 添加用户-示警媒介
和上方微信告警一样,只需要修改通知介质
2.5 添加到动作
和上方微信告警一样,只需要修改固定那几个参数