systemlog 에 관해서
리눅스 /var/log/syslog
와 /var/log/messages
완전 정리 (K8s 운영 관점 포함)
1. 개요
- Debian/Ubuntu 계열:
/var/log/syslog
→ 주요 시스템 로그 파일. - RHEL/CentOS/Rocky 계열:
/var/log/messages
→ 동일한 역할. - 공통점: 커널, 시스템 서비스, 사용자 애플리케이션의 일반 로그가 모임.
로그 흐름
- 커널/애플리케이션 → syslog API 호출 또는 표준 출력.
- systemd-journald 수집 → 메모리/디스크 저널에 저장.
- 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. 관리 체크리스트
- 배포판별 로그 파일 위치 확인.
- journald 영속화 여부 설정.
- logrotate로 용량 관리.
- 필터링 명령 숙지.
- 중앙 수집 시스템 고려.
- 보안(원격 syslog 수신시 방화벽 필수).