Syslog
Overview
Syslog 내용 정리
Basic
syslog 를 이용하면, 원격 시스템 내부에서는 물론이고 로그의 내용을 서버로 전송하여 파일이나 DB에 저장하여 볼 수 있다. 단순한 기능 같지만, 원격 모니터링에 있어서 가장 기능 중 하나라고 할 수 있다. 빈번하게 변화하는 값들은 modbus 프로토콜을 이용하여 모니터링하고, 중요한 이벤트나 디버깅 정보등은 syslog 로 관리하면 편리하다. syslog 는 특정 이벤트가 발생하는 시점들을 관리할 수도 있고, 시스템에 문제가 발생했을 때 원인을 분석하는 디버깅 용도로도 매우 유용하다.
syslog 는 IETF의 RFC 5424 로 등록되어 있다. RFC 5424 에는 syslog 메시지를 인터넷 상으로 전달하는 방법을 기술한다.
syslog log print
다음은 /var/log/syslog 의 내용 일부이다. syslog가 설치된 시스템에서는 기본적으로 시스템에서 발생하는 로그들을 이 파일에 출력한다.
Jun 8 09:27:55 myworkplace dhclient: XMT: Solicit on wlan0, interval 114200ms. Jun 8 09:28:43 myworkplace kernel: [ 1534.673986] SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled ^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ DATE TIME hostname process name message (log content)
위의 예에서 보인바와 같이 syslog 의 출력은 날짜와 시간으로 시작한다. 이후 호스트 이름과 프로세스 이름을 출력하며, 여기까지는 syslog 에서 자동으로 출력해 주는 부분이다. 콜론(:) 이후의 내용은 로그를 찍는 이유를 설명하는 메시지 부분이다.
apache 와 같은 프로그램들은 syslog 기준을 따르지 않는 독자적인 로그를 별도의 로그 파일에 기록한다. ubuntu 의 경우, /var/log/apache2/ 아래에 access.log 와 error.log 로 별도 저장한다.
Log level
syslog 는 다음과 같은 메시지 특성을 가진다. facility 는 메시지를 발생시킨 프로그램의 타입을 나타내는 값이며, severity 는 메시지의 성격 또는 중요도를 나타낸다. syslog 에서는 이 값에 따라 로그 메시지를 어느 파일에 기록할지, 누구에게 이 사실을 알릴 것인지를 결정한다.
Facility
Facility | Keyword | C code | Facility Description |
---|---|---|---|
0 | kern | LOG_KERN | kernel messages |
1 | user | LOG_USER | user-level messages |
2 | LOG_MAIL | mail system | |
3 | daemon | LOG_DAEMON | system daemons |
4 | auth | LOG_AUTH | security/authorization messages |
5 | syslog | LOG_SYSLOG | messages generated internally by syslogd |
6 | lpr | LOG_LPR | line printer subsystem |
7 | news | LOG_NEWS | network news subsystem |
8 | uucp | LOG_UUCP | UUCP subsystem |
9 | clock | LOG_CRON | clock daemon |
10 | authpriv | LOG_AUTHPRIV | security/authorization messages |
11 | ftp | - | FTP daemon |
12 | - | - | NTP subsystem |
13 | - | - | log audit |
14 | - | - | log alert |
15 | cron | - | clock daemon |
16 | local0 | LOG_LOCAL0 | local use 0 (local0) |
17 | local1 | LOG_LOCAL1 | local use 1 (local1) |
18 | local2 | LOG_LOCAL2 | local use 2 (local2) |
19 | local3 | LOG_LOCAL3 | local use 3 (local3) |
20 | local4 | LOG_LOCAL4 | local use 4 (local4) |
21 | local5 | LOG_LOCAL5 | local use 5 (local5) |
22 | local6 | LOG_LOCAL6 | local use 6 (local6) |
23 | local7 | LOG_LOCAL7 | local use 7 (local7) |
Severity
Code | Severity | Keyword | C code | Description |
---|---|---|---|---|
0 | Emergency | emerg(panic) | LOG_EMERG | System is unusable. A panic condition. This is normally broadcast to all users. |
1 | Alert | alert | LOG_ALERT | Action must be taken immediately. A condition that should be corrected immediately, such as a corrupted system database. |
2 | Critical | crit | LOG_CRIT | Critical conditions. Critical conditions, e.g., hard device errors. |
3 | Error | err(error) | LOG_ERR | Error conditions. |
4 | Warning | warning(warn) | LOG_WARNING | Warning conditions. |
5 | Notice | notice | LOG_NOTICE | Normal but significant condition. Conditions that are not error conditions, but should possibly be handled specially. |
6 | Informational | info | LOG_INFO | Informational messages. |
7 | Debug | debug | LOG_DEBUG | Debug-level messages. Message that contain information normally of use only when debugging a program. |