본문 바로가기

개발/서버

syslog 메시지

syslog는 리눅스에서 돌아가는 많은 프로그램이 사용하는 표준적인 로깅 퍼실리티이다. syslog는 퍼실리티(kernel, mail, cron과 같은 것)와 레벨(warning, debug와 같은 것)에 기반하여 정보를 로깅한다. 시스템 로그는 애플리케이션에 의해 syslog 시스템 콜을 경유하여 전송되게 된다. 일반적으로 syslog 시스템 콜은 메시지를 단손히 /dev/log 장치로 보내는 것이며, syslog 프로그램이 이 장치로 오는 내용을 픽업하여 해당 로그 파일로 첨가시키게 된다.

 

syslogd

 

syslogd는 유닉스 시스템에 설치된 기본 시스템 로깅 데몬으로써 오래 동안 사용되어 온 프로그램이다. 모든 syslog 메시지에는 특정 퍼실리티와 레벨이 표시되게 된다. 이 두 개의 옵션을 근거로 하여 /etc/syslog.conf 파일에서 메시지가 어디로 가야 하는지 지정할 수 있다.

 

- syslog 퍼실리티(Facility) : syslog 퍼실리티는 로깅할 프로그램이 어느 로깅 그룹으로 속하는지 단순하게 기술하는 방법이다. 이용할 수 있는 퍼실리티를 [표2-1]에 설명하였다.

 

- syslog 로깅 레벨 : 프로그램들은 로깅 레벨에 맞는 각각의 로그 항목을 가지게 되는데 설정에 따라서 그 항목들을 syslog 데몬이 보고하거나 무시할 수 있게 된다. 이용할 수 있는 로깅 레벨은 [표2-2]에 설명하였는데, 가장 높은 우선 순위부터 낮은 중요도 순으로 기술하였다.

 

syslog.conf

 

/etc/syslog.conf 파일은 어느 메시지가 syslogd에 의하여 로그되어야 하는가를 제어하는 파일이다. 각 라인의 형식은 다음과 같다.

 

퍼실리티.로그레벨 로그목적지

 

여기에서 각 필드는 탭(Tab)키로 분리된다. 예를 들어 다음의 라인은 daemon 퍼실리티를 사용하는 프로그램에서 우선순위 notice나 그 이상의 우선순위를 가지고 발생하는 모든 로그 메시지를 /var/log/daemon.log라는 파일로 기록하게 된다.

 

daemon.notice /var/log/daemon.log

 

퍼실리티나 로그 레벨 필드에서 에스터리스크(*)를 사용하여, 모든 퍼실리티와 로그 레벨을 각각 매치시킬 수 있다.

 

[표2-1] syslog의 퍼실리티
syslog 퍼실리티 : 설명
auth : (거부된)보안/인가 메시지
authpriv : 보안/인가 메시지
cron : cron과 at 작업
daemon : 기타 시스템 데몬(sshd, inetd, pppd 등)
kern : 커널 메시지
lpr : 라인 프린터 서브시스템
mail : 메일 서브시스템(sendmail, postfix, qmail 등)
news : Usenet 뉴스 메시지
syslog : 내부적인 syslog 메시지
user : 범용적인 사용자 레벨의 메시지
uucp : UUCP 서브시스템
local0local7 : 지역적으로 정의되는 레벨

 

[표2-2] syslog의 로깅 레벨
로깅 레벨 : 설명
emerg : 시스템을 사용할 수 없을 정도의 비상 상황
alert : 긴급한 행동이 취해져야만 하는 경보 상황
crit : 심각한 조치가 필요한 상황
err : 에러 상황
warning : 경고 상황
notice : 정상적이지만 주의가 필요한 상황
info : 정보를 알려주는 정도의 메시지
debug : 디버깅 메시지

메시지가 전송될 목적지는 [표2-3]에 설명된 것 중 하나가 될 수 있다.

 

[표2-3] syslog의 로그 목적지
목적지 : 설명
/path/to/filename : 지정된 파일로 메시지가 첨가되며, 가장 일반적으로 사용하는 경우이다.
@loghost : loghost라는 컴퓨터 상에서 구동되는 Syslog 서버에게 메시지가 전송된다.
|/path/to/named_pipe : 지정된 네임드 파이프로 메시지가 쓰여지게 된다.(외부 프로그램을 이용하여 필터링할 때 유용하게 사용할 수 있다.)
user1, user2 : 메시지는 해당 사용자가 로그인되어 있는 상태라면 지정한 사용자에게 보내지게 된다. 보통 모니터에 메시지가 쓰여지게 된다.
* : 메시지가 로그인해 있는 모든 사용자에게 보내지게 된다.
/dev/console, /dev/tty1 등 : 지정된 TTY로 쓰여지게 된다.

 

syslog 메시지의 형식 : syslog가 수신한 메시지를 다음과 같은 형식으로 기록한다.

 

월 일 시간 호스트명 프로세스명[pid]: 로그_기록

 

호스트명은 메시지의 근원지 호스트명이 된다. 당신의 호스트로 어떤 것도 syslog 메시지를 전송하지 않는다면, 이 필드는 유일하게 당신의 호스트명만 나타나게 될 것이다.

'개발 > 서버' 카테고리의 다른 글

run 레벨  (0) 2012.02.05
top 실행중의 키 조작  (0) 2012.02.05
기본 셋팅  (0) 2012.02.05
서버 점검사항  (0) 2012.02.05
rdist 스크립트  (0) 2012.02.05