개인/리눅스

[리눅스] 시스템 로그 설정과 관리(logrotate)

OmeGa2 2020. 2. 16. 18:55

리눅스에서 로그는

리눅스 시스템에 관련된 사건이나 커널이나 데몬, 스케줄링, 메일 등 여러 프로그램에서

발생한 이벤트들은 각 서비스별로 구분되어 기록된다.

 

발생한 이벤트나 사건에 관련된 기록이 쌓인 파일을 로그라고 부른다.

시스템에 문제가 발생하면 해당 장비와 시간에 기록된 로그분석을 통해

프로그램에서 발생하는 각종 에러나 경고메시지를 확인해서 문제를 해결할 수 있다.

 

때문에 시스템을 관리하거나 보안에 대해서는 로그가 상당히 중요한 역할을 차지한다.

 

리눅스 초기에는 로그와 관련된 패키지로 syslog를 사용했다.

이후 syslog의 기능을 대폭 강화한 패키지인 rsyslog 로 대체되었다.

 

rsyslog는 rsyslogd 데몬으로 실행되며 멀티스레드나 TCP, SSL과 같은 여러 기능을

지원하고 MySQL 과 같은 데이터베이스와 출력포맷 제어 등 다양한 기능을 가지고 있다.

 

로그 관련 파일

1. /var/log/messages

시스템에서 발생하는 표준 메시지가 기록되는 파일로, 대부분의 로그가 이 파일에 쌓인다.

root만 읽을 수 있도록 설정된 이 파일은 날짜와 메시지가 발생한 호스트명 및 내부시스템이나

응용 프로그램 이름, 발생 메시지 순으로 기록된다.

 

2. /var/log/secure

인증에 기반한 접속관련 로그가 기록되는 파일이다.

보통 login 이나 tcp_wrappers, xinetd 관련 로그가 쌓인다.

 

3. /var/log/dmesg

커널부트 메시지 로그라고 불리며 시스템이 부팅할 때 출력되었던 로그가 쌓인다.

 

4. /var/log/maillog

메일 관련 작업 기록이 쌓이는 로그파일이다.

 

5. /var/log/xferlog

FTP 접속과 관련된 작업이 기록되는 파일이다.

 

 

rsyslogd 데몬관련 파일

 

syslog과 유사하며 기능이 강화된 rsyslog 패키지와 관련된 파일은 아래와 같다.

/etc/rc.d/init.d/rsyslog  = 데몬을 동작시키는 스크립트

/etc/rsyslog.conf         = 데몬의 환경설정 파일

/etc/sysconfig/rsyslog  = 데몬의 실행과 관련된 옵션 설정

/sbin/rsyslogd            = 데몬의 실행 명령

 

설정 파일

/etc/rsyslog.conf

rsyslogd 데몬의 환경설정 파일이다.

 

▷ 기본 형식

[facility].[priority]    [action]

[프로그램].[위험수준]    [log의 위치]

 

facility는 일종의 서비스인데, 메시지를 발생시키는 프로그램의 유형이라고 볼 수 있다.

priority는 발생한 이벤트의 위험수준을 나타낸다. 설정한 수준보다 높아야 메시지를 보낸다.

설정값 앞에 '=' 를 사용할 경우 해당 레벨의 위험도와 같은 경우에만 메시지를 기록하고,

!는 제외시킬 때 사용한다.

action메시지를 보낼 목적지나 행동들에 관한 설정으로 보통 파일명을 사용한다.

 

▷ facility의 종류

[서비스를 의미하며 메시지가 발생하는 프로그램의 유형을 말한다.]

 

cron : cron, at과 같은 스케줄링에 관한 메시지

auth, security : login과 같은 인증프로그램에 관련된 메시지

authpriv : ssh와 같이 인증을 필요한 프로그램이 발생한 메시지

daemon : telnet이나 ftp등 여러 데몬에서 발생되는 메시지

kern : 커널이 발생한 메시지

lpr : 프린터 프로그램에 관련된 메시지

mail : 메일 시스템에서 발생하는 메시지

mark : syslogd에 의해 만들어지는 날짜 유형

news : 유즈넷 뉴스프로그램에서 발생한 메시지

syslog : syslog에서 발생한 메시지

user : 사용자 프로세스

uucp : UNIX to UNIX Copy Protocol 시스템이 발생한 메시지

local0 ~ 7 : 여분으로 남겨둔 유형

* : 모든 facility를 의미한다.

 

▷ priority의 종류

