Zabbix实现QQ报警配置
(说明:这里借助Mojo-Webqq的perl模块,更详细的api参考:https://github.com/sjdy521/Mojo-Webqq/blob/master/API.md)
OS version:CentOS 7
1.依赖环境安装
1.1 安装cpanm包管理工具(如果系统已经安装了cpanm可以忽略此步骤)
a) 方法a:通过cpan
安装cpanm
cpan -i App::cpanminus
b) 方法b:直接在线安装cpanm
(我是通过这个方法安装成功的,第一个方法比较慢,貌似也不成功.)
curl -kL http://cpanmin.us | perl - App::cpanminus
1.2 使用cpanm在线安装Mojo::Webqq
模块
cpanm Mojo::Webqq
1.3 使用cpanm安装邮件依赖模块
cpanm Mojo::SMTP::Client MIME::Lite
(注意:由于国内墙和网络质量的问题,很有可能有些依赖包安装不成功,可以多试几次,或者把没有成功的包单独cpanm装一次,实在没有办法的可以使用集成环境的包: https://github.com/sjdy521/Mojo-ActivePerl)
2.脚本与运行
2.1 QQ登陆脚本(qqlogin.pl)
#!/usr/bin/env perl use Mojo::Webqq; my ($qq,$host,$port,$post_api); $qq = 299866xxxx; #修改为你自己的实际QQ号码 $host = "0.0.0.0"; #发送消息接口监听地址,修改为自己希望监听的地址 $port = 5000; #发送消息接口监听端口,修改为自己希望监听的端口 #$post_api = 'http://xxxx'; #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行 my $client = Mojo::Webqq->new(qq=>$qq); # 配置邮件,发送登录的二维码图片到邮箱中,如果不使用邮箱可以在/tmp下找到对应图片 $client->load("PostQRcode",data=>{ smtp => 'mail.163.com', #邮箱的smtp地址 port => '25', #smtp服务器端口,默认25 from => '[email protected]', #发件人 to => '[email protected]', #收件人 user => '[email protected]', #smtp登录帐号 pass => 'xxxxx', #smtp登录密码 }); $client->login(); #$client->load("ShowMsg"); #接收用户和群消息,没有用,注释掉吧 $client->load("Openqq",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api}); $client->run();
2.2 Zabbix调用脚本(qqclient.sh)
#!/bin/bash # qq号码或者群号 Qnumber=$1 # Openqq插件中定义的host和port API_ADDR="10.61.6.251:5000" # 处理成unicode,并合并告警内容的标题和内容,即$2和$3 message="`echo -e "$2\n$3"|od -t x1 -A n -v -w100000 | tr " " %`" #组装api调用地址 api_url="http://$API_ADDR/openqq/send_message?qq=$Qnumber&content=$message" # 发送群组API参考: # http://$API_ADDR/openqq/send_group_message?gnumber=xx&content=$xx #请求api地址发送群消息 curl $api_url
2.3 测试QQ登陆脚本(qqlogin.pl)
[root@niaoyun home]# perl qqlogin.pl [16/11/14 18:54:43] [info] 当前正在使用 Mojo-Webqq v1.8.7 [16/11/14 18:54:43] [info] 执行插件[ Mojo::Webqq::Plugin::PostQRcode ] [16/11/14 18:54:43] [info] 客户端加载cookie[ /tmp/mojo_webqq_cookie_9763307.dat ] [16/11/14 18:54:43] [info] 初始化 smartqq 客户端参数... [16/11/14 18:54:44] [info] 正在获取登录二维码... [16/11/14 18:54:44] [info] 二维码已下载到本地[ /tmp/mojo_webqq_qrcode_9763307.png ] [16/11/14 18:54:45] [info] 登录二维码已经发送到邮箱: [email protected] [16/11/14 18:54:45] [info] 等待手机QQ扫描二维码... [16/11/14 18:56:21] [info] 检查安全代码... [16/11/14 18:56:22] [info] 获取数据验证参数... [16/11/14 18:56:22] [info] 尝试进行登录(2)... [16/11/14 18:56:22] [info] 帐号(9763307)登录成功 [16/11/14 18:56:22] [info] 清除残留的历史二维码图片 [16/11/14 18:56:22] [info] 更新个人信息... [16/11/14 18:56:23] [info] 更新好友信息... [16/11/14 18:56:23] [info] 更新好友扩展信息... [16/11/14 18:56:23] [info] 更新群列表信息... [16/11/14 18:56:23] [info] 更新群列表扩展信息... [16/11/14 18:56:23] [info] 更新讨论组列表信息... [16/11/14 18:56:24] [info] 执行插件[ Mojo::Webqq::Plugin::Openqq ] [16/11/14 18:56:24] [info] Listening at "http://118.192.155.244:5000" Server available at http://118.192.155.244:5000 [16/11/14 18:56:24] [info] 开始接收消息...
2.4 登陆到邮箱,使用手机QQ扫描二维码登陆webqq
到这里QQ就登陆成功了,接下来会拉取QQ中的好友,群等信息。在有些时候会报502错误,经过询问作者属于正常现象可直接忽略。
2.5 测试zabbix调用脚本(qqclient.sh)
[root@niaoyun home]# bash -x qqclient.sh 619202250 nihao zabbixqq + Qnumber=619202250 + API_ADDR=118.192.155.244:5000 ++ echo -e 'nihao\nzabbixqq' ++ od -t x1 -A n -v -w100000 ++ tr ' ' % + message=%6e%69%68%61%6f%0a%7a%61%62%62%69%78%71%71%0a + api_url='http://118.192.155.244:5000/openqq/send_message?qq=619202250&content=%6e%69%68%61%6f%0a%7a%61%62%62%69%78%71%71%0a' + curl 'http://118.192.155.244:5000/openqq/send_message?qq=619202250&content=%6e%69%68%61%6f%0a%7a%61%62%62%69%78%71%71%0a' {"code":0,"msg_id":13220001,"status":"发送成功"}
看到提示信息,确认脚本配置没有问题了的话就可以去zabbix中配置了。(注:如以上脚本测试有错误,将导致zabbix调取QQ报警无法使用。)
2.5 测试成功之后,使用如下命令把qqlogin.pl脚本放到后台运行.
nohup perl qqlogin.pl &
2.6 查看登陆日志
3.Zabbix告警配置
3.1 打开zabbix_server.conf
,开启AlertScriptsPath
,并重启zabbix
.
... AlertScriptsPath=$PATH/zabbix/alertscripts
3.2 配置media types(报警媒介类型)-Administration-->Media types-->Create media type
3.3 配置用户组与用户-Administration-->Media types-->User Groups-->Create user Grups
至少给予只读权限
在改组添加一个用户
配置该用户的media,send to填写送达的QQ号(群号)
3.4 配置告警action-Configuration-->Action-->Create Action
Action:
Conditions:
Operations:
4.告警测试
4.1 改下trigger触发一下action
4.2 查看消息
- 上一篇: HTTP响应可视化测试工具-httpstat
- 下一篇: Debian8配置SSH允许root登陆