IT 인프라/서버

리눅스 특정 시간대 로그 추출하기

시큐렛 2023. 12. 19. 12:03

서버의 로그가 디버그 모드로 쌓이고 그 양이 상당하다면 서버에서 로그를 확인할 경우 매우 오래 걸리고

메모리를 잡아먹어 서비스에 이상이 생길 수 있다.

또한 로컬PC로 다운받을 경우 다운시간이 오래 걸리고 용량이 너무 클 경우 메모장이나 툴에서 열리지 않는다.

 

이점을 해결하기 위해 특정 시간대의 로그만을 따로 추출하여 파일로 저장하는 방법으로 해결가능하다.

 

아래 명령어 처럼 awk 명령어를 사용하여 로그 데이터를 비교하고 자른 후 다른 파일로 저장한다.

 

awk '$2 >= "10:00:00" && $2 <= "11:00:00"' /app/server.log | grep "2023-12-19" > test.log

awk '$3 >= "10:00:00" && $3 <= "11:00:00"' /var/log/messages | grep "Dec 19" > test.log

 

첫번째 명령어의 형식은 2023-12-19 11:56:40,638 INFO  [stdout] 으로 시작되는 형식이며

두번째 명령어는 Dec 17 04:01:01 WEB systemd: 로 시작되는 형식의  12월 19일 10:00 ~ 11:00 까지의 server.log 로그 데이터를 test.log 파일로 저장하는 명령어이다.

 

여기서 $2, $3의 의미는 2번째, 3번째 필드를 의미하고 다음조건으로 해당값이 10:00:00 보다 크고 11:00:00 보다 작은 것을 출력한다.

 

그 후 grep으로 12월 19일이 포함된것을 추출하여 test.log로 덮어쓰기를 한다.