강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 시스템 로그 분석 syslogd를 사용한 로그 기록

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 시스템 로그 분석 syslogd를 사용한 로그 기록

 

 




시스템 로그를 기록하는 프로그램으로 리눅스에서는 syslogd를 제공한다.

 

 

 

여기에서는 이 프로그램이 무엇인지와 설정 파일에 대한 자세한 내용을 다루도록 한다.

 

 

 

 

 

syslogd?

syslogd는 시스템 로그를 기록하는 프로그램이다.

 

 

 

보통 System에 대한 로그는 syslogd에 의해 기록되며 klogd에 의해 커널에 대한 로그가 기록된다.

 

 

 

 

syslogd는 많은 현대의 프로그램들이 사용하는 종류의 로그 기록을 제공한다.

 

 

 

그리고, 모든 기록된 메시지들은 적어도 시간, 호스트 이름, 프로그램 이름을 포함한다.

 

 

 

 

 

데몬(daemon)의 주 설정 파일은 /etc/syslog.conf 이지만 -f 옵션에 의해 다른 것으로 대체될 수 있다.

 

 

 

이 파일은 syslogd가 시작될 때 읽혀진다.

 

 

 

파일에서 해시(hash, #) 표시나 빈 줄은 무시된다.

 

 

 

 

다음과 같이 syslogd를 제어할 수 있다(RedHat, Fedora, CentOS, SULinux, 2023 등에서는 이 스크립트를 통해서 syslogdklogd를 함께 제어하도록 되어 있다).

 

 

 

 

 

 

 

# /etc/init.d/syslog [start|stop|restart]

 

 

 

 

 

또는

 

 

 

 

 

# service syslog [start|stop|restart]

 

 

 

 

 

syslogd가 작동이 되고 있는지는 다음과 같이 확인할 수 있다.

 

 

 

 

 

 

 

 

 

$ ps -e | grep syslog

439 ? 00:00:02 syslogd

 

 

 

 

 

 

또한 syslogdPID를 확인하려면 다음과 같이 한다.

 

 

 

 

 

 

 

 

 

$ grep syslog /etc/services

syslog 514/udp

 

 

 

 

 

 

 

/etc/syslog.conf

 

 

시스템에 관련된 로그 파일들이 syslogd에 의해 관리되는데 /etc/syslog.conf 파일은 이 프로그램의 설정 파일이다.

 

 

 

이것을 통해서 로그들을 제어할 수 있다.

 

 

 

그래서 /etc/syslog.conf를 보면 어느 장소에 어떤 로그 파일이 있는지 알 수 있다.

 

 

 

 

 

시간이 날 때 검사할 수 있도록 또는 로그 파일이 지나치게 커지는 것을 방지하기 위해 일정한 형식으로 로그 파일을 보관하도록 하는 것도 좋다.

 

 

 

이것을 위해 RedHat, Fedora, CentOS, SULinux, 2023 등에서는 logrotate 프로그램을 사용한다.

 

 

 

 

다음은 /etc/syslog.conf 파일의 일부이다.

 

 

 

 

 

 

 

 

# Log all kernel messages to the console.

# Logging much else clutters up the screen.

... 중략 ...

#kern.* /dev/console

# Log anything (except mail) of level info or higher.

# Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.

authpriv.* /var/log/secure

# Log all the mail messages in one place.

mail.* /var/log/maillog

# Everybody gets emergency messages, plus log them on another

# machine.

*.emerg *

# Save mail and news errors of level err and higher in a

# special file.

uucp,news.crit /var/log/spooler

 

# Save boot messages also to boot.log

local7.* /var/log/boot.log

 

 

 

 

 

 

이 파일의 각 행들은 다음과 같은 포맷으로 정의되어 있다.

 

 

 

이것은 A 서비스(데몬)에 대하여 B의 경우에 해당하는 상황이 발생했을 때에 C 로그 파일에 그 기록을 남기라는 의미이다.

 

 

 

 

 

 

 

 

 

형식: facility.priority;facility.priority logfile-location

A B A B C

 

 

 

 

 

이 설정파일에서 facilitypriority는 다음과 같다.

 

 

 

 

 

facility메시지를 보내는 서브 시스템의 이름이다.

 

 

 

auth는 로그인 인증 시스템으로 authpriv를 사용할 것을 추천한다.

 

 

 

그리고 security라는 키워드는 더 이상 사용하지 않는다.

 

 

 

또한, mark는 내부사용만을 위한 것으로 응용프로그램들에는 사용하지 않도록 한다.

 

 

 

 

 

 

 

 

 

auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, syslog, user, uucp, local0 - local7

 

 

 

 

 

 

 

- auth : 로그인과 같이 사용자 인증에 관한 메시지

 

 

- authpriv : 보안 및 승인에 관한 메시지

 

 

- cron : crond 데몬과 atd 데몬에 의해 발생되는 메시지

 

 

- daemon : telnet, ftp 등과 같은 데몬에 의한 메시지

 

 

- kern : kernel에 의한 메시지로서 커널 메시지라고 함

 

 

- lpr : 프린터 데몬인 lpd에 의해 발생되는 메시지

 

 

- mail : sendmail, pop, qmail 등의 메일에 의해 발생되는 메시지

 

 

- news : innd 등과 같은 뉴스 시스템에 의해 발생되는 메시지

 

 

- uucp : uucp에 의한 시스템에 의한 메시지

 

 

- user : 사용자에 의해 생성된 프로세스

 

 

- syslog : syslogd에 의해 발생되는 메시지

 

 

- local0 local7 : 시스템 부팅 메시지 기록, 기타 여분 서비스에 사용하기 위함

 

 

- * : 모든 서비스를 의미

 

 

 

priority : 메시지를 받는 파일, 장치, 컴퓨터나 사용자의 이름이다.

 

 

 

다음은 엄격도(severity)가 증가하는 순서대로 나열한 것이다.

 

 

 

 

 

 

 

 

 

debug, info, notice, warning, warn(warning과 동일), err, error(err와 동일), crit, alert, emerg, panic(emerg와 동일)

 

 

 

 

 

 

 

- none : 그에 대한 모든 로그 메시지 무시

 

 

- debug :문제 추적을 돕는 특수 정보

 

 

- info : 정보 메시지

 

 

- notice : 비임계 메시지

 

 

- warn : 경고(panic, error 키워드와 함께 사용되지 않도록 권장된다)

 

 

- err : 에러

 

 

- crit : 하드 장치 에러와 같은 임계 에러(critical error)

 

 

- alert : 에러 경고. 즉시 알려야할 내용

 

 

- emerg : 시스템 패닉

 

 

- * : 발생하는 모든 상황에 대한 메시지

 

 

 

모든 facilitypriority를 지정하려면 *를 쓰고, 여러 개의 facility를 지정하려면 ;으로 구분하여 사용할 수 있으며 priority의 경우는 , 를 사용하면 된다.

 

 

 

그런데, priority를 지정하면 그와 같은 priority부터 그 위의 priority에 관련된 로그를 기록한다.

 

 

 

만약 info를 지정하면 emerg 부터 info 사이의 모든 로그를 기록하게 되는 것이다.

 

 

 

만약 단일한 priority를 지정하려면 = 를 사용하면 된다.

 

 

 

!priority 범위를 제한한다.

 

 

 

 

위 파일에서 다음은 모든 커널 메시지들(주로 klogd라는 로그 파일)을 콘솔(모니터 화면)로 보여주라는 것이다.

 

 

 

기본적으로 주석(#) 처리 되어 있기 때문에 실제로 적용되지는 않는다.

 

 

 

적용하려면 주석을 삭제하고 syslogd를 재시작 한다.

 

 

 

 

 

 

 

 

#kern.* /dev/console

 

 

 

 

 

 

다음은 (앞서 설명한 facilitypriority를 적용하면) 메일(mail.none), 개인 인증(authpriv.none), cron(cron.none)에 대한 메시지들을 모두 제외하고, 이외의 모든 서비스들에 대해서 info 레벨의 정보들(*.info)/var/log/messages에 기록하는 것이다.

 

 

 

 

 

 

 

 

*.info;mail.none;authpriv.none;cron.none /var/log/messages

 

 

 

 

 

 

다음 설정은 개인 인증에 관련한 데몬들에 대해 발생하는 모든 정보가 /var/log/secure에 기록되도록 한다.

 

 

 

 

 

 

 

 

 

authpriv.* /var/log/secure

 

 

 

 

 

 

다음은 /var/log/maillog에 메일 서비스에 대해 발생하는 메시지들에 대한 모든 정보를 기록하도록 한 것이다.

 

 

 

 

 

 

 

 

 

mail.* /var/log/maillog

 

 

 

 

 

다음은 모든 서비스들에 대해 비상(emergency) 수준의 메시지들을 모든 로그 파일에 기록하도록 한 것이다.

 

 

 

 

 

 

 

 

 

*.emerg *

 

 

 

 

 

다음은 특정한 파일에 newsuucp에 대해서 crit 수준과 그 이상 수준의 에러들을 /var/log/spooler에 저장하는 설정이다.

 

 

 

 

 

 

 

 

uucp,news.crit /var/log/spooler

 

 

 

 

 

 

다음은 시스템이 부팅될 때 /var/boot.log 파일에 서비스 데몬의 부트에 관련된 메시지들을 저장하도록 한 것이다.

 

 

 

 

 

 

 

 

 

local7.* /var/log/boot.log

 

 

 

 

 

 

이 외의 설정에 대한 사항은 다음과 같이 하여 man 페이지를 참조한다.

 

 

 

 

 

 

 

 

 

$ man syslogd

$ man syslog

$ man 2 syslog

$ man 3 syslog

$ man syslog.conf

 

 

 

 

 

 

 

 

 

klogd

klogd 는 리눅스 커널 메시지들을 가로채서 그 정보를 로그로 남기는 시스템 데몬이다.

 

 

 

사실상 kernel에 대한 정보는 /var/log/messages를 통해서도 확인할 수 있지만, 이 데몬에 의해 적절하게 확인할 수 있다.

 

 

 

이 데몬은 syslogd와는 독립적으로 실행되며 SULinux, 2023, CentOS Fedora에는 기본적으로 설치되어 실행된다.

 

 

 

이 데몬에 대한 것은 man 페이지(man klogd)를 통하여 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  81 명