9차에서 기본 다뤘지만 journalctl은 「운영의 만능 도구」.
깊이 활용하면 디버깅 시간 크게 단축.
필터 조합.
journalctl -u nginx --since "1 hour ago" -p err — nginx 서비스의 1시간 내 에러만.
매우 정교한 필터링.
_PID·_UID·_COMM·_HOSTNAME 같은 필드로도.
JSON 출력.
journalctl -o json — 머신 친화.
-o json-pretty — 사람도 읽음.
jq와 결합 — journalctl -o json -u nginx | jq '.MESSAGE' — 메시지만 추출.
자동화·분석에.
통계.
journalctl --list-boots — 부팅 이력.
-b 0(현재 부팅)·-b -1(전 부팅) 같이 부팅 기준.
journalctl --disk-usage — 사용량.
활용 패턴.
1) 「갑자기 안 됨」 — journalctl -u service --since "5 min ago".
2) 「어제 무슨 일」 — journalctl --since yesterday --until today.
3) 「부팅 시 문제」 — journalctl -b 0 -p err.
4) 「특정 PID」 — journalctl _PID=1234.
5) 「커널 로그」 — journalctl -k.
거의 모든 로그 분석이 journalctl 한 명령으로.
영구 로그.
기본은 RAM(/run/log/journal) — 재부팅 시 사라짐.
/var/log/journal 디렉토리 만들면 디스크에 영구.
sudo mkdir -p /var/log/journal && sudo systemd-tmpfiles --create.
운영 서버는 영구 권장.
한 줄 요약
journalctl 깊이 — -u 서비스·--since 시간·-p 우선순위·-b 부팅·_PID·_COMM 필드 필터, -o json + jq로 분석.
/var/log/journal 만들면 영구.
운영의 만능 도구.
더 알아볼 것
- journalctl --grep 패턴
- 로그 외부 전송 — Vector·Promtail
- journald 설정 — Compress·MaxSize