본문 바로가기

리눅스

journal 로그를 확인하고 삭제하는 방법

반응형

journal 로그를 확인하고 삭제하는 방법

systemd-journald는 systemd 시스템 및 서비스 관리자의 일부로 Linux 시스템에서 시스템 로그와 이벤트 메시지를 수집하고 저장하는 데 사용되는 데몬(백그라운드 서비스)입니다. 이 데몬은 다양한 시스템 구성 요소와 응용 프로그램으로부터 로그 데이터를 수집하고 이를 중앙 집중식으로 관리하여 효율적인 로그 조회와 관리가 가능하도록 합니다.

systemd-journald의 주요 기능

  1. 로그 수집 및 저장 : systemd-journald는 커널, 서비스, 사용자 프로그램, 표준 출력 및 표준 오류 메시지 등 다양한 소스에서 발생하는 로그를 수집하여 저장합니다. 이 로그는 journal이라는 이진 형식의 파일로 저장됩니다.
  2. 중앙 집중식 로그 관리 : 모든 로그를 한곳에서 관리하여 시스템 관리자가 손쉽게 로그를 조회하고 분석할 수 있도록 합니다. 이를 통해 로그의 일관성 및 통합 관리가 가능해집니다.
  3. 로그 필터링 및 조회 : journalctl 도구를 사용하여 로그를 다양한 기준으로 필터링하고 조회할 수 있습니다. 예를 들어, 특정 서비스, 시간 범위, 우선순위 등을 기준으로 로그를 검색할 수 있습니다.
  4. 로그 압축 및 회전 : 로그 파일이 일정 크기나 시간에 도달하면 자동으로 압축하거나 회전시켜 디스크 공간을 효율적으로 사용합니다.
  5. 퍼시스턴트 및 휘발성 저장 : systemd-journald는 로그를 메모리 또는 디스크에 저장할 수 있습니다. 메모리에 저장된 로그는 재부팅 시 사라지지만 디스크에 저장된 로그는 재부팅 후에도 유지됩니다. 기본적으로 로그는 /var/log/journal/ 디렉토리에 저장됩니다.
  6. 로그 보안 및 무결성: 로그 파일은 이진 형식으로 저장되며 무결성 검사를 위해 로그 항목에 해시를 추가하여 변조를 방지할 수 있습니다.
  7. 로그 우선순위 관리 : 로그 메시지는 중요도에 따라 우선순위를 갖습니다. systemd-journald는 이 우선순위를 관리하며 우선순위에 따라 로그를 필터링할 수 있습니다.

기본적인 사용법

journalctl 명령을 사용하여 로그를 확인합니다.

 

(모든) 로그 확인

sudo journalctl

특정 서비스 로그 확인

sudo journalctl -u <service_name>

실시간 로그 보기

sudo journalctl -f

로그 압축 및 회전

sudo journalctl --vacuum-size=1G

구성 파일

systemd-journald의 구성 파일은 /etc/systemd/journald.conf입니다. 이 파일을 통해 로그의 최대 크기, 저장 위치, 압축 여부 등의 설정을 조정할 수 있습니다.

vim /etc/systemd/journald.conf
더보기

---

cat /etc/systemd/journald.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See journald.conf(5) for details.

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K

---

[Journal]
Storage=persistent
SystemMaxUse=1G
SystemKeepFree=100M
SystemMaxFileSize=100M
  • Storage : 로그를 어디에 저장할지 지정(persistent는 디스크에 저장, volatile은 메모리에 저장)
  • SystemMaxUse : 로그가 사용할 수 있는 최대 디스크 용량
  • SystemKeepFree : 로그 저장 시 남겨야 할 최소한의 여유 공간
  • SystemMaxFileSize : 개별 로그 파일의 최대 크기

기타 특성

이진 형식 로그 : systemd-journald는 로그를 이진 형식으로 저장하므로 로그의 신속한 검색 및 압축이 가능합니다.

API 지원 : 로그는 journalctl 명령 외에도 API를 통해 프로그램적으로 접근할 수 있습니다.

728x90

Journal 로그 확인

특정 부팅 세션의 로그 확인

  • 현재 부팅 세션의 로그 확인
sudo journalctl -b
  • 이전 부팅 세션의 로그 확인(-1, -2 등으로 세션을 지정)
sudo journalctl -b -1

특정 서비스의 로그 확인

  • 특정 서비스의 로그만 확인하려면 -u 옵션을 사용합니다. sshd 서비스의 로그를 출력합니다.
sudo journalctl -u sshd

특정 시간 범위의 로그 확인

  • 특정 시간 동안의 로그를 확인하려면 --since와 --until 옵션을 사용합니다. 2024년 8월 24일에 기록된 로그를 보여줍니다.
sudo journalctl --since "2024-08-24 00:00:00" --until "2024-08-24 23:59:59"

로그 필터링

  • 특정 키워드나 메시지를 필터링하여 로그를 확인하려면 grep 명령어를 사용하여 "keyword"를 포함한 라인을 검색하여 출력합니다.
sudo journalctl | grep "keyword"

Journal 로그 삭제

일정 기간이 지난 로그 삭제

  • 오래된 로그를 삭제하려면 --vacuum-time 옵션을 사용합니다. 예를 들어, 7일 이상 된 로그를 삭제합니다.
sudo journalctl --vacuum-time=7d

로그 파일 크기를 기준으로 삭제

  • 로그 파일이 특정 크기를 초과하지 않도록 관리하려면 --vacuum-size 옵션을 사용합니다. 예를 들어, 로그가 1GB를 초과하지 않도록 설정합니다.
sudo journalctl --vacuum-size=1G

특정 개수의 로그 파일만 유지

  • 로그 파일의 개수를 제한하려면 --vacuum-files 옵션을 사용합니다. 예를 들어, 10개의 로그 파일만 유지합니다.
sudo journalctl --vacuum-files=10

모든 로그 삭제

  • 모든 로그를 삭제합니다.
    • --rotate : 현재 로그 파일을 마감하고 새로운 로그 파일을 생성합니다.
    • --vacuum-time=1s : 1초 이상의 모든 로그 파일을 삭제합니다.
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s

수동으로 로그 파일 삭제

모든 로그를 강제로 삭제하며 시스템에 새로운 로그 파일이 생성되도록 합니다.

  • 로그 파일을 수동으로 삭제하려면 journal 디렉토리의 모든 로그 파일을 삭제합니다. 그런 다음 systemd-journald 서비스를 다시 시작합니다.
sudo rm -rf /var/log/journal/*
sudo systemctl restart systemd-journald

 

systemd-journald는 Linux 시스템에서 로그 관리를 효율적으로 수행하는 핵심 도구로 특히 대규모 시스템 관리에서 유용하게 활용됩니다.

 

728x90
반응형