告警系统主脚本,告警系统配置文件,告警系统监控项目

栏目: 服务器 · 发布时间: 6年前

告警系统主脚本

  • 定义监控系统的各个目录,然后再去定义主脚本,因为是分布式的,所以需要每一台机器都需要定义,事先创建好各个脚本和各个目录,随后脚本直接拷贝过去即可,然后再去做一些更改
  • 所有的 shell 脚本放到 /usr/local/sbin/ 目录下,方便查找
    [root@akuilinux ~]# cd /usr/local/sbin/
    [root@akuilinux sbin]# mkdir mon
    [root@akuilinux sbin]# cd mon
    [root@akuilinux mon]# ls
    [root@akuilinux mon]# mkdir bin conf shares log mail
    [root@akuilinux mon]# ls
    bin  conf  log  mail  shares
  • 主脚本放在 bin目录下,主脚本作为一个入口,应该去判断配置文件,查看某监控项目是否需要监控,还需调用各个需要监控的子脚本
[root@akuilinux bin]# vim main.sh
#!/bin/bash
#Written by aming.
# 是否发送邮件的开关
#只要把send 改成了1,就会给下面所有的监控的项目都会发送邮件,export表示所有的变量会应用在所有的子脚本里(若是系统处于维护状态,就需要关闭所有的服务,这时候就需要先把告警关闭,否则会一直发邮件)
export send=1
# 过滤ip地址,可以定义一个hostname,这样可以知道是哪台机器
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
    #找出log的路径
    export log=`grep 'logfile=' $conf_file |awk -F '=' '{print $2}' |sed 's/ //g'`
    /bin/bash  ../shares/502.sh
fi

告警系统配置文件

  • 配置文件一定要放到conf目录下,名称必须为mon.conf,不能随意改动,因为在主脚本中已经设置好了
  • 就是定义一些开关,定义一些对应的日志路径,或者说监控 mysql 的用户名和密码,以及IP地址port端口等
    [root@akuilinux mon]# vim conf/mon.conf
    ## to config the options if to monitor
    ## 定义mysql的服务器地址、端口以及user、password
    to_mon_cdb=0   
    ##cdb等于0 or 1, default 0,0 not monitor, 1 monitor
    db_ip=10.20.3.13
    db_port=3315
    db_user=username
    db_pass=passwd
    ## httpd   如果是1则监控,为0不监控
    to_mon_httpd=0
    ## php 如果是1则监控,为0不监控
    to_mon_php_socket=0
    ## http_code_502  需要定义访问日志的路径
    to_mon_502=1
    logfile=/data/log/xxx.xxx.com/access.log
    ## request_count   定义日志路径以及域名
    to_mon_request_count=0
    req_log=/data/log/www.discuz.net/access.log
    domainname=www.discuz.net
  • 把请求日志摘出来的目的,就是考虑到要想把shell写得规范化,标准化,那你肯定要考虑监控的机器肯定不止1台;要想要让脚本通用,兼容性很强,就需要把所有需要监控的服务的日志都载入到配置文件中,改动起来方便,省得后期改动起来一个一个的对应脚本去修改,就太麻烦了

    告警系统监控项目

  • 定义子脚本,就是监控项目
  • 第一个load.sh是必须要有的,因为在主脚本中已经定义了任何一台机器都要监控系统负载
    [root@akuilinux 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`
    fi
    echo "`date +%T` load is $load"
  • 502.sh内容(502肯定需要一个日志),502涉及到一个访问日志,访问日志又设计到一个时间,因为脚本监控主脚本是的是1分钟执行一次,所以502监控,看的肯定1分钟以前访问日志的时间,信息
    #! /bin/bash
    d=`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就是定义发送给谁,发送的主题,发送的内容
    fi
    echo "`date +%T` 502 $c_502"
  • disk.sh内容(磁盘使用率),思路就是挨个把分区看下
    #! /bin/bash
    ##Writen by aming##
    rm -f ../log/disk.tmp
    for 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.tmp
    fi
    done
    if [ -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

以上所述就是小编给大家介绍的《告警系统主脚本,告警系统配置文件,告警系统监控项目》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning PHP 5

Learning PHP 5

David Sklar / O'Reilly / July, 2004 / $29.95

Learning PHP 5 is the ideal tutorial for graphic designers, bloggers, and other web crafters who want a thorough but non-intimidating way to understand the code that makes web sites dynamic. The book ......一起来看看 《Learning PHP 5》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具