이 스크립트는 주어진 로그 경로에서 특정 패턴(예: "error" 또는 "exception")을 포함하는 가장 최근의 로그 파일을 찾아 그 안의 오류 수를 세는 작업을 수행합니다.
#!/bin/bash
source /home/shell/env.sh
# 로그 패스 별로 한 개씩 만든다
LOG_PATH_1="/tomcat/logs
- 로그 파일이 위치한 경로를 변수로 저장
#체크할 로그를 배열로 입력
LOG_NAMES_1=("tomcat*")
- 체크할 로그 파일 이름 패턴을 배열에 저장
- 위 경우, "tomcat"으로 시작하는 모든 로그 파일입니다.
checkline_1=1000
- 로그 파일의 마지막 1000줄만 검사하도록 설정
check_1="error|exception"
- "error" 또는 "exception" 문자열을 포함한 로그를 검색할 패턴 정의
error_count=0
- 오류의 총 개수를 저장할 변수 초기화
for LOG_NAME in "${LOG_NAMES_1[@]}"
- 배열 LOG_NAMES_1의 각 요소에 대해 루프 시작
do
# 로그 경로에서 특정 문구를 포함한 로그 파일 중 가장 최근 것을 불러오는 스크립트
logfile=$(find $LOG_PATH_!1 -type f -name $LOG_NAME -prints '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}')
- find 명령어를 사용하여 LOG_PATH_1에서 LOG_NAME 패턴에 맞는 파일들을 찾습니다.
- -type f는 파일만 검색하도록 설정
- -name $LOG_NAME는 파일 이름 패턴 지정
- -prints '%T@ %p\n'는 파일의 수정 시간을 포함한 출력 형식 지정
- sort -n는 시간 순으로 정렬
- tail -1은 가장 최신 파일을 선택
- awk '{print $2}'는 파일 이름만 추출
# errors 수 표현
if [ -s "$logfile" ]; then
- logfile이 비어 있지 않은지 확인
errors=$(tail -$checkline_1 "$logfile" | grep -iE "$check_1" | wc -l)
- tail -$checkline_1 "$logfile"는 로그 파일의 마지막 checkline_1줄을 가져옴
- grep -iE "$check_1"는 대소문자 구분 없이 패턴에 맞는 줄 검색
- wc -l는 매칭된 줄의 수를 셉니다.
error_count=$(expr $error_count + $errors)
- 현재 로그 파일에서 발견된 오류 수를 error_count에 더함
else
echo 101
exit 0
fi
done
echo $error_count
#!/bin/bash
source /home/shell/env.sh
# 로그 패스 별로 한 개씩 만든다
LOG_PATH_1="/tomcat/logs
#체크할 로그를 배열로 입력
LOG_NAMES_1=("tomcat*")
checkline_1=1000
check_1="error|exception"
error_count=0
for LOG_NAME in "${LOG_NAMES_1[@]}"
do
# 로그 경로에서 특정 문구를 포함한 로그 파일 중 가장 최근 것을 불러오는 스크립트
logfile=$(find $LOG_PATH_!1 -type f -name $LOG_NAME -prints '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}')
# errors 수 표현
if [ -s "$logfile" ]; then
errors=$(tail -$checkline_1 "$logfile" | grep -iE "$check_1" | wc -l)
error_count=$(expr $error_count + $errors)
else
echo 101
exit 0
fi
done
echo $error_count
'리눅스' 카테고리의 다른 글
모니터링 쉘 스크립트 만들기(6) (0) | 2024.05.27 |
---|---|
모니터링 쉘 스크립트 만들기(5) (0) | 2024.05.24 |
모니터링 쉘 스크립트 만들기(3) (0) | 2024.05.22 |
모니터링 쉘 스크립트 만들기(2) (0) | 2024.05.21 |
모니터링 쉘 스크립트 만들기(1) (1) | 2024.05.20 |