리눅스 모니터링 스크립트 - linugseu moniteoling seukeulibteu

#!/bin/sh

#MEMORY 사용율

MEMORY_TOTAL=`free | grep ^Mem | awk '{print $2}'`

MEMORY_USED=`free | grep ^-/+ | awk '{print $3}'`

MEMORY_PERCENT=$((100*MEMORY_USED/MEMORY_TOTAL))

#CPU 사용율

CPU_PERCENT=`top -b -n 1 | grep -i cpu\(s\)| awk -F'{print $4}| tr -d "%id," | awk '{print 100-$1}'`

#DISK 사용율

DISK_TOTAL=`df -P | grep -v ^Filesystem | awk '{sum += $2END { print sum; }'`

DISK_USED=`df -P | grep -v ^Filesystem | awk '{sum += $3END { print sum; }'`

DISK_PERCENT=$((100*$DISK_USED/$DISK_TOTAL))

echo $MEMORY_PERCENT $CPU_PERCENT $DISK_PERCENT

[LINUX] shell script를 이용하여 시스템 모니터링

shell 스크립트를 이용해서 시스템의 서비스 포트 상태를 확인 후 서비스 포트에 문제가 있으면 메일 발송

1. vi로 "check.sh" 파일 생성

# vi check.sh

2. "check.sh" 파일 안에 내용을 입력

#!/bin/bash

SUBJECT="subject" // 보낼 메일의 제목

MESSAGE="message" // 보낼 메시지

EMAIL="" // 받는 메일 주소

SEND="" // 보내는 메일 주소

SERVER=1.1.1.1 // 서비스 체크할 서버 주소

PORT=22 // 서비스 체크할 포트

SMTP=2.2.2.2 // SMTP 서버 IP

if nc -nvz -w 1 $SERVER $PORT > /dev/null;then // 정상이면

CHK=1  // 임의로 데이터 저장 처리 -> 의미 없음

else // 비정상이면

mail -r "$SEND" -s "$SUBJECT" -S smtp=smtp://$SMTP:25 "$EMAIL" <<EOF // 본문 메시지 입력을 위해 EOF 사용

$MESSAGE

EOF // EOF 앞에 공백없이 사용해야 함.아니면 에러남.

fi

3. 메일 발송을 위해 mailx 라는 메일util을 설치해야 함.

이렇게 스크립트를 만든 후 cron에 등록해서 사용.

crontab 관련 시간 설정 시 참고

ponyozzang.tistory.com/402

리눅스 crontab 시간 설정 방법 예제 샘플

crontab 파일에 시간을 설정하는 방법을 알아보겠습니다. crontab 서식 분 시 일 월 요일 명령어또는 스크립트 단위  내용  분  분(0~59)을 설정. *을 설정한 경우 1분 단위로 실행.  시  시간(0~23)을

ponyozzang.tistory.com

리눅스 모니터링 스크립트 - linugseu moniteoling seukeulibteu

요렇게 설정 : 12시와 7시에 시스템 재기동이 있어서 재외

*/5 01-06,08-23 * * * : 5분마다 한 번씩 1시 ~ 6시, 8-23시

  • #!/bin/bash
    da=$(date +%Y%m%d%H%M%S)
    da1=$(date +%Y%m%d)
    echo "=====start file $da=====" >>/logs/reso/log/$da1"_"resource.log
    echo "date|totmem|usedmem|availmem|totcpu|ucpu|syscpu|iowait|real1cpu%|real1mem%|real1RSS|real2cpu%|real2mem%|real2RSS|real3cpu%|realmem%|real3RSS" >>/logs/reso/log/$da1"_"resource.log
    totmem=$(free | grep Mem | awk -F " " '{print $2}')
    while true; do
      da2=$(date +%Y%m%d%H%M%S)
      da3=$(date +%Y%m%d)
      usedmem=$(free | grep 'buffers/cache' | awk -F " " '{print $3}')
      availmem=$(free | grep Mem | awk -F " " '{print $4+$6+$7}')
      cpu=$(mpstat 2 2 | tail -1 | awk -F " " '{print 100-$11"|"$3"|"$5"|"$6}')
      real1=$(ps aux | grep java | grep gate-web | grep -v grep | awk -F" " '{print $3"|"$4"|"$6}')
      real2=$(ps aux | grep java | grep external-web | grep -v grep | awk -F" " '{print $3"|"$4"|"$6}')
      real3=$(ps aux | grep java | grep cbpp | grep -v grep | awk -F" " '{print $3"|"$4"|"$6}')
      real4=$(ps aux | grep java | grep tlo | grep -v grep | awk -F" " '{print $3"|"$4"|"$6}')
      real5=$(ps aux | grep java | grep cli | grep -v grep | awk -F" " '{print $3"|"$4"|"$6}')
      real6=$(ps aux | grep 'nginx: master' | grep -v grep | awk -F" " '{print $3"|"$4"|"$6}')
      real7=$(ps aux | grep 'nginx: worker' | grep -v grep | awk -F" " '{print $3"|"$4"|"$6}')
    
      #echo&5sec
      echo $da2"|"$totmem"|"$usedmem"|"$availmem"|"$cpu"|"$real1"|"$real2"|"$real3"|"$real4"|"$real5"|"$real6"|"$real7 >>/logs/reso/log/$da3"_"resource.log
      sleep 1
    done
    

    TAG