journal?

  • systemd의 중앙 로그 수집기
  • 커널 로그, systemd 로그, stdout, stderr, 부팅/종료 이벤트 등등을 표시해줌
  • 기존의 방식은 서비스마다 로그 파일이 따로 존재하다보니 불편했음. 근데 이건 한 번에 볼 수 있음

journal 문법

기본 문법

  • 기본적으로 맨 앞에는 journalctl이 온다.
journalctl # 전체 로그 (최신순)
journalctl -u <서비스> # 서비스 로그
journalctl -u <서비스> -f # 서비스 실시간 로그
journalctl -k # 커널 로그

시간 필터링

  • 시간으로 필터링 할 수 있음.
journalctl --since <> # 시간 이후 로그
journalctl --until <> # 시간 이전 로그
  • 상대 시간도 사용할 수 있음
문자열의미
now현재 시각
today오늘 00:00
yesterday어제 00:00
tomorrow내일 00:00
  • ago 표현을 쓰면 편함
journalctl --since "5 minutes ago"
journalctl --since "2 hours ago"
journalctl --since "1 day ago"
  • ago 사용 가능 단위 (단/복수 가능)
    • seconds
    • minutes
    • hours
    • days
    • weeks
    • months
    • years

레벨 필터링

  • 로그의 레벨 별로 필터링 할 수 있음.
journalctl -p <로그레> # 로그 레벨 필터
 
 
# 로그 레벨 (왼쪽으로 갈수록 심각한거)
emerg, alert, crit, err, warning, notice, info, debug
 

부팅 필터링

  • 특정 부팅 로그를 볼 수 있음
journalctl --list-boots # 부팅 목록 확인
journalctl -b 0 # 현재 부팅 확인
journalctl -b -1 # 바로 이전 부팅 확인

설정 파일

  • 위치 : /etc/systemd/journald.conf

  • 이 중에서 storage가 좀 특이함

    • auto : 만약에 /var/log/journal 폴더가 있으면 persistent, 없으면 volatile로 작동함
    • volatile : 메모리를 사용 (재부팅 시 삭제)
    • persistent : 디스크에 저장 (재부팅 해도 남음)
  • 디스크에 저장하도록 설정하는 방법

    • /var/log/journal 폴더를 만들어주면 됨
mkdir -p /var/log/journal