Zabbix QQ報警配置


安裝Mojo::Webqq模塊

https://github.com/sjdy521/Mojo-Webqq

1、安裝perl

Perl版本至少5.10.1+,推薦5.14+

yum安裝,如果yum源比較舊,可用下面方法安裝

https://github.com/sjdy521/Mojo-CentosPerl

wget https://github.com/sjdy521/Mojo-CentosPerl/archive/master.zip -O Mojo-CentosPerl.zip

unzip Mojo-CentosPerl.zip

cd Mojo-CentosPerl-master/

mv perl/ /usr/local/

把Mojo-CentosPerl包含的perl和cpanm設置下alias,避免和系統默認的perl混淆(或者直接使用絕對路徑)

$ /usr/local/perl/bin/perl -v #使用perl的絕對路徑

$ /usr/local/perl/bin/cpanm --help #使用cpanm的絕對路徑

或者絕對路徑太長,可以給命令起個別名,方便使用,如下兩行寫入到 ~/.bashrc 文件的最后

alias perl='/usr/local/perl/bin/perl'

alias cpanm='/usr/local/perl/bin/cpanm'

執行如下命令來使得 ~/.bashrc 的改動生效

$ source ~/.bashrc

現在你可以直接使用別名來執行perl和cpanm

$ perl -v

$ cpanm --help

 

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

 

4、添加QQ登陸腳本

http://www.cnblogs.com/zhaijunming5/p/6899795.html

 

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,QQ郵箱用SSL 465端口

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();

 

5、添加發送消息腳本

#!/bin/bash

 

#好友的QQ號碼

qq=$1

 

#Mojoqq服務器地址與端口號

server="192.168.100.59"

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_group_message"

parameter="uid=$qq&content=$message"

 

#post方式提交請求發送QQ好友消息

curl -d $parameter $api_url

 

例子:

https://metacpan.org/pod/distribution/Mojo-Webqq/doc/Webqq.pod#Mojo::Webqq::Group-%E7%BE%A4%E7%BB%84

 

#信息獲取

/openqq/get_user_info           #查詢用戶信息

/openqq/get_friend_info         #查詢好友信息

/openqq/get_group_info          #查詢群信息

/openqq/get_discuss_info        #查詢討論組信息

 

#消息發送,均支持GET和POST

/openqq/send_friend_message     #發送好友消息 參數id=xxx&content=xxx 或 uid=xxx&content=xxx

/openqq/send_group_message      #發送群消息   參數id=xxx&content=xxx 或 uid=xxx&content=xxx

/openqq/send_discuss_message    #發送討論組消息 參數id=xxx&content=xxx (由於騰訊限制,當前無法成功發送)

/openqq/send_sess_message       #發送群臨時消息  參數 group_id=xxx&id=xxx&content=xxx 或 group_uid=xxx&uid=xxx&content=xxx (由於騰訊限制,當前無法成功發送)

/openqq/send_sess_message       #發送討論組臨時消息 參數 discuss_id=xxx&id=xxx&content=xxx 或 dusciss_id=xxx&uid=xxx&content=xxx (由於騰訊限制,當前無法成功發送)

 

獲取群uid(群號碼)

http://192.168.100.59:5000/openqq/get_group_info

"uid":1918358826

發送到群

http://192.168.100.59:5000/openqq/send_group_message?uid=637273120&content=Hello World!

 

6、打開zabbix_server.conf,開啟AlertScriptPath,並重啟zabbix

AlertScriptsPath=/usr/lib/zabbix/alertscripts

將qqclient.sh放置到此目錄

 

7、zabbix告警媒介配置

管理-->報警媒介類型-->創建報警媒介

 

 

名稱

腳本名

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

 

8、綁定報警媒介和用戶

管理-->用戶-->Admin-->報警媒介-->添加

 

9、監控項和觸發器和動作和用戶的關系

先定義監控項,然后定義觸發器,觸發器設置閾值,觸發器和動作綁定,如果監控項的的值超過的觸發器設定的閾值,觸發器被觸發然后執行動作,也就是發送報警信息給某個用戶

用戶和報警媒介的關系

先配置一個報警媒介,也就是接收報警的方法,例如:QQ消息或者郵件,然后報警媒介和某個用戶綁定,動作把報警信息發送到某個用戶,某個用戶接收報警信息的方法就是QQ或者郵件

 

10、綁定動作到用戶

配置-->動作-->操作

 

11、漢化報警信息

====發現問題====

問題描述: {TRIGGER.NAME}

問題狀態: {TRIGGER.STATUS}

問題級別: {TRIGGER.SEVERITY}

監控項數值:

{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

Original event ID: {EVENT.ID}

 

 

====已經恢復====

問題描述: {TRIGGER.NAME}

問題狀態: {TRIGGER.STATUS}

問題級別: {TRIGGER.SEVERITY}

監控項數值:

{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

Original event ID: {EVENT.ID}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM