当前位置: 首页 > news >正文

搭建zabbix4.4.6以及企业微信告警功能实现

zabbix服务器告警通过企业微信群机器人通知

企业微信

添加一个群聊机器人
image.png
服务器告警机器人
image.png

脚本准备

在宿主机/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

这时候肯定会报错
image.png
在宿主机执行

yum install python-requests -y

在尝试一下
image.png

可以了~

image.png

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模块
image.png

缺少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

再次测试发送消息
image.png

成功了~

zabbix web页面配置

触发器告警通知
创建媒体类型
image.png
配置参数

收件人:
{ALERT.SENDTO}
主题:
{ALERT.SUBJECT}
消息:
{ALERT.MESSAGE}

image.png
配置 -> 动作
image.png
image.png
image.png
然后更新
最后给相关用户配置报警媒介
image.png
还可以测试一下之前配置的
image.png

没问题的就ok了~

最后的效果
image.png

相关文章:

  • 文件输入与输出io
  • SpringBoot整合Docker实现一次构建到处运行
  • 程序员眼中的Linux操作系统——初识指令
  • process.env.NODE_ENV与@vue/cli-service及其.env.*默认外部环境配置文件之跨域部署
  • MySQL:用户权限和语言接口
  • 2022年广西壮族自治区中职网络安全技能竞赛“Linux操作系统渗透测试详解”
  • 沉睡者 - 抖音中视频计划横版16:9视频制作教程
  • 强大的包管理器Poetry
  • MFC Windows 程序设计[304]之文件夹的枚举(附源码)
  • 【ArcGIS微课1000例】0033:地图点状标记符号设计教程
  • 神经网络中的算法-BN算法
  • SpringBoot接收参数的几种常用方式
  • Linux--权限
  • ESP32上手指南
  • 多径信道下通过LMS均衡算法提高通信质量——详细版
  • [Vue CLI 3] 配置解析之 css.extract
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 10个确保微服务与容器安全的最佳实践
  • interface和setter,getter
  • Java 最常见的 200+ 面试题:面试必备
  • js操作时间(持续更新)
  • js如何打印object对象
  • PHP 的 SAPI 是个什么东西
  • React-flux杂记
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • socket.io+express实现聊天室的思考(三)
  • Spring Cloud Feign的两种使用姿势
  • 翻译--Thinking in React
  • 好的网址,关于.net 4.0 ,vs 2010
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用Gradle第一次构建Java程序
  • 我有几个粽子,和一个故事
  • 鱼骨图 - 如何绘制?
  • 自定义函数
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​插件化DPI在商用WIFI中的价值
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​业务双活的数据切换思路设计(下)
  • #Lua:Lua调用C++生成的DLL库
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $refs 、$nextTic、动态组件、name的使用
  • (九十四)函数和二维数组
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • ***详解账号泄露:全球约1亿用户已泄露
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 连接数据库,通过数据库生成Modell
  • .net core控制台应用程序初识
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .sdf和.msp文件读取
  • ??在JSP中,java和JavaScript如何交互?
  • [1127]图形打印 sdutOJ
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)