• zabbix学习系列之QQ消息报警


    安装依赖包

    环境

    Zabbix: 3.2
    OS:Centos 7

    安装依赖包

    yum install lrzsz chrony gcc gcc-c++ git openssl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y

    安装cpanm包管理工具

    curl -kL http://cpanmin.us | perl - App::cpanminus

    使用cpanm在线安装Mojo:Webqq

    cpanm Mojo::Webqq

    使用cpanm在线安装邮件依赖模板

    cpanm  Mojo::SMTP::Client MIME::Lite

    编写脚本

    需要两个脚本:

    • qqlogin.pl:在脚本里输入QQ号,然后脚本把二维码发送到脚本里定义的邮箱,然后手机登录QQ扫描二维码登录QQ.(接收报警信息)
    • qqclient.sh:把报警信息发送给指定的QQ号或者QQ群

    qqlogin.pl

    #!/usr/bin/env perl
    use Mojo::Webqq;
    my ($qq,$host,$port,$post_api);
    $qq = 1770XXXXXX;    #修改为你自己的实际QQ号码(用此QQ发送报警信息到指定的QQ)
    $host = "0.0.0.0";   #发送消息接口监听地址,修改为自己希望监听的地址
    $port = 5000;        #发送消息接口监听端口,修改为自己希望监听的端口
    
    
    my $client = Mojo::Webqq->new(qq=>$qq);
    #配置邮件,发送登录的二维码图片到邮箱中,如果不使用邮箱可以在/tmp下找到对应图片(进入这个邮箱找到二维码,用手机QQ扫描登录,前提是手机QQ登录的是1770XXXXXX的QQ)
    $client->load("PostQRcode",data=>{
            smtp    =>  'smtp.163.com',        #邮箱的smtp地址
            port    =>  '25',                  #smtp服务器端口,默认25
            from    =>  'XXXXXXXXXXX@163.com', #发件人
            to      =>  'XXXXXXXXXXX@163.com', #收件人
            user    =>  'xxxxxxxxxxx@163.com', #smtp登录帐号
            pass    =>  'XXXXXX',              #smtp登录密码(一定要写客户端验证密码)
        });
    
    $client->login();
    #$client->load("ShowMsg");          #接收用户和群消息,没有用,注释掉吧
    $client->load("Openqq",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api});
    $client->run();

    qqclient.sh

    #!/bin/bash
    
    #好友的QQ号码
    qq=$1
    
    #Mojoqq服务器地址与端口号
    server="172.16.1.229"
    port="5000"
    
    #消息内容处理下编码,用于合并告警内容的标题和内容,即$2和$3
    message=`echo -e "$2
    $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

    测试QQ登录脚本

    [root@zabbix ~]# perl qqlogin.pl
    [17/05/24 15:46:17] [info] 当前正在使用 Mojo-Webqq v2.1.1
    [17/05/24 15:46:17] [info] 客户端加载cookie[ /tmp/mojo_webqq_cookie_default.dat ]
    [17/05/24 15:46:17] [info] 执行插件[ Mojo::Webqq::Plugin::PostQRcode ]
    [17/05/24 15:46:17] [info] 初始化 smartqq 客户端参数...
    [17/05/24 15:46:18] [info] 正在获取登录二维码...
    [17/05/24 15:46:19] [info] 二维码已下载到本地[ /tmp/mojo_webqq_qrcode_default.png ]
    [17/05/24 15:46:20] [info] 登录二维码已经发送到邮箱:  xxxxxxxxxx@163.com
    [17/05/24 15:46:20] [info] 等待手机QQ扫描二维码...
    [17/05/24 15:47:06] [info] 手机QQ扫码成功,请在手机上点击[允许登录smartQQ]按钮...
    [17/05/24 15:47:09] [info] 检查安全代码...
    [17/05/24 15:47:09] [info] 获取数据验证参数...
    [17/05/24 15:47:10] [info] 尝试进行登录(2)...
    [17/05/24 15:47:10] [info] 帐号(1770xxxxxxx)登录成功
    [17/05/24 15:47:10] [info] 清除残留的历史二维码图片
    [17/05/24 15:47:10] [info] 更新个人信息...
    [17/05/24 15:47:11] [info] 更新好友信息...
    [17/05/24 15:47:12] [info] 更新好友扩展信息...
    [17/05/24 15:47:12] [info] 更新群列表信息...
    [17/05/24 15:47:12] [info] 更新群列表扩展信息...
    [17/05/24 15:47:12] [info] 更新讨论组列表信息...
    [17/05/24 15:47:12] [info] 执行插件[ Mojo::Webqq::Plugin::Openqq ]
    [17/05/24 15:47:12] [info] Listening at "http://0.0.0.0:5000"
    Server available at http://0.0.0.0:5000
    [17/05/24 15:47:12] [info] 开始接收消息...

    登录到邮箱,打开邮件,扫描二维码登录QQ

    测试发送QQ消息脚本

    root@zabbix ~]#  bash -x qqclient.sh 9618154  nihao zabbixqq
    + qq=9618154
    + server=172.16.1.229
    + port=5000
    ++ echo -e 'nihao
    zabbixqq'
    ++ 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://172.16.1.229:5000/openqq/send_friend_message
    + parameter='uid=9618154&content=%6e%69%68%61%6f%0a%7a%61%62%62%69%78%71%71%0a'
    + curl -d 'uid=9618154&content=%6e%69%68%61%6f%0a%7a%61%62%62%69%78%71%71%0a' http://172.16.1.229:5000/openqq/send_friend_message
    {"code":0,"id":32030022,"status":"发送成功"}[root@zabbix ~]#

    查看是否收到QQ消息

    Zabbix报警配置

    在zabbix服务端启动qqlogin.pl,用来登录发送报警的QQ  

    setsid perl qqlogin.pl &

    qqclient.sh从报警媒介里添加,zabbix调用这个脚本发送报警信息

    Zabbix报警脚本路径配置

    打开zabbix_server.conf,开启AlertScriptPath,并重启zabbix

    AlertScriptsPath=/usr/lib/zabbix/alertscripts

    zabbix告警媒介配置

    管理-->报警媒介类型-->创建报警媒介

    绑定报警媒介和用户

    管理-->用户-->Admin-->报警媒介-->添加

    绑定动作到用户

    监控项和触发器和动作和用户的关系

    先定义监控项,然后定义触发器,触发器设置阈值,触发器和动作绑定,如果监控项的的值超过的触发器设定的阈值,触发器被触发然后执行动作,也就是发送报警信息给某个用户

    用户和报警媒介的关系

    先配置一个报警媒介,也就是接收报警的方法,例如:QQ消息或者邮件,然后报警媒介和某个用户绑定,动作把报警信息发送到某个用户,某个用户接收报警信息的方法就是QQ或者邮件

    绑定动作到用户

    配置-->动作-->操作

  • 相关阅读:
    第009题 智猜年龄——问经理三女儿年龄各多少
    第008题 求最大值——10个1加乘的最大数字
    第007题 天平称物——最少砝码称出最多质量
    第006题 天平找次——至少称几次找到次品
    第005题 青蛙过河——十只青蛙如何顺利过去
    第004题 过河问题——如何过河用时最短
    第003题 过河问题——三对老虎如何安全过河
    第002题 打水问题——9升和4L的桶如何打6升水
    基于博弈论分析在线教育网站和慕课的产生
    C++左右括号匹配问题(并给出括号的位置 并且允许非括号字符插入)修改版
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/6899795.html
Copyright © 2020-2023  润新知