king_819 发表于 2011-12-14 10:11

,响一夜才让人烦恼呢.
chenyx 发表于 2011-12-14 10:02 http://bbs.chinaunix.net/images/common/back.gif


    所以预警阀值要设置的恰当

chenyx 发表于 2011-12-14 10:12

回复 41# king_819


    不是阀值的事情,我监控过一条线路,那条线路被施工搞断了,响了一夜 :em06:

king_819 发表于 2011-12-14 10:23

回复king_819


    不是阀值的事情,我监控过一条线路,那条线路被施工搞断了,响了一夜
chenyx 发表于 2011-12-14 10:12 http://bbs.chinaunix.net/images/common/back.gif


    监控线路? 是用的什么监控系统?smokeping?

king_819 发表于 2011-12-14 10:40

分享一个监控http的脚本#!/bin/sh
LANG=C

#被监控服务器、端口列表
server_all_list=(\
www.qq.com:80 \
www.163.com:80 \
www.sina.com:80 \
)



telnum=已开通飞信的手机号
passwd=飞信密码



date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")

#采用HTTP POST方式发送检测信息给接口程序interface.php,接口程序负责分析信息,决定是否发送报警MSN消息、手机短信、电子邮件。
send_msg_to_interface()
{
         if [[ $2 = "0" ]] || [[ $2 = "2" ]]; then
               #开始发送警报短信,13500000000是接收方手机号
               curl -m 600 -d username=${telnum} -d password=${passwd} -d sendto=13500000000 -d message=$1http://sms.api.bz/fetion.php
   echo "`date +'%Y-%m-%d %H:%M:%S'`      $1 ">> http_down.log
               #发送msn警报消息(如果不需要msn警报可以注释这行)
#               curl -m 600 -d menu=http -d date=$date -d ip=$server_ip -d port=$server_port -d status=$status http://127.0.0.1/monitor/interface.php
         fi;

}



server_all_len=${#server_all_list[*]}
i=0
while[ $i -lt $server_all_len ]
do
    server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}')
    server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}')
    server_message=" "
    if curl -m 10 -G http://${server_all_list[$i]}/ > /dev/null 2>&1
    then
      #status:    0,http down    1,http ok    2,http down but ping ok
      status=1
            echo "服务器${server_ip},端口${server_port}能够正常访问!";
                  server_message="服务器${server_ip},端口${server_port}能够正常访问!";
    else
      if curl -m 30 -G http://${server_all_list[$i]}/ > /dev/null 2>&1
      then
            status=1
            echo "服务器${server_ip},端口${server_port}能够正常访问!"
                  server_message="服务器${server_ip},端口${server_port}能够正常访问!";
      else
            if ping -c 1 $server_ip > /dev/null 2>&1
            then
                status=2
                echo "服务器${server_ip},端口${server_port}无法访问,但是能够Ping通!";
                            server_message="服务器${server_ip},端口${server_port}无法访问,但是能够Ping通!";
            else
                status=0
                echo "服务器${server_ip},端口${server_port}无法访问,并且无法Ping通!";
                            server_message="服务器${server_ip},端口${server_port}无法访问,并且无法Ping通!";
            fi
      fi
    fi
send_msg_to_interface "${server_message}" "${status}";
    let i++
done



