码迷,mamicode.com
首页 > 其他好文 > 详细

20.20 告警系统主脚本

时间:2018-06-04 14:26:48      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:1

20.20 告警系统主脚本


因为这个监控系统是分布式的,每台机器都需要部署同样的监控脚本;唯一不同的就是,不同的机器本机自身参数不同(ip地址,主机名等等),修改对应的参数即可。

所以,首先定义一套监控脚本出来,然后其他需要监控的linux服务器需要从这copy到自己的服务器上面。

约定一个小习惯:

以后把shell脚本放到/usr/local/sbin/下,方便以后查找


操作

1 创建监控中心父目录以及各个子目录

[root@centos7-01 ~]# cd /usr/local/sbin/

[root@centos7-01 sbin]# mkdir mon

[root@centos7-01 sbin]# cd mon/

[root@centos7-01 mon]# mkdir bin conf shares log mail

[root@centos7-01 mon]# ls

bin  conf  log  mail  shares

目录说明:

bin下是主程序

conf下是配置文件

shares下是各个监控脚本

mail下是邮件引擎

log下是日志


2 在bin下面创建主脚本

[root@centos7-01 mon]# cd bin/

[root@centos7-01 bin]# vim mail.sh

#!/bin/bash

#Written by aming.

# 是否发送邮件的开关

export send=1

# 过滤ip地址

export addr=`/sbin/ifconfig |grep -A1 "ens33: " |awk '/inet/ {print $2}'`

dir=`pwd`

# 只需要最后一级目录名

last_dir=`echo $dir|awk -F'/' '{print $NF}'`

# 下面的判断目的是,保证执行脚本的时候,我们在bin目录里,不然监控脚本、邮件和日志很有可能找不到

if [ $last_dir == "bin" ] || [ $last_dir == "bin/" ]; then

    conf_file="../conf/mon.conf"

else

    echo "you shoud cd bin dir"

    exit

fi

exec 1>>../log/mon.log 2>>../log/err.log

echo "`date +"%F %T"` load average"

/bin/bash ../shares/load.sh

#先检查配置文件中是否需要监控502

if grep -q 'to_mon_502=1' $conf_file; then

    export log=`grep 'logfile=' $conf_file |awk -F '=' '{print $2}' |sed 's/ //g'`

    /bin/bash  ../shares/502.sh

fi


脚本解释:

export send=1  是否发送邮件,1表示是(监控的所有项目都会发送邮件),0表示否(一般系统处于维护状态设置0)。export表示send的变量会应用在所有的子脚本里面。

export addr=`/sbin/ifconfig |grep -A1 "ens33: " |awk '/inet/ {print $2}'` 过于ip地址的原因是,因为监控项目都是分布式,过滤ip地址可以快速定位是哪台服务器发送的邮件,从而达到追踪监控目的。定义主机名也可以代替此方法。


20.20 告警系统主脚本

标签:1

原文地址:http://blog.51cto.com/13578154/2124508

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!