728x90
journal 로그를 확인하고 삭제하는 방법
systemd-journald는 systemd 시스템 및 서비스 관리자의 일부로 Linux 시스템에서 시스템 로그와 이벤트 메시지를 수집하고 저장하는 데 사용되는 데몬(백그라운드 서비스)입니다. 이 데몬은 다양한 시스템 구성 요소와 응용 프로그램으로부터 로그 데이터를 수집하고 이를 중앙 집중식으로 관리하여 효율적인 로그 조회와 관리가 가능하도록 합니다.
systemd-journald의 주요 기능
- 로그 수집 및 저장 : systemd-journald는 커널, 서비스, 사용자 프로그램, 표준 출력 및 표준 오류 메시지 등 다양한 소스에서 발생하는 로그를 수집하여 저장합니다. 이 로그는 journal이라는 이진 형식의 파일로 저장됩니다.
- 중앙 집중식 로그 관리 : 모든 로그를 한곳에서 관리하여 시스템 관리자가 손쉽게 로그를 조회하고 분석할 수 있도록 합니다. 이를 통해 로그의 일관성 및 통합 관리가 가능해집니다.
- 로그 필터링 및 조회 : journalctl 도구를 사용하여 로그를 다양한 기준으로 필터링하고 조회할 수 있습니다. 예를 들어, 특정 서비스, 시간 범위, 우선순위 등을 기준으로 로그를 검색할 수 있습니다.
- 로그 압축 및 회전 : 로그 파일이 일정 크기나 시간에 도달하면 자동으로 압축하거나 회전시켜 디스크 공간을 효율적으로 사용합니다.
- 퍼시스턴트 및 휘발성 저장 : systemd-journald는 로그를 메모리 또는 디스크에 저장할 수 있습니다. 메모리에 저장된 로그는 재부팅 시 사라지지만 디스크에 저장된 로그는 재부팅 후에도 유지됩니다. 기본적으로 로그는 /var/log/journal/ 디렉토리에 저장됩니다.
- 로그 보안 및 무결성: 로그 파일은 이진 형식으로 저장되며 무결성 검사를 위해 로그 항목에 해시를 추가하여 변조를 방지할 수 있습니다.
- 로그 우선순위 관리 : 로그 메시지는 중요도에 따라 우선순위를 갖습니다. 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
'리눅스' 카테고리의 다른 글
[draft] 우분투에서 Unison을 설치하고 사용하는 방법 (0) | 2024.08.28 |
---|---|
[draft] 우분투에서 IPv6를 영구적으로 비활성화하는 방법 (0) | 2024.08.28 |
[draft] MetalLB를 설치하고 설정하여 LoadBalancer 서비스를 테스트하는 방법 (0) | 2024.08.21 |
[draft] 우분투에 쿠버네티스 싱글 노드를 구성하는 방법 (0) | 2024.08.20 |
[draft] 쿠버네티스 클러스터에서 Worker Node를 재기동하는 방법 (0) | 2024.08.19 |