interface.php (需要设置监控端服务器的让其可访问到,如:http://127.0.0.1/monitor/interface.php,与上面脚本对应)
这里需要一个PHP类sendMsg,用来通过PHP发送消息到MSN,下载后把目录解压到interface.php目录即可。



include('sendmsg/sendMsg.php');

//HTTP服务器监控
if (isset($_POST["menu"]))
{
if (htmlspecialchars($_POST["menu"]) == "http")   
{   
$date = htmlspecialchars($_POST["date"]);   
$ip = htmlspecialchars($_POST["ip"]);
   $port = htmlspecialchars($_POST["port"]);
   $status = htmlspecialchars($_POST["status"]);//状态,0表示无法访问,1表示正常,2表示无法访问但能ping通

   $message = '';
   switch($status)
   {
    case '0':
   $message = $ip . '服务器无法访问';
   break;
    case '1':
   $message = $ip . '服务器工作正常';
   break;
    case '2':
   $message = $ip . '服务器无法访问但能ping通';
   break;
   }

   if ($status == 0 && $status == 1)
   {
    $sendMsg = new sendMsg();
    $sendMsg->login('用来发消息的MSN帐号', '密码');
    $sendMsg->createSession('用来接收消息的MSN帐号');
    $sendMsg->sendMessage(iconv("GBK", "UTF-8", $message), 'Times New Roman', 'FF0000');

   }
}
}
如果利用sendEmail发送报警邮件:cd /opt
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar -zxvf sendEmail-v1.56.tar.gz
cd sendEmail-v1.56
cp sendEmail /usr/local/bin
chmod +x /usr/local/bin/sendEmail#sendEmail使用方法sendEmail -f 13512345678@139.com -t 13512345678@139.com -s smtp.139.com -u "from cacti" -xu 13512345678@139.com -xp 123456 -o message-charset=utf-8 -m “测试邮件发送” 把原脚本中的 curl -m 600 -d username=${telnum} -d password=${passwd} -d sendto=13500000000 -d message=$1http://sms.api.bz/fetion.php修改为:sendEmail -f 13512345678@139.com -t 13512345678@139.com -s smtp.139.com -u "from cacti" -xu 13512345678@139.com -xp 123456 -o message-charset=utf-8 -m $1

chenyx 发表于 2011-12-14 10:45

回复 43# king_819


    是smokeping

king_819 发表于 2011-12-14 12:27

回复king_819


    是smokeping
chenyx 发表于 2011-12-14 10:45 http://bbs.chinaunix.net/images/common/back.gif


    把你的smokeping配置文档在这分享下

chenyx 发表于 2011-12-14 13:51

回复 46# king_819


    那个配置文件网上太多了,就不用在这帖了.我就是按照网上的文档做的,没有配置,用的都是最基本的nagios的功能

king_819 发表于 2011-12-14 20:43

本帖最后由 king_819 于 2011-12-26 16:05 编辑

因squid对多核服务器支持不够理想,所以在每台freebsd服务器上(4核)开启了3个squid,系统环境是Freebsd 7.3


平稳的运行了一段时间,有一天客服反映网页无法打开,然后就对每台squid服务器进行检查,发现有台服务器其中的一个squid进程死掉了,重新启动该squid,一切正常,为了及时发现squid进程故障并重启squid,特写了以下脚本

定时器,每过10分钟检查一次,无限循环

vi /root/restart_squid.sh#!/bin/sh
while true   
do
Squid1_IP=`awk '/ifconfig_lo0_alias0/{print $2}' /etc/rc.conf`
Squid1Num=`netstat -an | grep -c $Squid1_IP`      
if [ $Squid1Num -lt 10 ] ; then   
    /usr/local/etc/rc.d/squid1 start
   /usr/local/etc/rc.d/squid1 restart
   adddate=`date +%Y-%m-%d`" "`date +%H:%M:%S`   
    echo "$adddate squid_1 started" >> /var/restart_squid.log   
fi
Squid2_IP=`awk '/ifconfig_lo0_alias1/{print $2}' /etc/rc.conf`
Squid2Num=`netstat -an | grep -c $Squid2_IP`      
if [ $Squid2Num -lt 10 ] ; then   
    /usr/local/etc/rc.d/squid2 start
   /usr/local/etc/rc.d/squid2 restart
   adddate=`date +%Y-%m-%d`" "`date +%H:%M:%S`   
    echo "$adddate squid_2 started" >> /var/restart_squid.log   
fi
Squid3_IP=`awk '/ifconfig_lo0_alias2/{print $2}' /etc/rc.conf`
Squid3Num=`netstat -an | grep -c $Squid3_IP`      
if [ $Squid3Num -lt 10 ] ; then   
    /usr/local/etc/rc.d/squid3 start
   /usr/local/etc/rc.d/squid3 restart
   adddate=`date +%Y-%m-%d`" "`date +%H:%M:%S`   
    echo "$adddate squid_3 started" >> /var/restart_squid.log   
fi
sleep 10m
done

vepeta 发表于 2011-12-15 10:25

都是大牛呀。学习了!

king_819 发表于 2011-12-15 15:19

都是大牛呀。学习了!
vepeta 发表于 2011-12-15 10:25 http://bbs.chinaunix.net/images/common/back.gif


    互相学习,共同进步
页: 1 2 3 4 [5] 6 7 8 9 10 11
查看完整版本: 有奖专家座谈——自动化运维案例分享讨论之二(特邀某大型网游运维总监“king_819”)