[위험의 정도를 나타낸다.]

none : 지정한 facility를 제외시킬 때 사용

debug : 프로그램을 디버깅할 때 발생하는 메시지

info : 통계, 기본정보

notice : 특별한 주의가 필요하나 에러는 아니다.

warning, warn : 주의가 필요한 경고

error, err : 에러 발생 메시지

crit : 급하지는 않지만 시스템에 문제가 생기는 단계

alert : 즉각적인 조정이 필요한 경보 메시지

emerg, panic : 모든 사용자가 알아야하는 위험상황

 

▷ action의 종류

[메시지를 보낼 목적지나 행동들에 관한 설정으로 보통 파일명을 사용한다.]

file : 지정한 파일에 로그를 기록

@host : 지정한 호스트로 메시지를 전달

user : 지정한 사용자가 로그인한 경우 터미널로 전달

* : 로그인된 모든 사용자에게 전달

 

▷ 사용 예시

*.emerg    *

= emerg 문제가 발생하면 모든 사용자에게 메시지를 전달한다.

 

authpriv.*    root

= 인증관련 모든 로그를 root에게 전달한다.

 

mail.*;mail.!=info    /var/log/maillog

= 메일 관련 모든 로그는 maillong에 기록하는데, info 수준의 메시지는 제와한다.

 

 

 

 

로그파일 관리

로그파일은 계속 덧붙여가며 쌓이는 형태라서 오래 방치되면 파일의 크기가 점점 커지게 된다.

 

불필요한 로그파일의 크기는 디스크의 용량을 상당부분 차지하게 되고 후에 필요할 때 남은용량이 부족한 문제가 생길 수 있다. 따라서 계속 쌓이는 로그파일의 주기적인 관리가 필요하다.

 

로그파일을 관리하기 위해 사용하는 프로그램으로는 logrotate가 있다.

logrotate는 계속 쌓이는 로그파일을 주기적으로 여러개로 분할해주면서,

로그파일의 자동 로테이션 기능, 압축기능, 제거 등을 지원한다.

 

각각의 로그파일은 하루, 일주일 ,한 달, 연 단위로 로테이션할 수 있으며,

파일의 크기를 지정해서 로테이션할 수도 있다.

 

시스템과 관련된 기본적인 로그 설정은 /etc/logrotate.conf 에서 제어한다.

응용 프로그램은 /etc/logrotate.d 디렉터리  내에 위치해서 로그파일을 관리한다.

명령행에서 logrotate를 직접 사용할 수도 있지만 보통은 /etc/cron.daily 디렉터리에

등록되어 cron 스케줄링을 통해 실행되고 있다.

 

사용하는 명령어

]# logrotate [설정파일]

-f : 강제로 환경설정파일을 읽어들인다.

 

1. /etc/logrotate.conf 파일

 

시스템과 관련된 기본적인 로그설정 파일이다.

 

▷ 주요 항목

weekly

 = 로그파일을 일주일마다 로테이트한다.

 특별히 명시되지 않은 로그파일은 모두 적용받으며,

 기간에 관련된 옵션으로 daily, weekly, monthly, yearly 가 있다.

 

rotate 4

 = 최대 4번 까지 로테이트한다.

 적용할 경우 로그파일이 logfile ~ logfile.4 까지 생성된다.

 

create

 = 로테이트 한 후 비어있는 로그파일을 생성하도록 설정한다.

 

dateext

 = 로테이션으로 생성되는 로그파일에 날짜를 덧붙여서 생성한다.

 

compress

 = 로테이트 한 후 생성된 로그파일을 압축한다.

 현재는 # (주석)처리되어 있기 때문에 적용되지 않는다.

 

include /etc/logrotate.d

 = /etc/logrotate.d 디렉터리에 설정된 파일에 대해서도 로테이트를 적용한다.

 여기는 응용프로그램들이 위치하며 로그파일을 관리하는 곳이다.

 

/var/log/wtmp {

    monthly

    create    0644    root    utmp

        minsize    1M

    rotate    1

}

 = /var/log/wtmp 는 한 달 마다 로테이트하지만, 파일 크기가 1MB 정도 되면 그 이전이라도

 로테이트한다.

 파일생성시 허가권은 0644이며 소유자는 root, 그룹은 utmp로 설정한다.

 로테이션으로 생성되는 백로그는 1개의 파일만 생성한다.

 

 

 

2. /var/lib/logrotate.status

각 로그별로 로테이션 날짜가 기록된 파일이다.