서비스를 운영하다 보면 서버에 쌓이는 다양한 로그를 수집해서 분석해 봐야 하는 경우가 많이 있습니다.


특히 커널의 audit 로그나 sshd 로그등은 혹시 시스템에 공격을 시도한 흔적이 있는지 확인할 경우 유용합니다. 


로그는 대개 텍스트 파일이므로 less 나 tail 같은 명령어를 사용하여 볼 수 있으며 시스템 로그이므로 root 권한을 필요로 합니다.

less 로 로그를 볼 경우 -r 옵션을 추가해 주면 특수 문자나 색상을 제대로 표시해 줍니다.

less -r /var/log/boot.log

매일 생성되는 로그의 양이 많기때문에 일일이 눈으로 확인하는 것은 불가능하며 로그의 대다수는 정상 작동 내역을 기록하므로 이상이 발생하더라도 찾아내기가 힘듭니다.


logwatch 는 Linux 용 시스템 로그 모니터링 프로그램으로 시스템 로그중 중요하다고 판단되는 내용만을 뽑아서 결과를 정기적으로 root 에게 email 로 전송해 주는 역할을 수행합니다.


fluentd 나 logstash 같은 더 전문적인 로그 취합 및 분석 프로그램도 많지만 관리하는 리눅스 시스템이 많지 않다면 logwatch 가 설정도 간단하고 가볍게 사용할 수 있습니다.


설치

CentOS 와 우분투 모두 패키지로 제공되고 있으므로 패키지 관리자로 logwatch 를 설치하면 됩니다.



설정

기본적으로 logwatch 는 로그 파일 내용으로부터 보고서를 만들어서 하루에 한번 메일로 전송합니다.

기본 설정은 CentOS 의 경우 /usr/share/logwatch/default.conf/logwatch.conf 이며 이를 복사해서 사용할 설정 파일을 만듭니다.


sh -c 를 안 쓰고 cat 만 쓰면 cat /usr/share/logwatch/default.conf/logwatch.conf 만 root 권한으로 실행되어 permission denied 에러가 납니다.


우분투의 설정 파일은 /usr/share/logwatch/default.conf/logwatch.conf 이며 이 파일을 직접 수정하면 됩니다.


이제 설정 방식은 key=value 형식이며 주요 설정 항목은 아래와 같습니다.

확인을 위해 명령행에서 logwatch 를 치면 설정한 이메일로 로그가 전송됩니다.


그리고 날마다 실행되는 크론 명령어가 있는 디렉터리인 /etc/cron.daily/ 에 0logwatch 가 등록되어 있으므로 정해진 시간에 자동화된 보고서가 설정한 이메일로 전송됩니다.



만약 logwatch의 매일 보고서를 중지하려면 기본 설정 파일(/usr/share/logwatch/default.conf/logwatch.conf )내DailyReport=no 를 추가해 주면 됩니다.