Zabbix结合Mojo-Webqq实现告警
2018-09-14 15:10
621 查看
安装方法
推荐使用cpanm在线安装或升级Mojo::Webqq模块, 如果使用docker方式请参见Docker镜像安装及使用方法
1.安装perl
安装之前请先确认下你的系统是否已经安装了Perl,因为除了windows,其他大部分的平台默认都可能已经预装过
并且你的Perl版本至少5.10.1+,推荐5.14+
Perl官网下载页面 有包含Unix/Linux、Mac OS X、Windows多平台比较全面详细的安装说明
建议大家尽量选择Binaries(二进制预编译)的版本,安装即可使用,比较方便
注意:
Mojo-CentosPerl是基于Centos系统编译打包而成,适合Centos6.5以上的x86_64系统
Mojo-ActivePerl是基于ActivePerl打包的而成,适用于linux x86_64系统,并且系统glibc 2.15+
Mojo-StrawberryPerl是基于StrawberryPerl精简打包而成,适用于windows 32位/64位系统
2.安装cpanm包管理工具(如果系统已经安装了cpanm可以忽略此步骤)
方法a: 通过cpan安装cpanm
$ cpan -i App::cpanminus
方法b: 直接在线安装cpanm
$ curl -kL https://cpanmin.us | perl - App::cpanminus 官方服务器在国外,如果无法访问,可以选择下面的命令: $ curl http://share-10066126.cos.myqcloud.com/cpanm.pl|perl - App::cpanminus
3.使用cpanm在线安装 Mojo::Webqq 模块(如果系统已经安装了该模块,执行此步骤会对模块进行升级)
$ cpanm Mojo::Webqq
如果安装过程中一直提示下载失败,很可能是因为访问到国外服务器网络比较差
这种情况下可以尝试按如下方式手动指定国内的镜像站点
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Webqq
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::SMTP::Client MIME::Lite
4.安装失败可能有帮助的解决方法
如果你运气不佳,通过cpanm没有一次性安装成功,这里提供了一些可能有用的信息
在安装 Mojo::Webqq 的过程中,cpan或者cpanm会帮助我们自动安装很多其他的依赖模块
在众多的依赖模块中,安装经常容易出现问题的主要是 IO::Socket::SSL
IO::Socket::SSL 主要提供了 https 支持,在安装过程中可能会涉及到SSL相关库的编译
对于 Linux 用户,通常采用的是编译安装的方式,系统缺少编译安装必要的环境,则会导致编译失败
对于 Windows 用户,由于不具备良好的编译安装环境,推荐采用一些已经打包比较全面的Perl运行环境
例如比较流行的 strawberryperl 或者 activeperl 的最新版本都默认包含 Mojo::Webqq 的核心依赖模块
RedHat/Centos:
$ yum install -y openssl-devel
Ubuntu:
$ sudo apt-get install libssl-dev
搞定了编译和运行环境之后,再重新回到 步骤2 安装Mojo::Webqq即可
如何使用
5.我对Perl很熟悉,是一个专业的Perler
该项目是一个纯粹的Perl模块,已经发布到了cpan上,请仔细阅读 Mojo::Weqq 模块的使用文档
除此之外,你可以看下 demo 目录下的更多代码示例
6.我是对Perl不熟悉,是一个其他语言的开发者,只对提供的消息发送/接收接口感兴趣
可以直接把如下代码保存成一个源码文件(必须是UTF-8编码),使用 perl 解释器来运行
上述代码保存成 qqlogin.pl 文件,保存路径为/usr/local/zabbix/share/zabbix/alertscripts,然后使用 perl 来运行,就会完成QQ登录并在本机产生一个监听指定地址端口的 http server
$ perl qqlogin.pl
7.测试qqlogin.pl登录脚本
perl qqlogin.pl
8.测试发送QQ消息脚本
cat qqclient.sh
qqclient.sh保存路径为/usr/local/zabbix/share/zabbix/alertscripts
测试
bash -x qqclient.sh 12345678 Hello Linux!
+ qq=12345678
+ server=公网IP
+ port=5000
++ echo -e 'Hello\nLinux!'
++ od -t x1 -A n -v -w100000
++ tr ' ' %
+ message=%48%65%6c%6c%6f%0a%4c%69%6e%75%78%21%0a
+ api_url=http://公网IP:5000/openqq/send_friend_message
+ parameter='uid=12345678&content=%48%65%6c%6c%6f%0a%4c%69%6e%75%78%21%0a'
+ curl -d 'uid=12345678&content=%48%65%6c%6c%6f%0a%4c%69%6e%75%78%21%0a' http://公网IP:5000/openqq/send_friend_message
{"code":0,"id":36530001,"status":"发送成功"}
9.使用pm2启动托管qqlogin.pl,并添加防火墙规则
pm2下添加qqlogin.pl启动
cd /root/.pm2
cat qqlogin.json
pm2 start qqlogin.json && pm2 startup
公网IP之外的IP访问5000端口,直接DROP
iptables -A INPUT ! -s 公网IP -m tcp -p tcp --dport 5000 -j DROP
10.zabbix告警媒介配置
zabbix报警脚本路径为“/usr/local/zabbix/share/zabbix/alertscripts”,上步qqclient.sh及qqlogin.pl均已保存到该路径下
告警媒介配置
管理-->报警媒介类型-->创建报警媒介
绑定报警媒介和用户
管理-->用户-->Admin-->报警媒介-->添加
监控项和触发器和动作和用户的关系
先定义监控项,然后定义触发器,触发器设置阈值,触发器和动作绑定,如果监控项的的值超过的触发器设定的阈值,触发器被触发然后执行动作,也就是发送报警信息给某个用户
用户和报警媒介的关系
先配置一个报警媒介,也就是接收报警的方法(QQ消息或者sendmail邮件),然后报警媒介和某个用户绑定,动作把报警信息发送到某个用户,某个用户接收报警信息的方法就是QQ或者邮件
绑定动作到用户
配置-->动作-->操作
可以使用QQ接受告警消息了
推荐使用cpanm在线安装或升级Mojo::Webqq模块, 如果使用docker方式请参见Docker镜像安装及使用方法
1.安装perl
安装之前请先确认下你的系统是否已经安装了Perl,因为除了windows,其他大部分的平台默认都可能已经预装过
并且你的Perl版本至少5.10.1+,推荐5.14+
Perl官网下载页面 有包含Unix/Linux、Mac OS X、Windows多平台比较全面详细的安装说明
建议大家尽量选择Binaries(二进制预编译)的版本,安装即可使用,比较方便
平台 | 推荐选择 | 下载地址 |
Windows | 1. StrawberryPerl 2. ActivePerl 3. Mojo-StrawberryPerl | StrawberryPerl下载地址 Mojo-StrawberryPerl下载地址 ActivePerl下载地址 |
Linux | 1. 系统自带 2. yum/apt等包管理器 3. 官方源码编译 4. Mojo-CentosPerl 5. ActivePerl 6. Mojo-ActivePerl 7. DWIM-Perl | Mojo-CentosPerl下载地址 ActivePerl下载地址 Mojo-ActivePerl下载地址 DWIM-Perl下载地址 |
Mac | 1. 系统自带 2. ActivePerl | ActivePerl下载地址 |
Mojo-CentosPerl是基于Centos系统编译打包而成,适合Centos6.5以上的x86_64系统
Mojo-ActivePerl是基于ActivePerl打包的而成,适用于linux x86_64系统,并且系统glibc 2.15+
Mojo-StrawberryPerl是基于StrawberryPerl精简打包而成,适用于windows 32位/64位系统
2.安装cpanm包管理工具(如果系统已经安装了cpanm可以忽略此步骤)
方法a: 通过cpan安装cpanm
$ cpan -i App::cpanminus
方法b: 直接在线安装cpanm
$ curl -kL https://cpanmin.us | perl - App::cpanminus 官方服务器在国外,如果无法访问,可以选择下面的命令: $ curl http://share-10066126.cos.myqcloud.com/cpanm.pl|perl - App::cpanminus
3.使用cpanm在线安装 Mojo::Webqq 模块(如果系统已经安装了该模块,执行此步骤会对模块进行升级)
$ cpanm Mojo::Webqq
如果安装过程中一直提示下载失败,很可能是因为访问到国外服务器网络比较差
这种情况下可以尝试按如下方式手动指定国内的镜像站点
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Webqq
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::SMTP::Client MIME::Lite
4.安装失败可能有帮助的解决方法
如果你运气不佳,通过cpanm没有一次性安装成功,这里提供了一些可能有用的信息
在安装 Mojo::Webqq 的过程中,cpan或者cpanm会帮助我们自动安装很多其他的依赖模块
在众多的依赖模块中,安装经常容易出现问题的主要是 IO::Socket::SSL
IO::Socket::SSL 主要提供了 https 支持,在安装过程中可能会涉及到SSL相关库的编译
对于 Linux 用户,通常采用的是编译安装的方式,系统缺少编译安装必要的环境,则会导致编译失败
对于 Windows 用户,由于不具备良好的编译安装环境,推荐采用一些已经打包比较全面的Perl运行环境
例如比较流行的 strawberryperl 或者 activeperl 的最新版本都默认包含 Mojo::Webqq 的核心依赖模块
RedHat/Centos:
$ yum install -y openssl-devel
Ubuntu:
$ sudo apt-get install libssl-dev
搞定了编译和运行环境之后,再重新回到 步骤2 安装Mojo::Webqq即可
如何使用
5.我对Perl很熟悉,是一个专业的Perler
该项目是一个纯粹的Perl模块,已经发布到了cpan上,请仔细阅读 Mojo::Weqq 模块的使用文档
除此之外,你可以看下 demo 目录下的更多代码示例
6.我是对Perl不熟悉,是一个其他语言的开发者,只对提供的消息发送/接收接口感兴趣
可以直接把如下代码保存成一个源码文件(必须是UTF-8编码),使用 perl 解释器来运行
#!/usr/bin/env perl use Digest::MD5; use Mojo::Webqq; my ($host,$port,$post_api); # $host = "0.0.0.0"; #发送消息接口监听地址,没有特殊需要请不要修改 $port = 5000; #发送消息接口监听端口,修改为自己希望监听的端口 #$post_api = 'http://xxxx'; #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行 # my $client = Mojo::Webqq->new(login_type=>'login',account=>账号,pwd=>Digest::MD5::md5_hex('密码') ); $client->load("ShowMsg"); $client->load("Openqq",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api}); $client->run();
上述代码保存成 qqlogin.pl 文件,保存路径为/usr/local/zabbix/share/zabbix/alertscripts,然后使用 perl 来运行,就会完成QQ登录并在本机产生一个监听指定地址端口的 http server
$ perl qqlogin.pl
7.测试qqlogin.pl登录脚本
perl qqlogin.pl
[18/01/26 18:18:44] [info] 当前正在使用 Mojo-Webqq v2.1.7 [18/01/26 18:18:44] [info] 获取最新公告信息... [18/01/26 18:18:45] [info] ---------------------------------------- [18/01/26 18:18:45] [info] 以下是最新公告: [18/01/26 18:18:45] [info] [18/01/26 18:18:45] [info] 2018-01-22 Mojo::Webqq v2.1.7 [18/01/26 18:18:45] [info] 支持账号密码登录,参考 https://github.com/sjdy521/Mojo-Webqq/issues/183 [18/01/26 18:18:45] [info] [18/01/26 18:18:45] [info] 2018-01-15 Mojo::Webqq v2.1.6 [18/01/26 18:18:45] [info] 解决了容易掉线,需要频繁扫码的问题,建议大家尽快升级 [18/01/26 18:18:45] [info] ---------------------------------------- [18/01/26 18:18:45] [info] 执行插件[ Mojo::Webqq::Plugin::ShowMsg ] [18/01/26 18:18:45] [info] 执行插件[ Mojo::Webqq::Plugin::Openqq ] [18/01/26 18:18:45] [info] 插件[Mojo::Webqq::Plugin::Openqq]监听地址: [ http://0.0.0.0:5000 ] [18/01/26 18:18:45] [info] Listening at "http://0.0.0.0:5000" [18/01/26 18:18:45] [info] 初始化 smartqq 客户端... [18/01/26 18:18:46] [info] 正在检查登录状态... [18/01/26 18:18:46] [info] 检查结果:需要重新登录(2) [18/01/26 18:18:46] [info] 开始账号密码方式登录... [18/01/26 18:18:46] [info] 初始化 smartqq 客户端... [18/01/26 18:18:46] [info] 正在检查登录状态... [18/01/26 18:18:46] [info] 检查结果:登录状态有效,尝试直接恢复登录... [18/01/26 18:18:46] [info] 检查安全代码... [18/01/26 18:18:46] [info] 获取数据验证参数... [18/01/26 18:18:47] [info] 正在进行登录(2)... [18/01/26 18:18:47] [info] 账号密码方式登录成功 [18/01/26 18:18:47] [info] 帐号(123456789)登录成功 [18/01/26 18:18:47] [info] 更新个人信息... [18/01/26 18:18:47] [info] 更新好友信息... [18/01/26 18:18:47] [info] 更新好友扩展信息... [18/01/26 18:18:50] [info] 更新群列表信息... [18/01/26 18:18:50] [info] 更新讨论组列表信息... [18/01/26 18:18:50] [info] 开始接收消息...
8.测试发送QQ消息脚本
cat qqclient.sh
qqclient.sh保存路径为/usr/local/zabbix/share/zabbix/alertscripts
#!/bin/bash #好友的QQ号码 qq=$1 #Mojoqq服务器地址与端口号 server="公网IP" port="5000" #消息内容处理下编码,用于合并告警内容的标题和内容,即$2和$3 message=`echo -e "$2\n$3"|od -t x1 -A n -v -w100000 | tr " " %` #调用的api接口 api_url="http://$server:$port/openqq/send_friend_message" parameter="uid=$qq&content=$message" #post方式提交请求发送QQ好友消息 curl -d $parameter $api_url
测试
bash -x qqclient.sh 12345678 Hello Linux!
+ qq=12345678
+ server=公网IP
+ port=5000
++ echo -e 'Hello\nLinux!'
++ od -t x1 -A n -v -w100000
++ tr ' ' %
+ message=%48%65%6c%6c%6f%0a%4c%69%6e%75%78%21%0a
+ api_url=http://公网IP:5000/openqq/send_friend_message
+ parameter='uid=12345678&content=%48%65%6c%6c%6f%0a%4c%69%6e%75%78%21%0a'
+ curl -d 'uid=12345678&content=%48%65%6c%6c%6f%0a%4c%69%6e%75%78%21%0a' http://公网IP:5000/openqq/send_friend_message
{"code":0,"id":36530001,"status":"发送成功"}
9.使用pm2启动托管qqlogin.pl,并添加防火墙规则
pm2下添加qqlogin.pl启动
cd /root/.pm2
cat qqlogin.json
{ "apps": { "name": "perl qqlogin.pl", "cwd": "/usr/local/zabbix/share/zabbix/alertscripts", "script": "./qqlogin.pl", "exec_interpreter": "perl", "min_uptime": "60s", "max_restarts": 30, "watch": true }
pm2 start qqlogin.json && pm2 startup
公网IP之外的IP访问5000端口,直接DROP
iptables -A INPUT ! -s 公网IP -m tcp -p tcp --dport 5000 -j DROP
10.zabbix告警媒介配置
zabbix报警脚本路径为“/usr/local/zabbix/share/zabbix/alertscripts”,上步qqclient.sh及qqlogin.pl均已保存到该路径下
告警媒介配置
管理-->报警媒介类型-->创建报警媒介
绑定报警媒介和用户
管理-->用户-->Admin-->报警媒介-->添加
监控项和触发器和动作和用户的关系
先定义监控项,然后定义触发器,触发器设置阈值,触发器和动作绑定,如果监控项的的值超过的触发器设定的阈值,触发器被触发然后执行动作,也就是发送报警信息给某个用户
用户和报警媒介的关系
先配置一个报警媒介,也就是接收报警的方法(QQ消息或者sendmail邮件),然后报警媒介和某个用户绑定,动作把报警信息发送到某个用户,某个用户接收报警信息的方法就是QQ或者邮件
绑定动作到用户
配置-->动作-->操作
可以使用QQ接受告警消息了
相关文章推荐
- zabbix自动发现结合shell实现自动发现占用内存最大top10进程并监控其资源
- zabbix3.0 安装方法,一键实现短信、电话、微信、APP 告警
- 利用微信公众号实现zabbix告警
- zabbix实现微信公众号告警
- zabbix 实现短信告警
- Zabbix-3.0.3 实现微信(WeChat)告警
- zabbix实现微信告警功能
- Zabbix实现告警分级
- Zabbix-3.2.3实现微信(WeChat)告警
- Zabbix3.2.9QQ群消息实现告警
- OneAlert实现zabbix全方位告警
- CMDB机柜平台结合zabbix告警展示
- Zabbix集成OneAlert实现短信、邮件、微信、电话、App告警
- Zabbix实现微信告警
- Zabbix 集成 OneAlert 实现全方位告警
- Zabbix-3.0.3实现微信(WeChat)告警
- Zabbix实现微信告警
- Zabbix 实现微信短信告警
- 基于树莓派(Raspberry Pi)平台的MQ-2烟雾报警系统以及结合Zabbix监控的实现(一)
- Zabbix-3.0.3实现微信(WeChat)告警