ZABBIX使用QQ报警(更新Mojo::web)

原文出自51cto。模块改变,在zabbix中文社区群(62239409)大家帮助下修改完成

安装依赖库

yum install mysql mysql-server mysql-devel mysql-libs mysql-connector-odbc openssl openssl-devel httpd mod_ssl mod_perl mod_auth_mysql gcc gcc-c++ autoconf glibc glibc-common gd gd-devel libjpeg libjpeg-devel libpng libpng-devel rrdtool rrdtool-devel rrdtool-php libjpeg-turbo net-snmp-devel curl-devel unixODBC-devel OpenIPMI-devel java-devel libjpeg-turbo-devel libdbi libdbi-devel libdbi-drivers libdbi-dbd-mysql freetype libpng fontconfig pixman cairo harfbuzz pango php php-gd php-devel libmcrypt fontconfig libxml2 jpeg-6b freetype libpng mutt php-libxml php-mcrypt php-mysql php-mysqli php-pdo-mysql php-zip php-zlib php-xml php-xmlrpc php-bcmath mariadb mariadb-server mariadb-devel xinetd libev php-fpm php-pear php-mbstring php-ldap ssh2 php-pecl-ssh2 php-devel php-pear libssh2 libssh2-devel openldap openldap-devel nmap traceroute glib2 glib2-devel wget dialog unzip php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcryt nano net-snmp-utils perl cpan -y

接下来是要启动server端的login.pl脚本

// 需要perl

# yum –y install perl cpan

使用下列命令安装的时候会要求设置,一路回车,最后一个问答是镜像站点设置,输入以下地址(貌似以后每次用到cpan安装模块都会要求设置一次才会工作)

ftp://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/

http://mirrors.hust.edu.cn/CPAN/

以下虚线内只是cpan的常规使用说明,与本文无关

-----------------------------------------------------------------------

cpan的配置文件: /usr/lib/perl5/5.8.8/CPAN/Config.pm

cpan>h
获得帮助 
cpan>m
列出CPAN上所有模块的列表 

CPAN> d /bioperl/
查询有关bioperl的模块

CPAN> install modulename
安装指定的模块

CPAN>o conf init
如要重新配置CPAN,可先进入CPAN,然后在CPAN命令行(即CPAN>)键入以下指令:

退出 
cpan>q

可以更改urlist改变镜像站点.

如果需要重新配置CPAN,输入:
#cpan
进入cpan后,输入:
#CPAN>o conf init

安装perl组件出错:
/usr/bin/make — NOT OK
Running make test
Can’t test without successful make
Running make install
make had returned bad status, install seems impossible
一.可以尝试
#cpan
cpan>o conf make /usr/bin/make
cpan>o conf commit
cpan>exit
然后用perl命令再安装一下该组件,看能否成功。
二.原因也可能是默认缓存/root/.cpan中的数据损坏rm -rf ~/.cpan删除后在perl -MCPAN -e shell中执行reload index然后执行install Bundle::CPAN最后执行reload CPAN即可正常通过命令行install MODULES

http://it.chinawin.net/softwaredev/article-3b0.html
如何卸载perl模块

-----------------------------------------------------------------------------

// 下面涉及的模块基本都需要安装,安装过程很慢,需要输入”yes” ,中间有些是y或n

cpan -fi JE Time::HiRes  Data::Dumper Digest::MD5 LWP::UserAgent JSON YAML Sys::HostIP Plack:App:URLMap Twiggy::Server Plack::Middleware::Header Time::Piece Time::Seconds JSON LWP::UserAgent LWP::Protocol::https Webqq::Encryption Mojo::Webqq

// 这个单独拿出来安装是因为这个邮件模块需要验证邮箱的登录,也是最肯能出错的地方,登录的报错也能看到

# cpan Mail::SendEasy

Pass:如果已经装完,邮件又发不出去,想重新安装下这个模块排查,可以执行下列命令:

#find / `perl -e ‘print "@INC"‘` -name ‘*.pm‘ -print | grep Mail | grep -v build | xargs rm -rf

# cpan Mail::SendEasy

Pass:另外要注意的是,不要刚刚新建的邮箱,否则有可能会提示”lock”

Pass:上面模块标示绿色的,可以能已经停止开发和使用了 Webqq::Client地址:https://metacpan.org/pod/Webqq::Client

需要调用新的模块,模块说明地址:https://metacpan.org/pod/Mojo::Webqq

报警需要脚本两个,一个是perl,用来登录webQQ以及发送验证码到邮箱进行登录

二是qq_sms.sh脚本,用来监听端口以及发送告警信息                     下面是两个脚本内容截图

------------------------------------------------------------------------------------------------------------------------------------

#!/usr/bin/perl
use Mojo::Webqq;
use Mojo::Util qw(md5_sum);
use Data::Dumper;
use Digest::MD5 qw(md5_hex);
use LWP::UserAgent;
use JSON
#注意: 
#程序内部数据全部使用UTF8编码,因此二次开发源代码也请尽量使用UTF8编码进行编写,否则需要自己做编码处理
#在终端上执行程序,会自动检查终端的编码进行转换,以防止乱码
#如果在某些IDE的控制台中查看执行结果,程序无法自动检测输出编码,可能会出现乱码,可以手动设置输出编码
#手动设置输出编码参考文档中关于 log_encoding 的说明
 
