systemlog 에 관해서

리눅스 /var/log/syslog/var/log/messages 완전 정리 (K8s 운영 관점 포함)

1. 개요

  • Debian/Ubuntu 계열: /var/log/syslog → 주요 시스템 로그 파일.
  • RHEL/CentOS/Rocky 계열: /var/log/messages → 동일한 역할.
  • 공통점: 커널, 시스템 서비스, 사용자 애플리케이션의 일반 로그가 모임.

로그 흐름

  1. 커널/애플리케이션 → syslog API 호출 또는 표준 출력.
  2. systemd-journald 수집 → 메모리/디스크 저널에 저장.
  3. rsyslog/syslog-ng가 journald에서 읽어 파일(/var/log/...)로 기록.

2. 로그에 담기는 내용

  • 커널 이벤트: 네트워크 링크 업/다운, 디스크 I/O 에러, OOM Killer.
  • 시스템 서비스: kubelet, containerd, NetworkManager, CRI 플러그인.
  • 사용자 공간 데몬: sshd, cron, rsyslog.
  • 애플리케이션: syslog로 출력한 메시지.

예시

Aug 12 13:54:01 master-node-1 CRON[2345]: (root) CMD (/usr/local/bin/backup.sh)
Aug 12 13:54:03 worker-node-2 kernel: [12345.678901] eth0: link up
Aug 12 13:54:10 master-node-1 kubelet[1123]: Failed to pull image "nginx:latest": rpc error: ...

3. 로그 보는 방법

파일 기반

# 최신 100줄
sudo tail -n 100 /var/log/syslog
sudo tail -n 100 /var/log/messages

# 실시간 모니터링
sudo tail -f /var/log/syslog

# 특정 키워드 검색
sudo grep -i "kubelet" /var/log/syslog

journald 기반

# 현재 부팅 로그
sudo journalctl -b

# 서비스별
sudo journalctl -u kubelet
sudo journalctl -u containerd

# 심각도 필터
sudo journalctl -p err -b

# 시간 범위
sudo journalctl --since "2025-08-12 09:00" --until "2025-08-12 12:00" -u kubelet

# 커널만
sudo journalctl -k -b

4. 심각도 & 시설

  • Severity: 0(emerg) ~ 7(debug)
  • Facility: kern, auth, daemon, syslog, local0~local7

예시:

auth,authpriv.* /var/log/auth.log

5. rsyslog 설정 예시

/etc/rsyslog.d/10-custom.conf

# UDP/TCP 입력
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

# 원격 서버로 전송
*.* @@logs.example.com:514

# 호스트별/프로그램별 파일 저장
template(name="PerHostPerProg" type="string"
         string="/var/log/hosts/%HOSTNAME%/%PROGRAMNAME%.log")
*.* ?PerHostPerProg

6. journald 설정

/etc/systemd/journald.conf

[Journal]
Storage=persistent
SystemMaxUse=2G
SystemMaxFileSize=200M
MaxRetentionSec=1month

영속화:

sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald

7. 로그 로테이션

/etc/logrotate.d/rsyslog

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

8. Kubernetes 운영 활용 예시

노드 문제

journalctl -k | grep -i "Out of memory"
journalctl -k | grep -Ei "nvme|I/O error"

kubelet/CRI 문제

journalctl -u kubelet -b | grep -i "error"
journalctl -u containerd -b | grep -i "pull|cni"

DNS 문제

journalctl -u systemd-resolved -b | tail -n 200

9. 중앙집중 로그 수집

  • Promtail + Loki: /var/log/syslog & journald → Loki
  • Fluent Bit: in_systemd 플러그인으로 journald 직접 수집.

10. 관리 체크리스트

  1. 배포판별 로그 파일 위치 확인.
  2. journald 영속화 여부 설정.
  3. logrotate로 용량 관리.
  4. 필터링 명령 숙지.
  5. 중앙 수집 시스템 고려.
  6. 보안(원격 syslog 수신시 방화벽 필수).