很早之前就喜欢用移动的139的手机邮件来设置nagios报警邮件,当时联通的手机邮件短信功能还不是特别成熟,我尝试了如下的一些用法,感觉还是非常方便的;139的手机邮配置比较简单,而且短信报警很快,曾经系统组的同事为这个问题投拆过,在这里我以用了5年多的邮通号为例,这个其实在http://mail.wo.com.cn/smsmail/index.html的“邮件到达通知”一项,我们按照如下图示设置:
一、在公网服务器上实时监控重要的网站。
这个可以作为Nagios的辅助功能,这样我们就没有必要去购买配置的即时扫描网站的预警服务了,脚本内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/bash
while
:
do
status=`curl -s --
head
http:
//www
.1paituan.com
/index
.jsp |
awk
'/HTTP/ {print $2}'
`
if
[
"$status"
==
"200"
]
then
:
else
echo
"1paituan.com is critical"
| mail -s
"1paituan.com is critical.please check "
1309889xxxx@wo.com.cn
fi
sleep
5
done
|
然后我们将些脚本放在后台执行,命令如下:
1
|
nohup
sh
/root/monitor
.sh &
|
二、我帮许多朋友配置网站时,用的都是MySQL主从方案,有时顺便把他们监测下,以前发过此监控脚本第一版,这个是更改后的第二版,增加了DATA参数,可以准确定位是哪一个时间点MySQL主从出现了问题,并修正了第一版的一些bug,脚本内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#crontab time 00:10
#!/bin/bash
#check MySQL_Slave Status
#crontab time 00:10
MYSQLPORT=`
netstat
-na|
grep
"LISTEN"
|
grep
"3306"
|
awk
-F[:
" "
]+
'{print $4}'
`
MYSQLIP=`
ifconfig
eth0|
grep
"inet addr"
|
awk
-F[:
" "
]+
'{print $4}'
`
IO_env=`
echo
$STATUS |
grep
IO |
awk
' {print $2}'
`
SQL_env=`
echo
$STATUS |
grep
SQL |
awk
'{print $2}'
`
DATA=`
date
+
"%y-%m-%d %H:%M:%S"
`
if
[
"$MYSQLPORT"
==
"3306"
]
then
echo
"mysql is running"
else
echo
$MYSQLIP mysql is down
" | mail -s "
warn!server: $MYSQLIP mysql is down" 1309889xxxx@wo.com.cn
fi
if
[
"$IO_env"
=
"Yes"
-a
"$SQL_env"
=
"Yes"
]
then
echo
"Slave is running!"
else
echo
"Slave is not running!"
| mail -s
"warn! $DATA $MYSQLIP MySQL Slave is not running"
1309889xxxx@wo.com.cn
fi
|
然后每10分钟运行一次,我们编辑/etc/crontab文件,添加内容如下所示:
1
|
*
/10
* * * * root sh
/root/mysql_slave
.sh
|
大家如果考虑用手机邮的话,有些事情也请注意一下:
一、Linux服务器本身就有sendmaiil服务的,它发送邮件的功能的效果就不错,没必要再经过公司的邮箱服务器中转,我们以前尝试过,失败了;
二、发现联通的号延迟问题、到达问题还是很多,建议大家还是以移动的号为主;
三、这种报警策略只是作为Nagios监控系统的辅助手段而已。
本文转自 抚琴煮酒 51CTO博客,原文链接:http://blog.51cto.com/yuhongchun/676032,如需转载请自行联系原作者