#帐号可能进入保护模式的原因:
#多次发言中包含网址
#短时间内多次发言中包含敏感词汇
#短时间多次发送相同内容
#频繁异地登陆
  
#推荐手机安装[QQ安全中心]APP,方便随时掌握自己帐号的情况
#由于腾讯只能用二维码扫描登录,以下密码就不要改动了,已无意义
 my $qq = 2246199518;                              #登录的QQ号
# my $pwd = "0";                                        #使用帐号密码方式登录时需要
# my $pwd_md5 = md5_sum($pwd);        #得到原始密码的32位长度md5

#############验证码##############

#插件需要使用到 input_qrcode 事件
#需要login中开启delay参数(设置为延迟登录)
my $client=Mojo::Webqq->new(
    ua_debug    =>  0,                             #是否打印详细的debug信息
    qq          =>  $qq,                               #必选,登录的qq帐号,用于帐号密码登录或保存登录cookie使用
#    pwd         =>  $pwd_md5,               #可选,如果选择帐号密码登录方式,必须指定帐号密码的md5值
    login_type  =>  "qrlogin",                 #"qrlogin"表示二维码登录,"login"表示帐号密码登录
           );
#注意: 腾讯已经关闭了帐号密码的登录方式,这种情况下只能使用二维码扫描登录
#客户端进行登
$client->load("PostQRcode",data=>{
        smtp    =>‘smtp.163.com‘,                                  #邮箱的smtp地址  
        port    =>‘25‘,                                                      #smtp服务器端口,默认25
        from    =>‘[email protected]‘,                                #发件人
        to      =>‘[email protected]‘,         #收件人
        user    =>‘[email protected]‘,                                 #smtp登录帐号
        pass    =>‘xxxxxxxx‘,                                           #smtp登录密码

});
#######################################################################################
                #客户端进行二维码登录
                $client->login(delay=>1);
                #客户端加载ShowMsg插件,用于打印发送和接收的消息到终端
                $client->load("ShowMsg");
                #ready事件触发时表示客户端一切准备就绪,建议尽量将自己的代码写在ready内
                #$client->on(ready=>sub{
                #设置接收消息事件的回调函数,在回调函数中对消息以相同内容进行回复
                    #$client->on(receive_message=>sub{
                    #my ($client,$msg)[email protected]_;
                #已以相同内容回复接收到的消息
                    #$client->reply_message($msg,$msg->content);
                #你也可以使用$msg->dump() 来打印消息结构
                    #my $group_uin = $msg->{from_uin};
                    #});

#新版本Mojo::Webqq接口
# 监听的端口,接收来自客户端(qq_sms.sh)的消息
# 这里的hots和port是可以更改的,但是qq_sms.sh脚本也需要改成对应的
#    $client->load("Openqq",data=>{
#    listen => [{host=>10.0.10.31,port=>5010}],             #监听的地址和端口,支持多个
#    auth   => sub {my($param,$controller) = @_},        #可选,认证回调函数,用于进行请求鉴权
#   post_api=> ‘http://127.0.0.1:5010/post_api‘,             #可选,设置接收消息的上报接口
#    }); 
#新版本中监听端口只能监听127.0.0.1
#老版本Webqq::Client接口
$client->load("Openqq",data=>[ {host=>"0.0.0.0",port=>5010}, ]);
#自定义问答知识库
$client->load("KnowledgeBase");

$client->load("SmartReply");

$client->load("StockInfo");

# 执行函数,很多朋友都漏了
      $client->run()

---------------------------------------------------------------------------------------------------------------

#!/bin/bash
API_ADDR="127.0.0.1:5010"  # 你login.pl中定义的host和port
qq_num=3028241698
# 处理下编码,用于合并告警内容的标题和内容,即$2和$3
message=`echo -e "$2\n$3"|od -t x1 -A n -v -w1000000000 | tr " " %`

send_messege(){
#api_url="http://$API_ADDR/openqq/send_message?qq=$qq_num&content=$message"
api_url="http://$API_ADDR/openqq/send_message?id=$qq_num&content=$message"    
curl $api_url
}
# 发送消息,执行函数,很多朋友复制的时候漏了
send_messege

qq_unm:可以填写ID号码,根据实际情况,所以此处更改成对QQ的报警

解释:qq_num 实际在调用的时候是群的gid号码,而不是qq群号,一定一定要知道

gid获取的方法同样可以通过webAPI进行获取。方法就是使用图上api_url变量中的值

可根据网页中的帮助,获得gid或id

示例:


http://127.0.0.1:5000/openqq/get_user_info

http://127.0.0.1:5000/openqq/send_message?id=xxx&content=hello

http://127.0.0.1:5000/openqq/send_message?id=xxx&content=%e4%bd%a0%e5%a5%bd (中文需要utf8编码并进行urlencode)

