Syslog
로그란 시스템의 동작이나 장애 등을 기록한 것으로 문제 해결의 단서가 되기 때문에 시스템 관리에서 매우 중요하다.
대부분의 UNIX 시스템에서는 syslog라고 불리는 데몬이 실행되고 있으며, 커널, 시스템 애플리케이션(cron 데몬이나 sendmail 등의 SMTP 데몬 등)에서 메시지를 받는다. 또한, TCP/IP를 이용하여 네트워크상의 원격 호스트의 syslog 데몬의 메시지도 기록할 수 있다. syslog는 RFC(Request for Comments)에 정의되어 있는 사양으로, 이에 근거한 구현이라면 리눅스 서버뿐만 아니라 라우터에서도 송신이 가능하다.
로그로 기록되는 메시지에는 날짜, 호스트, 송신자, 메시지가 한 행에 기록된다. 기본값으로는 텍스트 파일로 저장되지만, PostgreSQL이나 MySQL 등의 RDBMS에 저장하여 도구를 사용해 나중에 편집할 수도 있다.
기록 내용
날짜, 호스트 이름, 태그 이름, 메시지를 순서대로 볼 수 있다.
syslog를 정의하는 RFC 3164 'The BSD syslog Protocol'에서는 PRI, HEADER, MSG 세 가지를 정의하고 있다.
PRI 부분에 facility, priority를 나타내는 정수를 기술한다. 이 두 가지 변수에 대해서는 나중에 설명하겠다고 한다.
syslog를 실제로 구현한 rsylog나 syslogd 등의 애플리케이션은 이 PRI 부분은 생략되고 HEADER, MSG 부분이 기록된다.
Header 부분에는 날짜와 호스트 이름이 들어간다.
syslog는 클라이언트/서버 모델을 채택하고 있다. 로그를 기록하는 서버인 syslogd는 UNIX도메인 소켓 /dev/log를 준비하여 구동한다. 기록하려는 메시지를 송신하는 클라이언트인 애플리케이션 쪽에서는 syslog 함수를 이용하여 /dev/log 경유로 메시지를 syslogd 서버에 송신한다.
Facility
- auth/security : 인증용(4, 10, 13, 14)
- authpriv : private 인증 메시지
- cron : cron 등(9, 15)
- daemon : facility 지정이 없는 데몬(3)
- kern : 커널(0)
- ipr : 프린터(6)
- mail : 메일 서버(2)
- news : 뉴스 서버(7)
- syslog : syslog 데몬(5)
- user : 사용자 프로세스용(1)
- uucp : UUCP용(8)
- local[0-7] : 임의 용도 7개 (16~23)
Priority
- debug : 디버그 레벨(7)
- info : 정보 제공 레벨(6)
- notice : 통보 레벨(5)
- warning/warn : 주의 레벨(4)
- error/err : 과실, 에러 레벨(3)
- crit : 위험 레벨(2)
- alert : 경보 레벨(1)
- emerg/panic : 긴급 상황(0)
Log level
loglevel 항목을 참조.
See also
- logger
- Log file (Log level; Logging)
- angle-grinder - 로그를 실시간으로 파싱, 집계, 합계, 평균, 최대/최소, 정렬 가능한 뷰어 - graphite/kibana/honeycomb/splunk 등이 없을 때 간단하게 정교한 분석 수행 가능
- LogFX - 멀티플랫폼 오픈소스 로그 뷰어
- tailspin - 로그 파일 highlighter