背景:
当前有一服务实时在运行,从互联网搜索引擎(百度、360、bing等)搜索结果并返回。由于该服务被多个进程调用,负载均衡机制处理的并不好。
要求:
1)、定时监测该服务的返回状态,出现错误后,邮件告警。
2)、周期可以自定义。
2、定时监测服务状态实现
[root@lasearch]# cat running.sh
#!/bin/sh
step=5 #间隔的秒数,不能大于60
for(( i = 0; i < 60; i=(i+step))); do
DOWN_LOG="/home/yy/search/down_log.txt"
SUCC_LOG="/home/yy/search/success_log.txt"
SEARCH_ADDR="110.128.8.252:19783"
#cat /dev/null > $DOWN_LOG
#cat /dev/null > $SUCC_LOG
curTime=`date`
rst=`curl http://$SEARCH_ADDR/search?word=%E5%8D%8E%E8%A5%BF%E5%8C%BB%E9%99%A2\&sid=baidu\&page=1\&sort=1\&ie=utf-8\&query_code=Ebc31058 | grep "{"`
#echo "time = $curTime, rst = $rst"
if [[ $rst == "" ]]; then
echo "[$curTime] may be $SEARCH_ADDR is down!" >> $DOWN_LOG
else
echo "[$curTime] $SEARCH_ADDR is ok!" >> $SUCC_LOG
fi
sleep $step
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
关于邮件预警的思路:
1)同样上面shell脚本用Java探测实现,根据返回码来区分;
2)非200的实现邮件告警!Java自动邮件程序实现即可。
3、小结
需注意地方——curl中的url中含有”&”的时候,要加上”\”反斜杠处理。否则会报错。