2008年10月12日星期日

使用飞信为系统监控报警

一、飞信机器人软件
官网地址:http://www.it-adv.net/
需要Glibc2.4以上的版本;RHEL5默认安装的Glibc2.5,所不需要额外升级;


二、安装过程
下载包地址LINUX X86/32:支持库 最新程序fetion20080901004-linux.tar.gz
分别下载支持库和最新程序
1.安装支持库
[root@RHEL5 fetion]# tar -xvf lib_lin_32.tar.gz.tar
library_linux32/
library_linux32/libcrypto.so.0.9.8
library_linux32/libACE.so.5.4.7
library_linux32/libACE_SSL.so.5.4.7
library_linux32/libssl.so.0.9.8


[root@RHEL5 fetion]# cd library_linux32/
[root@RHEL5 library_linux32]# cp *so* /usr/lib


2.安装fetion
[root@RHEL5 fetion]# tar -xvf fetion20080901004-linux.tar.gz.tar
[root@RHEL5 fetion]# mv install/ /opt/fetion
3. 测试fetion是否可以正常使用
[root@RHEL5 opt]# cd /opt/fetion/
[root@RHEL5 fetion]# ldd fetion
linux-gate.so.1 => (0x00969000)
libACE.so.5.4.7 => /usr/lib/libACE.so.5.4.7 (0x00e35000)
libACE_SSL.so.5.4.7 => /usr/lib/libACE_SSL.so.5.4.7 (0x00110000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00393000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00791000)
libm.so.6 => /lib/libm.so.6 (0x00d55000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00940000)
libc.so.6 => /lib/libc.so.6 (0x00c0a000)
libdl.so.2 => /lib/libdl.so.2 (0x00d4f000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00d7e000)
librt.so.1 => /lib/librt.so.1 (0x00d97000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00510000)
libz.so.1 => /usr/lib/libz.so.1 (0x00da2000)
/lib/ld-linux.so.2 (0x00bec000)
所有的库文件都可以正常找到


[root@RHEL5 fetion]# ./fetion -h 查看帮助


三、实际测试
1.登录飞信默认是中文utf8的,如果linux系统不支持utf8会出现乱码:我使用english的方式来登录啦。
测试帐号:13713718888
密码:123456 (如果密码中含有特殊字符,请使用单引号)
./fetion -u 13713718888 -p 123456 -EN
登录后输入?获得帮助
****************************************************************
指令 指令说明
list 好友列表: list
sms 发送短信: sms 飞信号/手机号/编号 短信内容(换行请用\n代替)
chat 在线消息: chat 飞信号/手机号/编号 短信内容(换行请用\n代替)
status 在线状态: status online/busy/away/hidden [个性化信息]
add 添加好友: add 飞信号/手机号 申请信息 本地呢称
del 删除好友: del 飞信号/手机号/编号
invite 邀请好友: invite 手机号 您的姓名(邀请好友开通飞信)
autoaccept 自动接受: autoaccept on/off/status 自动接受加为好友申请
myinfo 修改资料: myinfo nickname/impresa 内容(呢称/心情)
help 帮助菜单: help/?
exit 退出系统: quit/exit
****************************************************************


sms 137******** "this is test message" # 这个就是我们需要的发送短信的指令啦!




2.脚本测试:
可以使用fetion的-b参数来实现p处理;
举例如下:
# vi p.sh
sms 137xxxxxxxx “msyqlserver is down”


保存后执行:
./fetion -u 137xxxxxxxx -p 123456 -b p.sh
就是一次发出报警信息。






3.配合监控脚本
#!/bin/bash
disk=$(df /dev/sda1 |grep /dev|awk '{print $5}'|tr -d "%")
if [ "$disk" -gt "80" ]; then
/opt/fetion/fetion -u 138xxxxxxxx -p 123456 -EN -b /opt/mon.sh >>/opt/fetion.log 2>&1
else :
fi




4.脚本实例
监控网站是否可以正常访问,有问题时报警,恢复后提示 (注:如果复制粘贴,运行出错,注意查一下是否是某些字符复制时格式改变了)


#!/bin/sh


#############################Var################################


errpath=/tmp/alert-err
okpath=/tmp/alert-ok
fetionum=13811012345
fetionpass=12345
admin=13811012345


############################function############################
scan ()
{
rm -rf /tmp/tmp.wget
(time -p wget --delete-after http://127.0.0.1) >/tmp/tmp.wget 2>&1


#setting realtime of run
realtime=$(cat /tmp/tmp.wget |grep "real"|awk '{ print $2}'|awk -F . '{print $1}')
#echo "Wget time is $realtime "


okstate=$(cat /tmp/tmp.wget |grep "OK"|awk '{print $5}')
#echo $okstate


}


alerterr ()
{
/opt/fetion/fetion -u $fetionum -p $fetionpass -EN -b $errpath
}




alertok ()
{
/opt/fetion/fetion -u $fetionum -p $fetionpass -EN -b $okpath
}
##############################Main###############################


while [ 1 ]
do
sleep 90
scan


if [ "$okstate" != "OK" ] ; then
if [ -f /tmp/err ];then
echo "`date +%Y/%m/%d-%T`wget not ok but has been alert"
#continue
else
echo "sms $admin `date +%Y/%m/%d-%T` wget is not OK " >$errpath
echo "exit" >>$errpath
alerterr
echo "`date +%Y/%m/%d-%T` -----------------------------------> wget is not OK "
touch /tmp/err
fi


else
if [ -f /tmp/err ];then
echo "sms $admin "`date +%Y/%m/%d-%T` Recover!! wget time is $realtime"" >$okpath
echo "exit" >>$okpath
alertok
rm /tmp/err
echo "`date +%Y/%m/%d-%T` ------------------------------------> Recover !!! wget time is $realtime"
#continue
else
echo "`date +%Y/%m/%d-%T` wget time is $realtime running ok"
fi




fi
done

没有评论: