zabbix服务器告警通过企业微信群机器人通知
企业微信
添加一个群聊机器人
服务器告警机器人
脚本准备
在宿主机/usr/lib/zabbix/alertscripts/路径下创建weixin.py
#先创建好文件夹
vim usr/lib/zabbix/alertscripts/weixin.py
注意:
#!/usr/bin/env python 或者 #!/usr/bin/env python3 根据对应版本映入
根据自己python对应的版本,不然会报错
#!/usr/bin/env python3
#_*_coding:utf-8 _*_
import requests,sys,json,time
import urllib3
urllib3.disable_warnings()
def SendMessageURL(User,Subject,Messages):
###机器人的Webhook
URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
HEADERS = {"Content-Type": "application/json"}
Data = {
"msgtype": "markdown",
"markdown": {
"content": "# ...... \n <font color=\"warning\">%s</font> \n <font color=\"info\">%s</font> \n <@%s>"% (Subject,Messages,User),
#"mentioned_list" : [User],
#"content": \<font color="warning">Subject</font> \n Messages,
#"mentioned_list" :[User],
###因为是故障告警群,所以需要@all,这个看自己选择
"mentioned_list" :[User,"@all"]
#"mentioned_mobile_list" : ["13800000000","@all"]
}
}
r = requests.post(url=URL, headers=HEADERS, json=Data, verify=False)
print(r.json())
if __name__ == "__main__":
SENDTO = str(sys.argv[1])
SUBJECT = str(sys.argv[2])
MESSAGE = str(sys.argv[3])
Status = str(SendMessageURL(SENDTO,SUBJECT,MESSAGE))
print (Status)
可以查看宿主机pyhton
python -V
Python 2.7.5
测试一下脚本有没有问题
python weixin.py fuwuqi wusha @gaojinxinxi
这时候肯定会报错
在宿主机执行
yum install python-requests -y
在尝试一下
可以了~
ok~ 脚本没有问题
宿主机脚本拷贝到容器对应目录
docker cp /usr/lib/zabbix/alertscripts/weixin.py zabbix:/usr/lib/zabbix/alertscripts/
进入容器查看脚本
docker exec -it zabbix bash
ls -l weixin.py
在容器中执行下发送命令…(肯定报错,没有对应的python环境),跟之前一样没有导入requests模块
缺少requests模块,通过pip去安装
#安装 GCC等工具 操作都在根目录
apk add build-base
#编译时的依赖库
apk add --no-cache -U zlib-dev //安装 zlib-devel
apk add --no-cache -U openssl-dev //安装openssl-devel
#命令下载
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
#解压:
tar -xvf Python-3.7.6.tgz
#进入源码根目录:
cd Python-3.7.6
#配置源码生成
makefile
#加上此选项会安装pip工具
./configure --enable-optimizations --with-ensurepip=install
#编译:
make
#安装:
make install
#由于执行configure时没有指定安装路径(--prefix=/opt/Python),所以安装到默认路径/usr/local/bin
cd /usr/local/bin
#建立软连接,方便执行
ln -s python3.5 python
#第二种方式
#添加payth3
apk add python3
#下载pip
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
现在就可以通过pip命令来下载requests模块
pip install requests
再次测试发送消息
成功了~
zabbix web页面配置
触发器告警通知
创建媒体类型
配置参数
收件人:
{ALERT.SENDTO}
主题:
{ALERT.SUBJECT}
消息:
{ALERT.MESSAGE}
配置 -> 动作
然后更新
最后给相关用户配置报警媒介
还可以测试一下之前配置的
没问题的就ok了~
最后的效果