本来想弄zabbix来着, 实在是对立面的概念不清不楚的. 今天早上趁着加班就用shell 脚本写一个监控服务是否正常的脚本 理论上每小时运行一次. 但是感觉没必要.
方法很简单 使用的工具有
telnet 和 mailx
1. 写一个脚本, 用telnet 去监听服务的端口是否正常开着.
如下
telnetall
:
telnet 10.24.22.133 5200 >133_5200.txt telnet 10.24.22.133 5100 >133_5100.txt telnet 10.24.22.133 5000 >133_5000.txt telnet 10.24.22.138 5200 >138_5200.txt telnet 10.24.22.138 5100 >138_5100.txt telnet 10.24.22.138 5000 >138_5000.txt telnet 10.24.22.139 5200 >139_5200.txt telnet 10.24.22.139 5100 >139_5100.txt telnet 10.24.22.139 5000 >139_5000.txt telnet 10.24.22.234 5200 >234_5200.txt telnet 10.24.22.234 5100 >234_5100.txt telnet 10.24.22.234 5000 >234_5000.txt
很 low了就留不仔细写循环了.
2. 因为telnet 有一个很坑爹的问题会导致卡住 在创建一个后台服务专门杀telnet的进程
while true;do count=`ps -ef|grep "telnet"|grep -v grep |wc -l` echo $count if [ $count != 0 ];then killall telnet fi sleep 5 done
使用 nohup & 让他在后台运行即可.
3. mailx 的安装和配置 这里面不在复述.
4. 编写一个脚本, 根据文件里面 有多少个 connected 来判断 多少个端口存活
文件为: mailservice
#!/bin/bash count=`find /alert -name "*.txt" |xargs grep Connected |wc -l` echo $count if [ $count != 12 ];then echo 自动化环境不可用,请进行处理 |mail -s 自动化环境不可用,请进行处理 zhaobenshuai630@163.com,zhaobsh@inspur.com fi
原理很简单, 查找是不是12行都是 connected的了 因为服务如果没起来 端口肯定不会被connected的
如果不等于12 说明有端口挂了 发邮件通知一下 负责人即可.
然后在将这几个脚本汇总一下 做成一个 alter 脚本
cd /alert ./telnetall ./mailservice
注意 killtelnet 是在后台运行的不需要放在脚本里面
5. 设置一个计划任务
crontab -e 输入一行为: 15 7,13 * * * /alert/alert 上午和下午各一次验证,如果服务没起来,就会发邮件给我自己. 说明环境有问题需要自己去看.