로그 파일에서 일정 패턴을 추출해 내는 script. 일정 시간 간격으로 계속해서 특정 로그 파일을 바라보며,
이전에 추출했던 파일과 비교(diff)하여, 새로 잡아진 로그만 추출하는 스크립트
cat monitoring.sh
#!/bin/sh
#$1 log path /app/waslog/accsvr11
#$2 timestamp 11:12:34
LOG_PATH=$1
TIMESTAMP=$2
LOG_FILE=SystemOut.log
#LOG_FILE=SystemOut_09.03.23_16.00.00.log
COUNT=0
STATUS=0
while [ ${COUNT} -lt 100 ]
do
cat $LOG_PATH/$LOG_FILE | grep ERR-CRITICAL > $LOG_PATH/${LOG_FILE}_ERR_FILTERED_${TIMESTAMP}
touch $LOG_PATH/${LOG_FILE}_ERR_FILTERED
diff $LOG_PATH/${LOG_FILE}_ERR_FILTERED_${TIMESTAMP} $LOG_PATH/${LOG_FILE}_ERR_FILTERED
STATUS=`echo $?`
rm -f $LOG_PATH/${LOG_FILE}_ERR_FILTERED
mv $LOG_PATH/${LOG_FILE}_ERR_FILTERED_${TIMESTAMP} $LOG_PATH/${LOG_FILE}_ERR_FILTERED
COUNT=`expr ${COUNT} + 1`
echo "Monitoring... ${TIMESTAMP} - ${COUNT} times Status = ${STATUS}"
# when diff emit something, the return code is 1, it means there's something to be notified
if [ ${STATUS} -eq 1 ]; then
exit 0
fi
sleep 10
done
이 글은 스프링노트에서 작성되었습니다.