시스템(Linux)

Syslog에 대해 알아보겠습니다.

forward error correction Circle 2025. 10. 17. 08:52
반응형

Ⅰ. Syslog 란 ?

 Linux 및 Unix 계열 시스템에서 로그 메시지를 수집·저장·관리하는 표준 로깅 프로토콜입니다. 커널, 데몬, 애플리케이션 등 다양한 소스에서 발생하는 이벤트를 시간 순서대로 중앙집중식으로 기록하여, 시스템 운영자에게 문제 진단·보안 모니터링·시스템 상태 추적 등의 핵심 정보를 제공합니다.
 현재 Syslog는 사실상의 Linux 로그 표준으로 자리 잡았으며, 모든 주요 배포판에서 기본적으로 사용됩니다.

Ⅱ. Syslog의 동작 원리

 ⅰ. 로깅 아키텍처 구조

구분 설명
커널 로깅 (Kernel Logging) 커널 내부에서 발생하는 이벤트를 커널 링 버퍼(Ring Buffer)에 기록. 부팅 시점 로그가 주로 저장됨.
사용자 로깅 (User Logging)  사용자 공간에서 실행되는 프로세스나 서비스 로그를 syslog 데몬(rsyslogd)이 관리.

 ⅱ. 로그 생성 과정
  1) 로그 발생: 커널 또는 애플리케이션이 Syslog API를 호출
  2) 수집: rsyslogd 데몬이 로그 메시지를 수신
  3) 분류: /etc/rsyslog.conf 설정에 따라 로그를 분류
  4) 저장: 지정된 대상(파일, 콘솔, 원격 서버 등)에 기록

Ⅲ. Syslog vs RSyslog vs Systemd Journal 비교

항목 Traditional Syslog RSyslog Systemd Journal
데이터 형식 텍스트 텍스트 바이너리
성능 기본 로깅 고성능, 중앙 로그 수집에 특화 로컬 데스크톱 최적화
원격 전송 제한적 다양한 프로토콜 지원 별도 기능 없음
구조화 데이터  미지원 지원 지원
검색 도구 grep, awk grep, awk journalctl
설정 난이도 단순 중간 단순


* RSyslog는 기존 Syslog의 확장 버전으로 다양한 입력 소스와 고성능 처리 기능을 제공해 서버 환경에 최적화되어 있습니다.
* Systemd Journal은 systemd와 통합된 로컬 로그 시스템으로 바이너리 포맷을 통해 빠른 검색이 가능하지만 파일 손상 시 전체 로그가 무효화될 수 있습니다.

Ⅳ. Syslog 메시지 구조

ⅰ. 기본 형식
날짜 시간 호스트명 프로세스명: 메시지
예시) Dec 5 10:52:25 myhost anacron[1058]: Job cron.daily terminated
 ⅱ. RFC 표준
□ RFC 3164 (BSD Syslog 형식)
   <priority>timestamp hostname: message
□ RFC 5424 (IETF Syslog 형식)
   <PRI>VERSION TIMESTAMP HOSTNAME APP-NAME PROCID MSGID STRUCTURED-DATA MESSAGE

Ⅴ. Facility와 Priority Level

 ⅰ. Facility (로그 출처)

구분 설명
kern (0) 커널 메시지
user (1) 사용자 수준 메시지
mail (2) 메일 시스템
daemon (3) 시스템 데몬
authpriv (4) 인증/보안 관련
local0~7 (16~23) 사용자 정의 용도

 ⅱ. Priority Level (심각도)

Level 심각도 설명
0 emerg 시스템 사용 불가
1 alert 즉각 조치 필요
2 crit 치명적 오류
3 err 일반 오류
4 warning 경고 상태
5 notice 주목할 이벤트
6 info 일반 정보
7 debug 디버그 정보


* Priority 계산식
Priority = Facility × 8 + Level

Ⅵ. RSyslog 설정 및 구성

 ⅰ. 주요 설정 파일
    1) /etc/rsyslog.conf: 기본 설정
    2) /etc/rsyslog.d/*.conf: 서비스별 세부 설정
 ⅱ. 기본 문법

facility.priority    action(destination)

 ⅲ. 예시

*.info                /var/log/messages
mail.*                /var/log/maillog
*.*                   @192.168.1.100:514       # UDP 전송
*.*                   @@192.168.1.100:514      # TCP 전송

 ⅳ. 주요 모듈

module(load="imuxsock")   # 로컬 소켓
module(load="imklog")     # 커널 로그
module(load="imudp")      # UDP 수신
module(load="imtcp")      # TCP 수신

Ⅶ. 주요 로그 파일 위치

로그 파일 설명
/var/log/messages 일반 시스템 메시지
/var/log/secure or /var/log/auth.log 인증 및 보안 관련
/var/log/maillog 메일 서버 로그
/var/log/cron  스케줄러 로그
/var/log/kern.log 커널 메시지
/var/log/boot.log  부팅 로그
/var/log/dmesg 커널 초기화 메시지

Ⅷ. Logrotate를 통한 로그 관리

ⅰ. 개념
  로그 파일 크기 증가를 제어하고 오래된 로그를 자동 관리하는 도구입니다. 디스크 공간 절약 및 로그 관리 자동화에 사용됩니다.
ⅱ.  주요 설정 파일
 1) /etc/logrotate.conf : 전역 설정
 2) /etc/logrotate.d/ : 서비스별 설정
 ⅲ. 예시

/var/log/myapp/*.log {
    daily
    rotate 30
    compress
    notifempty
    create 0644 root root
    postrotate
        systemctl reload myapp
    endscript
}

Ⅸ. 원격 로깅 설정

 ⅰ. 서버(수신 측)

module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

 

 ⅱ. 클라이언트(전송 측)

*.* @192.168.1.100:514       # UDP
*.* @@192.168.1.100:514      # TCP
local3.info @@192.168.1.100:12468

Ⅹ. 관리 및 보안 및 성능 고려사항

 ⅰ. 문제해결 및 관리 명령어

목적 명령어
실시간 로그 확인 tail -f /var/log/messages / journalctl -f
서비스별 로그 journalctl -u ssh
커널 메시지 dmesg, journalctl -k
로그 검색 grep "error" /var/log/messages
서비스 상태 systemctl status rsyslog
설정 검사 rsyslogd -N1

 

 ⅱ. 로그 보안

$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755

 □ 파일 권한 제한 및 TLS 암호화 전송 권장
 □ 로그 무결성 보장을 위한 별도 백업 또는 서명 시스템 필요
 

 ⅲ. 성능 최적화

$MainMsgQueueSize 100000
$MainMsgQueueWorkerThreads 4
$ActionFileEnableSync off
$OMFileFlushInterval 10

→ 큐 크기 확대, 비동기 쓰기, 버퍼링으로 대용량 로그 처리 향상

반응형