Nagios使用飛信Robot發(fā)送報警短信
Nagios使用飛信Robot發(fā)送報警短信:
一、概述
Nagios 是配置Nagios使用飛信Robot短信報警、配置Nagios使用飛信Robot短信報警,Linux 環(huán)境下使用率最高的配置Nagios使用飛信Robot短信報警監(jiān)控軟件,它善于監(jiān)控服務(wù),容易進(jìn)行二次定制。
飛信 Robot 是一款基于移動飛信服務(wù)的類 Unix 實(shí)現(xiàn)。通過 飛信Robot 可以很方便的在 shell 下發(fā)送免費(fèi)短信。
本文介紹介紹了如何通過 飛信Robot 使得 Nagios 可以免費(fèi)發(fā)送報警短信。
平臺:CentOS 5.2 x86_64
#p#
二、飛信 Robot
寫此文時,使用的 飛信 軟件版本為:飛信20080910047-lin64.tar.gz md5sum:9265d8f57556672220ee6a22c77c65af。使用的支持庫 library64_linux.tar.gz md5sum 為:2e858e9184c4761bb0d1f9cea14dc49e 。
安裝 飛信 Robot
下載 飛信 Robot 以及依賴庫。下載完成后記得執(zhí)行一下ldconfig刷新一下。
解壓縮 飛信20080910047-lin64.tar.gz 得到二進(jìn)制文件。直接運(yùn)行 飛信 即可:
引用
- [root@cacti install]# ./fetion -h
Usage:
- fetion -h
- -h: help
- fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
- fetion -c [config_file] -id [n] [-EN] [-d]
- -u: fetion user account(only supports mobile phone No.)
- -p: Account password
- -b: Batch file name
- -d: Debug on and write logs to [mobile]-debug.log
- -c: config file name, refer to fetion.conf
- -i: id, refer to fetion.conf
- -EN: English
- [root@cacti install]#
可能出現(xiàn)的問題
在 64 位系統(tǒng)下會出現(xiàn) libstdc++ 包版本過低的問題。具體表現(xiàn)為:[root@cacti ~]# fetion -h
fetion: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib64/libACE.so.5.4.7)出現(xiàn)此問題,是由于 gcc 的版本太低,同時導(dǎo)致 libstdc++ 庫版本過低。CentOS 5.2 使用 libstdc++-4.1.2-42.el5 版本。而通過 rpm 查詢 可以看到,此版本最高只提供了 GLIBCXX_3.4.8 。
如果你有足夠的時間,可以自己編譯高版本的 gcc。并且在運(yùn)行 飛信 時指定 lib 地址。
另外你還可以找一個 Fedora Core 9 中的 libstdc++ 。它包含了所需要的庫。[root@cacti ~]# rpm -Uvh --force libstdc++-4.3.0-8.x86_64.rpm
warning: libstdc++-4.3.0-8.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing... ########################################### [100%]
1:libstdc++ ########################################### [100%]
#p#
三、perl 腳本準(zhǔn)備
此腳本從 論壇上配置Nagios使用飛信Robot短信報警這篇文章 修改而來。稍微做了一點(diǎn)加工。
腳本的作用是將 nagios 中的報警信息以及要通知的手機(jī)號碼格式化的輸入到其他文本中。這里的“格式化”是符合 飛信 腳本模式的格式化。在輸出完成后,調(diào)用 飛信 去依照文本發(fā)短信。
我修改的內(nèi)容是讓腳本支持一次通知多個手機(jī)。
- #!/usr/bin/perl
- use strict;
- use Fcntl qw(:flock);
- open SMS, "]/tmp/sms.txt" or die "NO OK";
- flock(SMS,LOCK_EX);
- my @mobile = split /\s+/, $ARGV[1];
- foreach (@mobile) {
- print SMS "sms $_ $ARGV[0]\n";
- }
- print SMS "quit\n";
- system "/usr/bin/fetion -u 136xxxxxx -p xxxxxxxx -b /tmp/sms.txt";
- #unlink "/home/sms/sms.txt";
- flock(SMS,LOCK_UN);
- close SMS;
- #unlink "/home/sms/sms.txt";
推薦將此腳本放在nagios/libexec/下。
記得在 /tmp 下創(chuàng)建 sms.txt 文件,777。
#p#
四、Nagios 配置
nagios 配置2個點(diǎn):
1.定義短信提醒方式。調(diào)用前面寫的 perl 腳本。同時將報警信息和手機(jī)號碼傳入腳本。
2.定義管理員接受報警方式。
直接貼配置文件了:
定義短信提醒調(diào)用腳本
- define command {
- command_name host-notify-by-sms
- command_line /usr/local/nagios/libexec/sms "IP: $HOSTADDRESS$($HOSTNAME$) is $HOSTSTATE$\n$SHORTDATETIME$" "$CONTACTPAGER$"
- }
- define command {
- command_name service-notify-by-sms
- command_line /usr/local/nagios/libexec/sms "'$HOSTADDRESS$' $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" "$CONTACTPAGER$"
- }
定義管理員接受報警方式
- define contact{
- contact_name nagiosadmin ; Short name of user
- use generic-contact ; Inherit default values from generic-contact template (defined above)
- alias Nagios Admin ; Full name of user
- service_notification_commands notify-service-by-email,service-notify-by-sms
- host_notification_commands notify-host-by-email,host-notify-by-sms
- email youremailaddress;
- pager 136xxxxxxx 136xxxxxx
- }
【編輯推薦】