-
[LINUX] CPU, 메모리 모니터링 Logger 스크립트LINUX 2022. 11. 28. 16:31
* 개요
자원 모니터링 중 임계치를 초과 했을때, 어떤 프로세스가 자원을 많이 차지 했는지 확인 할 필요가 있다. 물론 여러가지 툴을 통해서 가능하나 본 포스팅에서는 스크립트로 간단하게 로깅 하는 방법을 설명 한다.
* 쉘스크립트
: 1번 파라미터 --> CPU가 얼만큼 사용 됫을때 로깅 할 것인지
: 2번 파라미터 --> 메모리가 얼만큼 사용 됫을때 로깅 할 것인지
: 3번 파라미터 --> 보존할 파일 개수 (로그파일이 터져나는것을 방지 하기 위해 보존할 파일 개수 지정)
#!/bin/bash # sh PROCESS_CAPTURE.sh [cpu limits by percent] [rolling log file count] [log path] #CPU 사용율 CPU_PERCENT=`top -b -n 1 | grep -i cpu\(s\)| awk -F, '{print $4}' | tr -d "%id," | awk '{print int(100-$1)}'` #MEMORY 사용율 MEMORY_TOTAL=`free | grep ^Mem | awk '{print $2}'` MEMORY_NOMINAL_USED=`free | grep ^Mem | awk '{print $4}'` MEMORY_ACTUAL_USED=`free | grep ^Mem | awk '{print $7}'` MEMORY_NOMINAL_PERCENT=$((100*(MEMORY_TOTAL-MEMORY_NOMINAL_USED)/MEMORY_TOTAL)) MEMORY_ACTUAL_PERCENT=$((100* (MEMORY_TOTAL-MEMORY_ACTUAL_USED)/MEMORY_TOTAL)) TIME_COUNTER=0 SHELL_PATH=$4 cd $SHELL_PATH while [ $( echo "$TIME_COUNTER < 60" | bc -l) -eq 1 ] do START_TIME=`date +%s.%N` if [ $CPU_PERCENT -gt $1 ] || [ $MEMORY_ACTUAL_PERCENT -gt $2 ]; then # 생성할 파일은 YYYYMMDD_hhmmss.log로 생성 한다. YMDTMS=$(date +%G%m%d_%H%M%S) LOGFILE=$YMDTMS'.log' `top -b -n 1 >> "$LOGFILE"` fi # 현재 폴더에 파일이 00개 보다 많을때 생성 전에 정리 해 준다. FILE_CNT=`ls -la . | grep '.*[.]log' | wc -l` if [ $FILE_CNT -gt $3 ]; then `ls -t . | grep '.*[.]log' | tail -n "+$3" | xargs rm -f` fi sleep 10s END_TIME=`date +%s.%N` DURATION=$( echo "$END_TIME - $START_TIME" | bc -l ) TIME_COUNTER=$( echo "$TIME_COUNTER + $DURATION" | bc -l) done
* Cron JOB 등록
> crontab -e # 예제 > 매 1분마다 실행 * * * * * /etc/cron_script/스크립트파일명.sh
단위 내용 분 분(0~59)을 설정. *을 설정한 경우 1분 단위로 실행. 시 시간(0~23)을 설정. *을 설정한 경우 매시간 실행. 일 일(1~31)을 설정. *을 설정한 경우 매일 실행. 월 월(1~12)을 설정. *을 설정한 경우 매달 실행. 요일 요일(0~7)을 설정. *을 설정한 경우 월요일 부터 일요일까지 매일 실행. 명령어또는 스크립트 실행할 명령어 또는 프로그램등을 설정. : Cron 서비스 재실행
> systemctl restart crond.service
: Cron 실행 로그 확인
> cat /var/log/cron
* 참고자료
https://ponyozzang.tistory.com/402
리눅스 crontab 시간 설정 방법 예제 샘플
crontab 파일에 시간을 설정하는 방법을 알아보겠습니다. crontab 서식분 시 일 월 요일 명령어또는 스크립트 단위 내용 분 분(0~59)을 설정. *을 설정한 경우 1분 단위로 실행. 시 시간(0~23)을 설정. *을
ponyozzang.tistory.com
'LINUX' 카테고리의 다른 글
[SSL] SSL 만료일 체커 (feat. Github) (0) 2023.06.07 [보안] CentOS7의 OS 보안조치 (0) 2023.01.09 [REDHAT] 리눅스(RHEL8) NFS 구축 및 마운트 (0) 2022.12.27