* 개요
자원 모니터링 중 임계치를 초과 했을때, 어떤 프로세스가 자원을 많이 차지 했는지 확인 할 필요가 있다. 물론 여러가지 툴을 통해서 가능하나 본 포스팅에서는 스크립트로 간단하게 로깅 하는 방법을 설명 한다.
* 쉘스크립트
: 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
'LINUX' 카테고리의 다른 글
[SSL] SSL 만료일 체커 (feat. Github) (0) | 2023.06.07 |
---|---|
[보안] CentOS7의 OS 보안조치 (0) | 2023.01.09 |
[REDHAT] 리눅스(RHEL8) NFS 구축 및 마운트 (0) | 2022.12.27 |