Shell Construction Alarm System

Source: Internet
Author: User

Shell Alarm System

Demand:
Use Shell to customize a variety of personalized alarm tools, unified management, standardized management;

Ideas:
Specifies a script package that contains the main program, subroutine, configuration file, mail engine, log, and so on;

Introduced:

Main program: As the whole script entrance, is the lifeblood of the whole system;
Configuration file: Control center, used to switch elder brother subroutine, specify each associated log file;
Subroutine: A real monitoring script to monitor each indicator;
Mail engine: A python program that defines the server, sender, and password to send mail to;
Output log: The log output of this monitoring system;

Program Architecture:

Main directory Mon: Contains bin, conf, shares, mail, log directory;

Bin: Main Program
Conf: Configuration file
Shares: Sub-program individual monitoring scripts
Mail: Messaging Engine
LOG: Logs

Main program

main.sh

Code:

#!/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"    exitfiexec 1>>../log/mon.log 2>>../log/err.logecho "`date +"%F %T"` load average"/bin/bash ../shares/load.sh#先检查配置文件中是否需要监控502if 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.shfi
Configuration file

Mon.conf

Code:

## to config the options if to monitor## 定义mysql的服务器地址、端口以及user、passwordto_mon_cdb=0   ##0 or 1, default 0,0 not monitor, 1 monitordb_ip=10.20.3.13db_port=3315db_user=usernamedb_pass=passwd## httpd   如果是1则监控,为0不监控to_mon_httpd=0## php 如果是1则监控,为0不监控to_mon_php_socket=0## http_code_502  需要定义访问日志的路径to_mon_502=1logfile=/data/log/xxx.xxx.com/access.log## request_count   定义日志路径以及域名to_mon_request_count=0req_log=/data/log/www.discuz.net/access.logdomainname=www.discuz.net
Sub-Program load.sh

Code:

#! /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 [email protected] "$addr\_load:$load" `cat ../log/load.tmp`fiecho "`date +%T` load is $load"
502.sh

Code:

#! /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.tmpfiecho "`date +%T` 502 $c_502"
disk.sh

Code:

#! /bin/bash##Writen by aming##rm -f ../log/disk.tmpfor r in `df -h |awk -F ‘[ %]+‘ ‘{print $5}‘|grep -v Use`do    if [ $r -gt 90 ] && [ $send -eq "1" ]then    echo "$addr `date +%T` disk useage is $r" >>../log/disk.tmpfiif [ -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

Shell Construction Alarm System

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.