Nagios+msn+fetion自定义时间发送报警消息

Nagios+fetion发送手机报警使用了几个月.每次报警短信来都要看下手机.感觉麻烦.上网找了下.发现Nagios也可以跟MSN结合起来.如果是这样.上班时间发送报警消息到MSN上.下班后再发送到手机上岂不是更好.

下面是我的安装过程.写得比较简单:

首先下载MSN linux客户端工具:

[root@yunwei tmp]# wget http://downloads.fanatic.net.nz/dev/php/sendMsg.zip

解压.、移至web工作目录.(发送报警消息的脚本需要通过web路径访问这个程序)

[root@yunwei tmp]# unzip sendMsg.zip

[root@yunwei tmp]# mv sendMsg /www/msn

[root@yunwei ~]# cd /www/msn/

[root@yunwei msn]# ls

index.php  msnpauth-1.1.3.php  msnpauth.php  sendMsg.php  simple.php  template.tpl

修改sendMsg.php

[root@yunwei msn]# head sendMsg.php

<?php

require_once('msnpauth.php');  //将msnpauth.php改为msnpauth-1.1.3.php  msnpauth.php需要SSL支持.所以我们用msnpauth-1.1.3.php就好了

修改后通过web访问如下:

wps_clip_image-16407

Sign-in name: //发送消息的MSN帐号

Password: //发送消息的MSN密码

Recipient: //接收消息的MSN帐号

Message text: //消息内容

测试下能不能发送.能发送的话.说明程序没问题.

wps_clip_image-29334

OK .程序没问题了.现在跟Nagios结合起来:

在Nagios的commands.cfg中加入如下内容.

[root@yunwei msn]# cat /usr/local/nagios/etc/objects/commands.cfg | grep msn

# 'host-notify-by-msn' command definition

        command_name    host-notify-by-msn

        command_line   /usr/bin/printf "%b" "***** Nagios *****/n/nNotification Type: $NOTIFICATIONTYPE$/nHost: $HOSTNAME$/nState: $HOSTSTATE$/nAddress: $HOSTADDRESS$/nInfo: $HOSTOUTPUT$/n/nDate/Time: $LONGDATETIME$/n" > /tmp/msnhost.out | $USER1$/check_msn_host.sh

        command_name    service-notify-by-msn

        command_line   /usr/bin/printf "%b" "***** Nagios *****/n/nNotification Type: $NOTIFICATIONTYPE$/n/nService: $SERVICEDESC$/nHost: $HOSTALIAS$/nAddress: $HOSTADDRESS$/nState: $SERVICESTATE$/n/nDate/Time: $LONGDATETIME$/n/nAdditional Info:/n/n$SERVICEOUTPUT$/n" > /tmp/msnservice.out | $USER1$/check_msn_service.sh

在contacts.cfg加入如下内容:

[root@yunwei msn]# cat /usr/local/nagios/etc/objects/contacts.cfg  | grep -v "#"

define contact{

         contact_name                    msn

         alias                           Nagios_msn

         service_notification_period      24*7

         host_notification_period          24*7

         service_notification_options     w,u,c,r

         host_notification_options        d,r

         service_notification_commands    service-notify-by-msn

         host_notification_commands       host-notify-by-msn

        }

define contactgroup{

        contactgroup_name       admins

        alias                   Nagios Administrators

        members            nagiosadmin,msn    //添加msn contact.

        }

创建发送报警的脚本:

[root@yunwei msn]cat /usr/local/nagios/libexec/check_msn_service.sh

#!/bin/bash

SENDER=msnnagios@hotmail.com

PASSWD=test

TO1=123@live.cn

TO2=222@hotmail.com

MESSAGE=`cat /tmp/msnservice.out`

wget -O - -q --post-data="sender=$SENDER&password=$PASSWD&recipient=$TO1&message=$MESSAGE" http://localhost/msn/index.php

wget -O - -q --post-data="sender=$SENDER&password=$PASSWD&recipient=$TO2&message=$MESSAGE" http://localhost/msn/index.php

[root@yunwei msn]cat /usr/local/nagios/libexec/check_msn_host.sh

#!/bin/bash

SENDER=msnnagios@hotmail.com

PASSWD=test

TO1=123@live.cn

TO2=222@hotmail.com

MESSAGE=`cat /tmp/msnhost.out`

wget -O - -q --post-data="sender=$SENDER&password=$PASSWD&recipient=$TO1&message=$MESSAGE" http://localhost/msn/index.php

wget -O - -q --post-data="sender=$SENDER&password=$PASSWD&recipient=$TO2&message=$MESSAGE" http://localhost/msn/index.php

记得chmod +x ..  不然没执行权限... 

原本想MSN给群发送消息.这样效率会快一些,但是实验不成功...发送多人消息又不能以逗号隔开.只好多写几条命令.达到的效果是一样的. 如果发送的消息是空的或者发送失败.注意下./tmp/msnhost.out跟 /tmp/msnservice.out的权限.

现在Nagios+MSN报警已经完成了.

还有最后一步. 上班时间发MSN消息 .下班发送手机报警 .

修改Nagios的timeperiods.cfg

自己定义下时间.我这里定义了两个.workhours 跟free_times

define timeperiod{

        timeperiod_name workhours

        alias           Normal Work Hours

        monday        09:00-18:00

        tuesday         09:00-18:00

        wednesday      09:00-18:00

        thursday        09:00-18:00

        friday          09:00-18:00

        }

define timeperiod{

        timeperiod_name free_times

        alias           Normal Work Hours

        sunday         18:01-08:59

        monday        18:01-08:59

        tuesday         18:01-08:59

        wednesday      18:01-08:59

        thursday        18:01-08:59

        friday          18:01-08:59

        saturday        18:01-08:59

        }

修改飞信的报警时间参数(我们的飞信报警是设置在templates.cfg配置文件里)

service_notification_period     24x7   // 改为free_times             

host_notification_period       24x7   // 改为free_times

修改MSN的报警时间参数(这个是在contacts.cfg ,我们刚刚新加的)

service_notification_period     24x7   // 改为workhours             

host_notification_period       24x7   // 改为workhours

这样上班时间的报警就发送到MSN上.下班后才发送到手机.方便多了.

来张报警效果图:

wps_clip_image-15791

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值