后台运行login.pl

[[email protected] data]# nohup ./login.pl &

netstat -tunlp|grep 5010

检查端口和服务器正常启用

将qq_sms.sh移动到zabbix脚本目录下,目录如果不知道可以在zabbix_server.conf文件中找到

默认在/usr/lib/zabbix/alertscripts

移动并赋予权限

chmod +x .....

chown zabbix.zabbix ...

创建告警媒体

添加用户

创建动作

时间: 2024-10-13 19:07:32

ZABBIX使用QQ报警(更新Mojo::web)的相关文章

关于zabbix的微信报警的二次开发

zabbix用微信报警网上有很多教程了,基本可以实现zabbix推送报警到微信,如http://mageedu.blog.51cto.com/4265610/1687589 但是存在如下缺点: 1.推送信息简单,不能显示历史数据: 2.zabbix没有一个很好的报警确认机制.我现在生产环境有24小时值班收报警的人员,他收到报警会通知相关管理员处理报警,当一个管理员不小心触发一个报警时候,他自己是知道这个报警是如何去接触的,那么他要反向去通知值班收报警的人员,如此场景zabbix并没有一个好的报警

配置zabbix通过微信报警企业微信报警

如今势态: 报警的方式可谓是八仙过海各显神通,如电话报警,短信报警,邮件报警,QQ报警,微信报警等等. 电话报警:一般都是使用别的平台的工具,平台给你提供一个接口供你使用,大多数为限量收费款 短信报警:一般是服务器安装串口GSM短信猫(也有其他平台提供这种接口),zabbix可以使用他来发送短信通知给管理员 邮件报警:一般是在server端安装邮件的客户端如sendEmail等,写脚本给zabbix进行调用,触发后发邮件给管理员 Q Q 报警:一般使用Mojo-Webqq的perl模板和cpan

CentOS 7 zabbix实现微信报警

环境 : LAMP  CentOS7  192.168.94.11 首先搭建LAMP环境 , 安装zabbix [[email protected] ~]# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm [[email protected] ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm [[email protec

Zabbix基于Proxy分布式部署实现Web监控

前言 在日常运维工作中,难免会遇到这样或那样的故障,如何能在第一时间发现故障,并及时定位故障原因,保证业务不受影响,我想这应该是做好一个运维必须要掌握的技能.但人力不可能实时掌控系统的变化,于是监控系统应运而生,监控便是运维的眼睛,把监控和性能管理做好后,运维就是一件很轻松的事情.目前比较流行的开源监控工具有Cacti.Nagios(Icinga).Zabbix等.本文带来的是Zabbix基于Proxy分布式部署实现Web监控. Zabbix 简介 Zabbix是一个基于Web界面提供分布式系统

Zabbix 实现微信报警

Zabbix实现微信报警 操作系统:Centos 6.5  zabbix版本:2.4.6 一.注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com 在扫二维码关注微信公众号    点击总用户数,在点击你的微信头像以下部位就是你的微信ID 二.下载微信公众平台私有接口 下载API git clone https://github.com/lealife/WeiXin-Private-API cp到zabbix默认的报警脚本目录 cp -r Weixin-Privat

【Zabbix】zabbix设置邮件报警

目录 Zabbix设置邮件报警 1.安装sendmail或postfix 2.安装邮件发送工具mailx . 3.配置mail 4. 测试邮件发送 5.编写邮件发送脚本sendmail.sh 6.设置sendmail.sh权限 7.测试sendmail脚本 8.zabbix web后台页面配置. Zabbix设置邮件报警 1.安装sendmail或postfix [root@localhost ~]# yum -y install sendmail [root@localhost ~]# yum

Zabbix 监控之 - 报警篇 Actions

通常,一个报警的产生,是这样的一个过程. 如果某种条件符合,那么报警. 抽象成计算机语言,就是: if (ConditionA == true){ Alet(); } 还可以选择给谁报警(哪个用户).怎样报警(报警途径),具体如下: if (ConditionA == true){ Alert(userA.email); Alert(userB.sms); } 如果处理问题不一定要报警,可以在服务器对于一些简单问题上运行一些命令的初步处理,比如Nginx挂了,自己就可以尝试的重启服务,则这又成了

zabbix配置邮箱报警

虽然网上有很多配置zabbix邮箱报警的邮件,但是能成功的还是少数,这里我把我做zabbix邮件报警的步骤写一下吧! 1.安装邮件发送工具mailx 网上的大多都是用的sendmail或者是postfix ,这里我用的是mailx yum -y install mailx   安装 ln -s /bin/mailx  /bin/mail  创建软连接 2.配置mailx vim /etc/mail.rc set from="136****@126.com" set smtp="

zabbix钉钉报警python脚本

1 #!/usr/bin/env python 2 #coding:utf-8 3 #zabbix钉钉报警 4 import requests,json,sys,os,datetime 5 webhook="https://oapi.dingtalk.com/robot/send?access_token=52c39155fcb9f2fecda75ef8cec6d2ffa318e4818982f772ecb9f779a630151d" 6 user=sys.argv[1] 7 text