본문 바로가기
IT 이야기/OS

시스템 Log 파일 관리 방법, 압축 자동화 구현 및 오류 처리

by youngmap 2023. 6. 27.
반응형

시스템 운영을 하다 보면 로그 파일이 쌓인다.

로그 관리 방법을 생각해보고 압축 자동화 시스템을 구현했다. 

그 과정에서 오류가 발생하여 처리했던 내용을 아래와 같이 기록한다.

 

1. 로그 관리 방법

로그는 어떻게 관리하는 것이 좋을까?

 

1) 로그로테이션

로그는 보통 로그로테이션을 설정하고 일자별로 파일을 생성하는 것이 관리하기 좋다.

 

2) 로그를 언제까지 보관할 것인가?

정책적으로 로그를 언제까지 보관할 것인지 결정한다.

별도 백업 폴더에 보관한 로그는 상당한 기간이 지나면 물리적 분리 백업 또는 완전 삭제한다.

 

3) 로그 압축해서 서버 용량 관리하기

한 달 전 로그파일은 거의 볼 필요가 없어지기 때문에 압축을 하고 백업폴더로 이동시켜 디스크 용량 관리한다.

압축하는 기준 역시 시스템 운영 담당자의 편의 또는 서버 용량을 고려하여 결정한다.

 

 

2. 자동화 방안

1) 젠킨스를 사용하자

젠킨스 JOB을 구성하고 Ant 빌드 스크립트 파일을 수행한다.

각 서버의 유효 계정으로 22번 포트 SSH 접속하여 절대경로의 쉘을 수행하는 아주 단순한 스크립트다.

배치 주기는 로그 생성 종료 이후 사용자가 적은 새벽에 매일 수행하도록 설정했다.

 

2) gzip 명령어로 로그를 .gz 압축하고 백업 폴더로 이동하는 쉘 작성

관리하고자 하는 수많은 서버에 각각 쉘을 작성했다.

배치 Job이 수행되는 시점으로부터 한 달 전 로그 파일을 .gz 으로 압축하고 백업 폴더로 mv 이동하는 쉘 스크립트를 작성했다.

 

 

3. 오류처리
빌드 스크립트 파일에는 각각의 서버에 접속하여 순차적으로 로그 압축 쉘을 실행하도록 구성했다.
그런데 어느날부터 젠킨스 잡 콘솔 로그에 아래 오류가 나면서 그다음 쉘이 수행되지 않는 현상이 발생하였다.

Remote command failed with exit status 1

원인은 첫번째 쉘이 수행되면서 exit 코드가 정상상태인 0을 리턴하지 않고 종료되는 바람에 두 번째 쉘 호출이 실패된 것이다.

사실 예외 처리를 해야하는게 맞다.

하지만 수많은 시스템을 운영하는 입장에서 조금이라도 시간을 절약하고 더욱 생산적인 일에 집중하는 게 맞을 것 같았다.

 

쉘 스크립트 마지막에 exit 0 을 추가하였다.

exit 0

이렇게 하면 경로가 잘못되거나 압축 대상이 없어도 정상 수행 코드인 0을 반환하면서 오류가 나지 않는다.

반응형