编写简易脚本实现监控服务是否正常, 如果不正常邮件报警

本来想弄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

上午和下午各一次验证,如果服务没起来,就会发邮件给我自己.
说明环境有问题需要自己去看. 
原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/12821235.html