[시스템 관리] 01. 로그(Log)

Date:     Updated:

카테고리:

태그:


🔔 로그(Log)


로그는 소프트웨어를 실행한 후 나타나는 경과 정보를 출력한 것으로, 즉 프로그램이 시간 경과에 따라 ‘언제, 누가, 어디서, 무엇을 했다’와 같은 정보를 기록하는 것을 ‘로깅하다’라고 하며, 기록된 것을 ‘로그’라고 합니다.

dasda

■ 로그가 필요한 이유

첫 번째는 오류를 수정하고 개선하기 위함입니다. 컴퓨터 시스템은 완벽하지 않으며, 고장이 발생할 수 있습니다. 따라서 고장이 발생했을 때 어떻게 대처해야 하는지 고려해야 합니다. 고장 발생 시 그 원인을 규명하기 위해서는 고장이 발생했을 당시의 상태와 정보가 중요한데, 이 정보가 바로 로그입니다. 로그는 시간 경과에 따라 기록된 정보이므로, 고장이 발생했을 때 무슨 일이 있었는지, 하드웨어와 소프트웨어를 포함한 시스템의 상태를 시간을 거슬러 올라가며 파악할 수 있습니다.

두 번째 이유는 빅데이터와 관련하여 액세스 정보로서 로그의 필요성이 높아지고 있는데, 이는 사람들의 동향, 의견, 마케팅 조사를 위한 데이터 마이닝의 기반 데이터를 추출할 수 있다는 점입니다. 로그 정보를 분석함으로써, 사람들이 더 흥미를 둘 만한 페이지 제작이나 보여주고자 하는 페이지로 사람들을 유도하는 데 사용할 수 있는 자료를 얻을 수 있습니다. 이러한 분석 결과는 오류 수정과 같은 현재의 개선에만 사용되는 것이 아니라, 과거 데이터를 통해 미래를 예측하고 개선하는 데에도 활용됩니다.


■ syslog

Syslog는 처음에는 메일 서버 전용 로거 프로그램으로 시작되었지만, 이후 다른 애플리케이션에도 syslog가 포함되면서 어느새 표준이 되었고, 이렇게 표준이 된 syslog는 RFC 3164로 체계적으로 정리된 프로토콜입니다.

▶ 로그 쓰기

dadaweqw


▶ 로그 수집

we999


■ syslog-ng와 rsyslogd

syslogd는 로그 정보를 분실할 가능성이 있고, 네트워크에서 오가는 로그 정보를 암호화할 수 없다는 문제가 제기되어 현재는 사용되지 않으며, 대신 syslog-ng와 rsyslogd 애플리케이션이 syslogd를 대체하는 용도로 채택되고 있습니다.

syslog-ng는 ‘syslog New Generation’의 약자로, 이름에서 알 수 있듯이 syslog에서 발생하는 문제를 해결하기 위해 개발된 애플리케이션입니다. 반면, rsyslogd는 ‘rocket-fast system for log processing’의 약자로, syslogd의 대안으로 시작되었지만 다양한 소스에서 입력을 받아들이고 변환하여 다양한 출력 위치로 기록할 수 있는 로깅 도구입니다.

▶ syslog-ng / rsyslogd 주요 기능

  1. 로그 분류 기능

  2. TCP를 이용한 로그 정보 송수신(로그 정보 분실 방지)

  3. SSL/TLS를 이용한 안전한 로그(네트워크 경유 암호화 실현)

  4. 데이터베이스로 로그 출력


■ rsyslog의 설정 확인 - /etc/rsyslog.conf

syslog는 로그 정보의 facility와 priority에 따라 출력 위치를 선택해서 해당 출력 위치에 로그 정보를 출력합니다.


▶ facility 목록

facility명 설명
kern 커널 메시지
user 사용자 레벨 메시지
mail 메일 시스템 메시지
daemon crond 및 rsyslogd 이외의 시스템 데몬에서 온 메시지
auth(security) 보안과 인증 또는 인가 메시지
syslog rsyslogd에 의해 내부에서 생성된 메시지
lpr 라인 프린터 서브시스템 메시지
news 네트워크 뉴스 서브시스템 메시지
uucp UUCP 서브시스템 메시지
cron cron 메시지
authpriv 보안과 인증 또는 인가 메시지(private)
ftp FTP 시스템 메시지
NTP NTP 서브시스템 메시지
local1 로컬에서 사용(기타 애플리케이션으로부터의 로그에서 자유롭게 사용할 수 있다.)
local7 상동


▶ priority 목록

priority명 설명
emerg(panic) 긴급사태(시스템이 불안정한 상태)
alert 경보(지금 바로 대잉이 필요한 상태)
crit 위태로운 상태
err(error) 오류
warning(warn) 경고
notice 주의(정상이지만 주의가 필요)
info 정보
debug 디버그(문제 대채/개발용 정보)
none 우선순위 없음


▶ action(로그를 어디에 남길 것인지 결정) 목록

action 설명
로그 파일 파일명(경로) 지정 (ex. /var/log/secure)
원격 로그 서버 “@호스트주소”를 통해 지정한 호스트로 로그를 보낸다. (ex. @192.168.219.103)
콘솔 /dev/console로 지정 시 콘솔 출력
user 지정된 사용자의 스크린으로 메시지를 보낸다.
* 현재 로그인되어 있는 모든 사용자의 스크린으로 메시지를 보낸다.


▶ /etc/rsyslog.conf 내용

~(생략)~

 38 #### RULES ####

    #> 커널 관련된 로그를 /dev/console에 기록
 42 #kern.*                                                 /dev/console
 
    #> 모든 서비스에 대한 info 수준 이상의 로그를 /var/log/messages에 기록
    #> mail, authpriv, cron 서비스에 대한 로그는 /var/log/messages에 기록 안함
 46 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
 
    #> authpriv에 속하는 서비스의 모든 로그 수준의 로그를 /var/log/secure에 기록
 49 authpriv.*                                              /var/log/secure
 
    #> 메일 서비스에 관련된 모든 로그 수준의 로그를 /var/log/maillog에 기록
 52 mail.*                                                  -/var/log/maillog

    #> cron 데몬과 at 데몬 등에 의해 발생되는 모든 로그 수준의 로그를 /var/log/cron에 기록
 56 cron.*                                                  /var/log/cron
 
    #> 모든 서비스의 emerg 수준 이상의 로그를 모든 사용자에게 보냄
 59 *.emerg                                                 :omusrmsg:*
 
    #> uucp, news 서비스 관련 서버의 crit 수준이 이상의 로그를 /var/log/spooler에 기록
 62 uucp,news.crit                                          /var/log/spooler
 
    #> 시스템 부팅될 때의 모든 로그 수준의 로그를 /var/log/boot.log에 기록
 65 local7.*                                                /var/log/boot.log

 ~(생략)~

SYS_MGMT 카테고리 내 다른 글 보러가기

댓글 남기기