리눅스 로그

Laigasus

Infra|2024년 8월 13일|마지막 수정 시간: 2024년 9월 23일|
type
status
date
slug
summary
tags
category
icon
password

정의

로그는 시스템에서 발생한 이벤트나 활동을 기록한 데이터입니다.
일반적으로 기본 시스템, 보안 메시지, cron 등이 있습니다.
사용되는 사례는 다음과 같습니다.
  • 문제 해결
  • 성능 분석
  • 시스템 Health 모니터링
  • 규정과 감사
  • 보안

아키텍처

로그 아키텍처는 로그 데이터를 수집, 저장, 분석하는 시스템으로 구성됩니다. 일반적으로 로그 수집기는 다양한 소스에서 로그를 모아 중앙 저장소에 전달합니다.

rsyslog

/etc/rsyslog.conf 또는 /etc/syslog.conf 에 있는 구성 파일을 사용하여 로그가 저장되는 위치와 방법을 임의로 지정할 수 있습니다.
rsyslogd 에 의해 수집되는 로그(syslog) 위치입니다.
로그 파일
설명
/var/log/messages
시스템 메시지와 일반 로그
/var/log/secure
보안 관련 메시지와 인증 로그
/var/log/maillog
메일 서버 관련 로그
/var/log/cron
크론 작업 관련 로그
/var/log/boot.log
부팅 과정에서 발생하는 로그
/var/log/dmesg
커널 및 부팅 메시지 로그
/var/log/httpd/
Apache 웹 서버 로그
/var/log/audit/
보안 감사 로그

우선순위

코드 값이 낮을 수록 중요합니다.
코드
우선순위
설명
0
emerg
시스템 사용 불가
1
alert
즉시 조치를 취해야 함
2
crit
치명적
3
err, error
에러
4
warn, warning
경고
5
notice
일반적이나 중요
6
info
간단한 정보
7
debug
디버깅 메시지

systemd-journald

systemd-journald는 systemd 기반 시스템에서 사용되는 로깅 시스템입니다. 이 서비스는 시스템 로그, 커널 로그, 애플리케이션 로그 등 다양한 소스의 로그 데이터를 수집합니다. 수집된 로그는 바이너리 형식으로 저장되어 효율적인 저장과 빠른 검색이 가능합니다.
journald 서비스에서 수집, 저장 및 처리하고, journalctl 로 저널 데이터를 조회할 수 있습니다.
/run/log/journal 에 위치하기 때문에 시스템이 재부팅되면 저널 데이터는 삭제됩니다.
 

비교

항목
rsyslog
systemd-journald
사용처
전통적인 Unix/Linux 시스템
systemd 기반 현대 Linux 시스템
로그 형식
일반 텍스트 파일
바이너리 형식 (구조화된 데이터)
전송
원격 서버로 로그 전송 가능
주로 로컬 저장, 원격 전송은 제한적
메타데이터
제한적인 메타데이터
풍부한 메타데이터 (PID, UID 등)
검색 및 분석
텍스트 기반 도구로 검색 (grep 등)
journalctl을 통한 고급 필터링 및 검색
 

관계 및 흐름

로그는 rsyslogd 와 systemd-journald 두 데몬에 의해 관리됩니다.
 
 

관리

logrotate

logrotate는 로그 파일이 너무 커지지 않도록 주기적으로 롤오버하고 압축하여 디스크 공간을 절약하는 데 사용됩니다. 이는 로그 관리의 핵심 도구로, 로그 파일이 일정 크기나 기간에 도달하면 자동으로 처리해줍니다.
다음은 logrotate 설정 파일의 예시입니다.
  • daily: 로그 파일을 매일 롤오버합니다.
  • rotate 7: 7개의 이전 로그 파일을 보관합니다.
  • compress: 롤오버된 로그 파일을 압축합니다.
  • delaycompress: 가장 최근의 롤오버된 파일은 다음 롤오버 때까지 압축하지 않습니다.
  • missingok: 로그 파일이 없어도 오류를 발생시키지 않습니다.
  • notifempty: 로그 파일이 비어 있으면 롤오버하지 않습니다.
  • create 0640 root utmp: 새로운 로그 파일을 생성할 때의 권한과 소유자를 설정합니다.
  • postrotateendscript: 로그 파일을 롤오버한 후 실행할 명령어를 정의합니다. 이 예시에서는 syslog 데몬을 재시작합니다.

journalctl

journalctl은 journal 로그를 조회하고 관리하기 위한 명령어입니다. 이를 사용하면 특정 시간 범위, 서비스, 우선순위 등 다양한 조건으로 로그를 필터링할 수 있습니다.
 
 
저널 데이터를 영구 저장 하려면 /etc/systemd/journald.conf 내에서 @Storage 값을 auto 에서 persistent 로 변경하면 됩니다.
 
REF
 
Loading...