경고 모니터링 시스템 구축 (상)

[toc]
경고 모니터링 시스템 개발
수요 분석
  • [] 수요:
  • 셸 을 사용 하여 각종 맞 춤 형 경고 도 구 를 만 들 지만 통일 화 관리, 규범화 관리 가 필요 합 니 다.
  • [] 사고방식:
  • 주 프로그램, 서브루틴, 프로필, 메 일 엔진, 출력 로그 등 을 포함 하 는 스 크 립 트 패 키 지 를 지정 합 니 다.
  • [] 주 프로그램:
  • 전체 스 크 립 트 의 입구 로 서 시스템 의 명맥 입 니 다.
    프로필:
    제어 센터 입 니 다. 각 서브루틴 을 끄 고 연 결 된 로그 파일 을 지정 합 니 다.
  • [] 서브루틴:
  • 이것 이 야 말로 진정한 감시 스 크 립 트 로 각 지 표를 감시 하 는 데 쓰 인 다.
  • [] 메 일 엔진:
  • 메 일 을 보 내 는 서버, 메 일 보 내 는 사람, 보 내 는 사람 비밀 번 호 를 정의 할 수 있 는 python 프로그램 입 니 다.
  • [] 출력 로그:
  • 전체 모니터링 시스템 에 로그 출력 이 있어 야 합 니 다.
    2. 경고 시스템 메 인 스 크 립 트
    좋 은 습관 에 따라 모든 스 크 립 트 를/usr/local/sbin 디 렉 터 리 에 놓 고 하위 디 렉 터 리 를 만 듭 니 다.
    2.1 메 인 스 크 립 트
    2.1.1 해당 디 렉 터 리 만 들 기
    [root@xavi ~]# cd /usr/local/sbin
    [root@xavi sbin]# mkdir mon
    [root@xavi sbin]# cd mon
    [root@xavi mon]# mkdir mail bin shares conf log
    [root@xavi mon]# ls
    bin  conf  log  mail  shares
    #!/bin/bash
    
    #          (              ,      ,       。)
    # export      send          
    export send=1
    
    #   ip  (   :    ,            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
        export log=`grep 'logfile=' $conf_file |awk -F '=' '{print $2}' |sed 's/ //g'`
        /bin/bash ../shares/502.sh
    fi

    3. 경고 시스템 설정 파일
    [root@xavi bin]# cd ../conf
    [root@xavi conf]# vim mon.conf
    
    ## to config the options if to monitor
    ##   mysql      、    user、password(   cdb        ,       )
    to_mon_cdb=0  ##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         )
    to_mon_502=1
    logfile=/data/log/xxx.xxx.com/access.log
    ## request_count            (     ,    0   1    )
    to_mon_request_count=0
    req_log=/data/log/www.xxx.com/access.log
    domainname=www.xxx.com

    설명: 왜 내 가 여기 서 log 를 정의 합 니까?
    서버 데스크 톱 이 많다 면 스 크 립 트 의 유 니 버 설 과 수정 성 을 고려 해 야 합 니 다.환경 변화 가 목적 입 니 다. 설정 파일 만 조절 하면 됩 니 다.
    4. 모니터링 프로젝트
    4.1 경고 시스템 load. sh
    [root@xavi conf]# cd ../shares
    [root@xavi shares]# vim load.sh

    4.1.1 지정 한 디 렉 터 리 로 이동 하고 설정
    #! /bin/bash
    
    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
      # load.tmp        ,mail.sh   mail.py
        /bin/bash ../mail/mail.sh [email protected] "$addr\_load:$load" `cat ../log/load.tmp`
    fi
    echo "`date +%T` load is $load"
    #         

    4.1.2 스 크 립 트 분석
  • [] load: 의 값 은 시스템 에 설정 하여 정확 한 지 확인 할 수 있 습 니 다 (정수 획득).
  • [] 경고 전제: 그리고 부하 값 에 대해 판단 합 니 다 (판단 하 는 값 은 자신의 실제 server 하드웨어 에 따라 적당 한 값 을 설정 할 수 있 습 니 다!)
  • [] 메 일 경고 보 내기: 부하 가 10 이 넘 고 유지 모드 (메 인 프로필 정의)
  • 가 아 닙 니 다.
  • [] 실행 동작: 로 그 를 기록 하고 메 일 을 보 내 는 스 크 립 트 를 실행 합 니 다 (나중에 소개 합 니 다).
  • [] 스 크 립 트: 부하 보다 높 으 면 경고 합 니 다.부하 보다 높 지 않 으 면 로그 에 기록 합 니 다.

  • 4.2 경고 시스템 502. sh
    4.2.1 현재 디 렉 터 리 에 직접 모니터링 스 크 립 트 만 들 기:
    [root@xavi shares]# pwd
    /usr/local/sbin/mon/shares
    [root@xavi shares]# vim 502.sh
    
    #! /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
    fi
    echo "`date +%T` 502 $c_502"

    4.2.2 스 크 립 트 분석
    1 분 전 로그 파일 을 캡 처 하고 502 의 횟수 가 10 회 를 넘 거나 유지 보수 모드 (메 인 스 크 립 트 가 정의 되 지 않 음) 에 있 지 않 으 면 메 일 로 메 일 을 보 냅 니 다. 없 으 면 로그 만 기록 합 니 다.
    4.3 경고 시스템 disk. sh
    4.3.1 모니터링 스 크 립 트 만 들 기 (시스템 언어 가 영어 인 경우 영어 가 아니라면 스 크 립 트 에서 시스템 언어 를 LANG = en 으로 변경 해 야 합 니 다):
    [root@xavi shares]# vim disk.sh
    
    #! /bin/bash
    
    LANG=en
    rm -f ../log/disk.tmp
    ##      %    ,             。
    for 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.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

    스 크 립 트 분석:
  • [] 모든 디스크 구역 감시
  • [] 각 디스크 의 사용 한 백분율 보기
  • [] 파 티 션 사용량 에 대한 경고 치 설정
  • [] 임시 파일 쓰기
  • [] 다시 한 번 판단 하여 파일 이 존재 하면 메 일 로 신고 하고 로 그 를 기록 합 니 다
  • 좋은 웹페이지 즐겨찾기