Unix / Linux - System Logging

안녕하세요, 미래의 Unix/Linux 마법사 여러분! 오늘 우리는 시스템 로깅의 매력적인 세상으로 접수합니다. 새로운 것에 대한 걱정은 하지 마세요 - 여러분의 친절한 안내자로서 이 여정을 함께할게요, 수년 동안 수많은 학생들에게 그랬던 것처럼. 시작해보겠습니다!

Unix / Linux - System Logging

시스템 로깅이란?

들어가기 전에 시스템 로깅에 대해 이해해 보겠습니다. 컴퓨터에서 미스터리를 풀고 있는 탐정이라고 상상해 보세요. 시스템 로그는 당신의 신뢰할 수 있는 노트북처럼 시스템에서 일어나는 모든 것을 기록합니다. 멋지지 않나요?

왜 중요한가요?

시스템 로깅은 다음과 같은 이유로 중요합니다:

  1. 문제 해결
  2. 시스템 상태 모니터링
  3. 보안 침해 탐지
  4. 규정 준수

이제 중요성을 안다면, 시스템 로깅의 구성 요소를 탐구해 보겠습니다.

Syslog Facilities

Syslog 시설은 큰 회사의 다른 부서들처럼 보입니다. 각 부서는 특정 유형의 정보를 처리합니다. 다음은 일부 일반적인 syslog 시설의 표입니다:

시설 설명
auth 인증 및 보안 이벤트
cron Cron 데몬(예약 작업)
daemon 다양한 시스템 데몬
kern 커널 메시지
mail 메일 시스템
user 사용자 수준 메시지

예를 들어, 로그 항목에서 "mail"을 시설로 보면, 이것이 이메일 시스템과 관련이 있음을 알 수 있습니다. 꽤 편리하지 않나요?

Syslog Priorities

모든 로그이 equal한 것은 아닙니다. 일부는 다른 것보다 더 긴급합니다. 여기서는 syslog 우선순위가 등장합니다. 이를 병원의 긴급도 수준으로 생각할 수 있습니다.

다음은 가장 심각한 것부터 가장 덜 심각한 것까지의 syslog 우선순위 표입니다:

우선순위 키워드 설명
0 emerg 시스템 사용불가
1 alert 즉시 행동해야 함
2 crit 심각한 조건
3 err 오류 조건
4 warning 경고 조건
5 notice 일반적이지만 중요한 조건
6 info 정보 메시지
7 debug 디버그 수준 메시지

예를 들어, 시스템이 "crit" (심각) 이벤트를 만나면, 슈퍼 헬멧을 쓰고 구출 작업을 시작해야 합니다!

The /etc/syslog.conf File

이제 시스템 로깅의 뇌 зад에 대해 이야기해 보겠습니다: /etc/syslog.conf 파일. 이 파일은 연극의 감독자처럼, 각 배우(로그)가 어디로 가고 무엇을 해야 하는지 지시합니다.

다음은 이 파일에서 발견할 수 있는 예입니다:

mail.*                  /var/log/mail
*.err                   /var/log/errors
kern.*                  /var/log/kernel

이를 해독해 보겠습니다:

  • mail.*은 "모든 메일 시설 로그"를 의미합니다.
  • *.err은 "모든 오류 우선순위 로그 중 시설에 상관없이"를 의미합니다.
  • kern.*은 "모든 커널 시설 로그"를 의미합니다.

공백 뒤 부분은 이 로그가 저장되어야 할 곳을 나타냅니다. 멋지지 않나요?

Logging Actions

로깅 동작은 로그가 어떻게 처리되는지 결정합니다. 다음은 일부 일반적인 동작입니다:

  1. 파일 로깅: 로그가 파일에 기록됩니다. 예: mail.* /var/log/mail

  2. 네임드 파이프: 로그가 네임드 파이프로 전송됩니다. 예: mail.* |/usr/bin/mypipe

  3. 콘솔/터미널: 로그가 콘솔에 표시됩니다. 예: *.emerg *

  4. 원격 기계: 로그가 다른 기계로 전송됩니다. 예: *.* @192.168.1.100

The logger Command

logger 명령은 syslog 시스템의 개인 메신저와 같습니다. 자신만의 로그 항목을 생성할 수 있습니다. 다음은 방법입니다:

logger "Hello, syslog!"

이 명령은 "Hello, syslog!" 메시지의 로그 항목을 생성합니다. 이를 /var/log/messages나 시스템이 사용자 로그를 저장하는 곳에서 확인할 수 있습니다.

우선순위를 지정할 수도 있습니다:

logger -p user.err "Oops, something went wrong!"

이 명령은 사용자 시설의 오류 수준 로그를 생성합니다.

Log Rotation

로그 파일을 영원히 정리하지 않으면, 그것이 매우 가득 차게 될 것입니다. 로그 회전이 여기서 등장합니다. 로그 파일의 정기적인 봄 청소와 같습니다.

로그 회전은 일반적으로 다음을 수행합니다:

  1. 현재 로그 파일을 이름을 바꿉니다.
  2. 새로운 빈 로그 파일을 생성합니다.
  3. 오래된 로그 파일을 압축합니다.
  4. 매우 오래된 로그 파일을 삭제합니다.

다음은 간단한 로그 회전 설정 예(/etc/logrotate.d/myapp)입니다:

/var/log/myapp.log {
weekly
rotate 4
compress
missingok
notifempty
}

이 설정은 다음을 수행합니다:

  • 주간 회전
  • 4개의 오래된 버전 유지
  • 오래된 로그 압축
  • 로그가 누락된 경우 불평하지 않음
  • 빈 로그 파일 회전하지 않음

Important Log Locations

마지막으로, 중요한 로그 파일을 찾을 수 있는 곳을 살펴보겠습니다. 시스템 정보의 보물지도와 같습니다!

로그 파일 설명
/var/log/messages 일반 시스템 메시지
/var/log/auth.log 인증 로그
/var/log/kern.log 커널 로그
/var/log/cron.log Cron 작업 로그
/var/log/maillog 메일 서버 로그
/var/log/apache2/error.log Apache 오류 로그
/var/log/mysql/error.log MySQL 오류 로그

기억하세요, 이 위치는 특정 리눅스 배포판에 따라 달라질 수 있습니다.

그렇습니다, 여러분! Unix/Linux 시스템 로깅의 풍요로운 여행을 마친 것입니다. 로깅이 무엇인지, 그것이 왜 중요한지 이해하고, 시설, 우선순위, 그리고 로그 회전과 같은 다양한 구성 요소를 탐구했습니다. 이제 시스템 로깅의 여정을 시작할 준비가 되었습니다.

기억하세요, 학습의 가장 좋은 방법은 행동하는 것입니다. 시스템 로그를 탐험하고, logger 명령을 시도하고, 커스텀 로깅 규칙을 설정해 보세요. 행복한 로깅을 기원하며, 시스템이 항상 원활하게 작동하길 바랍니다!

Credits: Image by storyset