旌旗博客

2007-02-09

系统监控使用短信进行通知

Filed under: I.T. — 标签: — rocky @ 18:11

code.screen, div.codescreen{
font-family: monospace;
font-size: 1em;
display: block;
padding: 10px;
border: 1px solid #bbb;
background-color: #eee;
color: #000;
overflow: auto;
border-radius: 2.5px;
-moz-border-radius: 2.5px;
margin: 0.5em 2em;
}

1、发送短信:

       原来我是利用bj1860的邮箱的短信通知进行发短信,调用sendmail发送邮件就可以了。这个是要一条1毛钱的,现在公司有了移动的信息机,自然要好好利用了。只是信息机不是托管在IDC,也没有固定IP。没关系,劳动人民的力量是无穷的。

       1.1 我们先来做个动态dns。外面有些做DDNS服务的,但是也是要钱的。穷人有穷人的活法:
         在信息机上做个计划任务,每10分钟执行一次这个批处理:

d:\\cygwin\\bin\\wget -O ip.txt http://穷人的服务器/ddns/registerip.php

         穷人的服务器上有个registerip.php:

<?php    
   echo $_SERVER["REMOTE_ADDR"];
   $handle = fopen ("ip.txt","w");
   fwrite($handle,$_SERVER["REMOTE_ADDR"]);
   fclose ($handle); 
?> 

         这样就在服务器上生成了一个记录了信息机网关IP的文件http://穷人的服务器/ddns/ip.txt。在服务器上要想访问信息机,还需要在信息机的网关的上做端口映射才行。             

       1.2 在服务器上做个shell程序以方便的调用信息机上的发送短信接口:

         信息机上的发送短信接口为:http://信息机IP/sendSMS.php?phoneNumber=手机号&content=短信内容。于是向单个手机号发送短信的shell程序sendsms.sh:


#!/bin/bash
declare -a smscontent=`echo $2 | sed -e "s/\ /+/g"`         #URL中的参数里用+代替空格
`wget -q -O - http://穷人的服务器/ddns/ip.txt | sed -e "s/^/wget -q -O - http:\/\//g" | sed -e "s/$/\/sendSMS.jsp?phoneNumber=$1\&content=$smscontent/g" | sed -e "s/\&/\\\&/g" `  #从ip.txt取得IP地址,然后再前面加上"wget -q -O - http://",在后面加上"\sendSMS.jsp?phoneNumber=$1\&content=$smscontent",再执行这条命令

         我们有多个人想得到通知,简单,再做个多发送的shell程序sendsms2.sh:


#!/bin/bash
echo $1 | awk -F";" '{for (i=NF;i>0;--i) print "/home/rocky/sendsms.sh ",$i," "}' | sed -e "s/$/$2;/g" | csh

         这样向多个手机号发送短信就这样写就行了:


sendsms2.sh "13910920000;13911060000" "短信内容"

 

2、定期监控:

    1.1 监控磁盘空间:

          监控如果/var空间使用率超过85%则发送告警,使用crontab -e增加一条,每天9点15分检查:


15 09 * * * df | grep "/var" | awk '{ print $5 }' | awk -F"\%" '{print $1}' | awk '{ if ($1 > 85){print "/usr/local/bin/sendsms2.sh \"13910920000;13911060000\" \"insufficient+disk+space+on+server\" "} }' | csh

    1.1 监控oracle连接数如果超过100则告警,9点到23点之间每半小时检查一次:

*/30 9-23 * * * ps -ef | grep oracle | wc -l | awk '{ if ($1 > 100){print "/usr/local/bin/sendsms2.sh \"13910920000;13911060000\" \"too many oracle connections\" "} }' | csh

没有评论 »

还没有评论呢。

这篇文章上的评论的 RSS feed TrackBack URL

留下评论

Powered by WordPress