告警系统监控项目
- 定义子脚本,就是监控项目
第一个load.sh是必须要有的,因为在主脚本中已经定义了任何一台机器都要监控系统负载
[root@hf-01 mon]# cd shares/[root@hf-01 shares]# pwd/usr/local/sbin/mon/shares[root@hf-01 shares]# vim load.sh#! /bin/bash##Writen by aming##load=`uptime |awk -F 'average:' '{print $2}'|cut -d',' -f1|sed 's/ //g' |cut -d. -f1`#计算系统负载if [ $load -gt 10 ] && [ $send -eq "1" ]then echo "$addr `date +%T` load is $load" >../log/load.tmp #这条命令的目的是为了发送日志 /bin/bash ../mail/mail.sh aming_test@163.com "$addr\_load:$load" `cat ../log/load.tmp`fiecho "`date +%T` load is $load"
502.sh内容(502肯定需要一个日志),502涉及到一个访问日志,访问日志又设计到一个时间
- 因为脚本监控主脚本是的是1分钟执行一次,所以502监控,看的肯定1分钟以前访问日志的时间,信息
[root@hf-01 shares]# vim 502.sh#! /bin/bashd=`date -d "-1 min" +%H:%M`c_502=`grep :$d: $log |grep ' 502 '|wc -l`#截取一分钟以前的时间if [ $c_502 -gt 10 ] && [ $send == 1 ]; then echo "$addr $d 502 count is $c_502">../log/502.tmp /bin/bash ../mail/mail.sh $addr\_502 $c_502 ../log/502.tmp#mail就是定义发送给谁,发送的主题,发送的内容fiecho "`date +%T` 502 $c_502"
disk.sh内容(磁盘使用率)
- disk,思路就是挨个把分区看下
[root@hf-01 shares]# vim disk.sh#! /bin/bash##Writen by aming##rm -f ../log/disk.tmpfor r in `df -h |awk -F '[ %]+' '{print $5}'|grep -v Use` #[ %]+ 以 多个,空格 或者 % 作为分隔符,+号表示一个或多个;因为系统默认是英文,所以grep -v Use 过滤掉的就是 已用do if [ $r -gt 90 ] && [ $send -eq "1" ]then echo "$addr `date +%T` disk useage is $r" >>../log/disk.tmpfidoneif [ -f ../log/disk.tmp ]then df -h >> ../log/disk.tmp /bin/bash ../mail/mail.sh $addr\_disk $r ../log/disk.tmp echo "`date +%T` disk useage is nook"else echo "`date +%T` disk useage is ok"fi
- awk指定多个分隔符
[root@hf-01 shares]# echo "12:aa#123bb:22#ww" |awk -F '[:#]' '{print $3}'123bb[root@hf-01 shares]# echo "12:aa#123bb:22#ww" |awk -F '[:#]' '{print NF}'5[root@hf-01 shares]# echo "12:aa#123bb:22##ww" |awk -F '[:#]' '{print NF}'6[root@hf-01 shares]# echo "12:aa#123bb:22##ww" |awk -F '[:#]+' '{print NF}'5[root@hf-01 shares]#