Nagios通过MSN/飞信发送报警通知

运维 系统运维
Nagios通过MSN/飞信发送报警通知:Nagios是一个运行于Linux或Unix下的监视系统。Nagios能监视所指定的本地或远程主机及服务,也提供了异常通知功能。然后以短信或MSN的方式发送报警通知。本文讲述的是Nagios通过MSN/飞信发送报警通知。

  Nagios通过MSN/飞信发送报警通知

  1、msn报警

  先在这里网上下载***的msn类文件,这个下载后其实是一套完整的msnbot的php程序,我们这里只是使用了其中的msn.class.php这个文件。

  遵循nagios的标准结构,程序文件都会放在/usr/local/nagios/libexec文件夹下,所以我在此文件夹下创建phpmsnclass文件夹,将msn.class.php文件放置其中,并在此目录下创建用于发送msn报警的php程序,内容如下。

  1.   # cat sendmsnmsg.php  
  2.  
  3.   #!/usr/local/php529/bin/php -q  
  4.  
  5.   include_once('msn.class.php');  
  6.  
  7.   $msn_username ='YOUR_MSN_ID'; //消息发送人的msn帐号  
  8.  
  9.   $msn_password = "yourpassword"; //消息发送人msn密码  
  10.  
  11.   $msn_list = array('somebody1@hotmail.com','somebody2@hotmail.com'); //消息接收人msn地址,这里可选,因为会使用nagios传递过来的地址  
  12.  
  13.   $fp=fopen('/tmp/tmp/1','r'); //1这个文件是消息发送的内容,这个文件由nagios自动生成,路径根据自己实际自行修改  
  14.  
  15.   $file="";  
  16.  
  17.   while (! feof($fp)){  
  18.  
  19.   $cont=fgets($fp);  
  20.  
  21.   $file=$file.$cont; //拼接报警消息内容  
  22.  
  23.   }  
  24.  
  25.   $msn =new MSN('MSNP15'); //采用MSNP15协议,支持离线消息  
  26.  
  27.   if (!$msn->connect($msn_username,$msn_password)) {  
  28.  
  29.   echo "Error for connect to MSN networkn";  
  30.  
  31.   echo "$msn->errorn";  
  32.  
  33.   exit;  
  34.  
  35.   }  
  36.  
  37.   else {  
  38.  
  39.   $msn->sendMessage("$file",$argv[1]); //将$file内容发送给$argv[1]传递进来的msn消息接收者。  
  40.  
  41.   }  
  42.  
  43.   fclose($fp);  
  44.  
  45.   ?> 
  46.  

  将此文件设置可执行权限,就可以进行测试了,首先在1文件中放入些内容比如

  1.   # cat 1  
  2.  
  3.   this is a test by wenzizone.cn  
  4.  

  然后执行

  1.   ./sendmsnmsg.php somebody@hotmail.com //后面跟的这个是接收人msn地址  
  2.  

  可以看到下图:

Nagios/MSN/飞信

 

  说明msn发送是正常的。

  2、飞信报警

  首先到网上下载飞信的php写的api接口,解压后,同样在/usr/local/nagios/libexec创建phpfetion目录,将class_fetion.php放到此目录下,然后创建发送短信的php程序,如下

  1.   #!/usr/local/php529/bin/php -q  
  2.  
  3.   include_once('class_fetion.php');  
  4.  
  5.   $sms_username = "1381126xxxx"; //飞信帐号  
  6.  
  7.   $sms_password = "your password"; //飞信密码  
  8.  
  9.   $fp=fopen('/tmp/tmp/1','r'); //同msn内容  
  10.  
  11.   $file="";  
  12.  
  13.   while (! feof($fp)){  
  14.  
  15.   $cont=fgets($fp);  
  16.  
  17.   $file=$file.$cont;  
  18.  
  19.   }  
  20.  
  21.   $fetion = new fetion($sms_username,$sms_password);  
  22.  
  23.   $fetion->init() or die("fetion init failure!n");  
  24.  
  25.   $fetion->sent_sms('tel:'.$argv[1],$file); //根据传送进来的电话发送报警内容  
  26.  
  27.   fclose($fp);  
  28.  
  29.   ?> 
  30.  

  分配sendsms.php可执行权限,然后进行测试,执行

  1.   ./sendsms.php 13810xxxxxx //后面这个是接受消息的手机号  
  2.  

  用不了多一会就会收到消息,消息内容和msn那条一样,因为我们的测试内容不变。

  3、和nagios的结合使用

  首先编辑command.cfg文件,添加新的如下内容

  1.   # 'notify-host-by-msn' command definition  
  2.  
  3.   define command{  
  4.  
  5.   command_name notify-host-by-msn  
  6.  
  7.   command_line /usr/bin/printf "%b" "***** Nagios *****nNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$nState: $HOSTSTATE$nIP: $HOSTADDRESS$nInfo: HOSTOUTPUT$nDate/Time: $LONGDATETIME$n" >/tmp/tmp/1 | $USER$/phpmsnclass/sendmsnmsg.php $CONTACTEMAIL$  
  8.  
  9.   }  
  10.  
  11.   # 'notify-host-by-fetion' command definition  
  12.  
  13.   define command{  
  14.  
  15.   command_name notify-host-by-fetion  
  16.  
  17.   command_line /usr/bin/printf "%b" "***** Nagios *****nNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$nState: $HOST  
  18.  
  19.   STATE$nIP: $HOSTADDRESS$nInfo: $HOSTOUTPUT$nDate/Time: $LONGDATETIME$n" >/tmp/tmp/1 | $USER1$/phpfetion/sendsms.php $CONTACTPAGER$  
  20.  
  21.   }  
  22.  

  然后修改contacts.cfg文件,如下

  1.   define contact{  
  2.  
  3.   contact_name nagiosadmin  
  4.  
  5.   alias Nagios Admin  
  6.  
  7.   email http://www.wenzizone.cn/  
  8.  
  9.   pager 13810xxxxxx  
  10.  
  11.   host_notification_commands notify-host-by-msn  
  12.  
  13.   host_notification_options d,u  
  14.  
  15.   host_notification_period 24x7  
  16.  
  17.   host_notifications_enabled 1  
  18.  
  19.   service_notifications_enabled 1  
  20.  
  21.   service_notification_period 24x7  
  22.  
  23.   service_notification_options w,u,r  
  24.  
  25.   service_notification_commands notify-service-by-msn  
  26.  
  27.   }  
  28.  
  29.   define contact{  
  30.  
  31.   contact_name nagiosadmin01  
  32.  
  33.   alias Nagios Admin  
  34.  
  35.   email http://www.wenzizone.cn/  
  36.  
  37.   pager 13810xxxxxx  
  38.  
  39.   host_notification_command snotify-host-by-fetion  
  40.  
  41.   host_notification_options d,u  
  42.  
  43.   host_notification_period 24x7  
  44.  
  45.   host_notifications_enabled 1  
  46.  
  47.   service_notifications_enabled 1  
  48.  
  49.   service_notification_period 24x7  
  50.  
  51.   service_notification_options w,u,r  
  52.  
  53.   service_notification_commands notify-service-by-fetion  
  54.  
  55.   }  
  56.  

  接下来再host或者service上填上对应的contact然后就可以随时收到相应的报警了。

  蚊子在这两天的测试用发现,飞信报警的送达率还是很高的,基本是每条都能收到,但是msn的送达率就令人担忧了,我发送10个能收到一个就算不错了,所以还请根据自己测试情况酌情考虑。

  另外一点需要注意的是msn或者飞信发送报警,接收人都必须是发送人msn或飞信的好友才行,不然是不能送达的。以上就是Nagios通过MSN/飞信发送报警通知。

【编辑推荐】

Nagios飞信linux短信报警脚本配置

Nagios安装记录

如何用Nagios监控远程系统

责任编辑:zhaolei 来源: wenzizone
相关推荐

2011-03-24 13:00:31

Nagios飞信

2011-03-25 13:10:08

2011-03-23 13:32:14

Nagios飞信

2011-03-23 09:07:49

Nagios飞信

2011-03-24 10:08:42

Nagios飞信Linux

2011-03-24 09:15:54

Nagios飞信

2011-03-23 09:07:50

Nagios短信

2011-03-28 13:08:13

Nagios

2010-05-31 09:06:12

Nagios飞信

2011-03-24 08:56:23

escalationsNagios报警

2011-04-01 17:27:14

zabbixMSN报警

2011-03-25 14:56:43

Nagiosescalations

2011-03-21 15:44:52

escalationsNagios

2011-03-24 08:56:21

Nagios邮件

2021-11-06 19:43:34

Python微信服务器

2011-03-23 14:47:25

Nagios监控

2011-03-22 16:31:27

Nagios

2011-03-23 12:55:55

Nagios邮件

2022-04-16 12:46:28

Python微信

2022-02-26 19:16:08

Promoter报警通知监控图表
点赞
收藏

51CTO技术栈公众号