开发者社区> 技术小大人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

nagios sms 短信报警设置

简介:
+关注继续查看

 Nagios为了方便我们的管理工作,提供了至少3种表现手段:
1、web方式,即通过浏览器观看被监控的对象;如正常状态下,其状态(status)是以蓝色填充并显示一个OK。
2、邮件通知,发生故障时,到达设定重试次数和探测间隔时间后发送邮件给管理员或相关人员,报告问题的大致情况。
3、手机短信,这是非常有用和及时的功能了;晚上熟睡中,再也没可能看web页面或查阅邮件,可以一旦发生故障,手机短信却能把你随时唤醒。
一般情况下,这3者是同时进行的:上班时间开个浏览器看页面显示、打开邮件程序定时收取邮件、手机24小时在线。

 

正常情况下,没有任何服务器能向手机发送短消息的,要到达这个目的,得花钱购买短信服务(也有些人运用飞信一类的方式来达到这个目的,个人觉得对于运营网站不是太靠谱)。要是在几年前,自己申请短信通道还是有可能的,2005年以后似乎门槛提高了很多。当你付费成功后,短信服务商会给你提供入口及加密关键字;然后我们自己写个脚本就可以发送短信。以下是我的服务器用perl写的脚本:
#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use URI::Escape;
use Digest::MD5;
 
my ($mobile, $content) = @ARGV;
my $log_control = 1;
my $key = 'Ysdbyhd6T';
my $souce_content = substr($mobile, 0, 8) . substr($mobile, -10, 10) . $key;
my $md5 = Digest::MD5->new;
$md5->add($souce_content);
my $result_conent = uc($md5->hexdigest); 
 
my $url = "http://http.asp.sh.cn/MT.do?Username=sery&Password=([-BVG'0&Mobile=$mobile&Content=$content&Keyword=$result_conent";
my $result = get $url;
if($log_control) {
 my $fh;
 open($fh, '>> /var/log/sms.log') or die "can't open log: $!";
 print $fh join(' ', time, $result, "\n");
 close $fh;
}
(以上脚本由宇捷提供,转自田逸博客)
说明:
1my $key = 'Ysdbyhd6T'’ 短信服务商给的验证关键字。
2my $url=”…..”  短信服务商给的用户名、密码以及短信服务商的访问接口(url)全包括在这里了。
我们把这个文件放在目录 /usr/local/bin/ 下面,把它命名为 sms_send.pl ,用命令 chomod +x /usr/local/bin/sms.pl 给与它执行权限。这个脚本在各种各样的unixlinux下都可以正常工作,nagios报警短信发送就是靠它了。如果读者也打算拿这个脚本发送短信的话,只要改一下key值和url值就可以直接使用。
 
接下来就是验证是否可以发送短信,执行命令行 /usr/local/bin/sms.pl 13800138000  "It is a test" ,回车后数秒钟,你的手机应该能收到带有内容“It is a test”的短信息。为了保证短信服务的可靠性,我做了一个策略:每天下午6点定时给我发一个通知短信;告诉我短信发送是正常的,也是该下班回家了。做法:执行 crontab –e 然后输入行 00 18 * * * /usr/local/bin/sms.pl 13800138000  "It is Ok” 
 
修改commands.cfg配置文件
这个文件已经包含了发送邮件报警的部分,因此只需要再把短信报警的部分加上就可以了
  # 'notify-host-by-sms' command definition
define command{
        command_name    host-notify-by-sms
        command_line    /usr/local/bin/smssend $CONTACTPAGER$ "*** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ IP: $HOSTADDRESS$ is $HOSTSTATE$ ***"
        }

# 'notify-service-by-sms' command definition
define command{
        command_name    service-notify-by-sms
        command_line    /usr/local/bin/smssend $CONTACTPAGER$ "*** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$ IP: $HOSTADDRESS$ / $SERVICEDESC$ is $SERVICESTATE$ ***"
        }
第一个块定义主机报警的内容,即主机发生死机、恢复等情况发送手机短信报警,其接受者和发送内容由“$..$”定义的宏来决定。第二个块定义服务报警内容,即监控的服务或监控的主机资源发生故障时发送手机报警短信。Nagios规定,如果探测到被监控的主机停机或不可达,它就不再探测这个停机主机上的服务。通俗地一点理解:主机都停了,当然服务也跟着停了!另外一个需要注意的地方是命令行(command_line)路径一定要用全路径,这里调用的命令就是我们在全面编写的那个脚本sms.pl。
定义联系人配置文件contacts.cfg
     define contact {
     contact_name         user
     alias                system administrator
     service_notification_period    24x7
     host_notification_period       24x7
     service_notification_options   w,u,c,r
     host_notification_options       d,u,r
     service_notification_commands service-notify-by-email,service-notify-by-sms
     host_notification_commands     host-notify-by-email,host-notify-by-sms
     email                          user@163.com
     pager                          13800138000
     }
说明:
 服务通知选项 w-warning,u-unknown,c-critical,r-recovery.
 主机通知选项 d-down,u-unreacheable,r-recovery
 服务通知命令行及服务通知命令行在配置文件commands.cfg中得到定义,如果有报警发生,则邮件和手机短信一起发送给相关人,即下两行定义的email,pager.
 收报警信息的邮件和手机,一个人如有2个手机,手机号之间有逗号分隔,邮件也如此。



本文转自liang_simon51CTO博客,原文链接:http://blog.51cto.com/shubao    ,如需转载请自行联系原作者

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
nagios报警,禁用之
著名的开源服务监系统nagios拥有强大的功能,可谓服务器监控之神。它的功能之一就是故障告警。
1236 0
Nagios飞信linux系统免费短信报警配置
本人声明如需转载请保留如下信息: 作者:SOLARIS小兵MAIL:solarisxb@hotmail.comBLOG:http://solarisxb.cublog.cn/一、        前言:1、        nagios是一个非常好的系统监控工具,现在我的nagios系统已经正常运行,使用短信猫和邮件可以报警。
1205 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载