주요 옵션 및 실전 활용
`journalctl`은 다양한 옵션 조합을 통해 원하는 로그를 정확하게 찾아낼 수 있는 유연성을 제공합니다. 아래 옵션들을 클릭하여 명령어를 직접 구성해보고, 각 기능의 상세 설명과 실전 팁을 확인하여 시스템 로그 분석 능력을 향상시키세요.
1. 기본 조회 및 탐색
2. 강력한 필터링 기법
3. 출력 형식 제어 및 고급 활용
생성된 명령어:
명령어를 조합해 보세요.
설명:
`journalctl` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
로그 저장소와 구조 이해하기
`journald` 서비스는 시스템 로그를 효율적인 바이너리 형식으로 저장합니다. 이 바이너리 형식은 빠른 검색과 인덱싱을 가능하게 하지만, `journalctl` 명령을 통해서만 내용을 열람할 수 있습니다. 로그 저장 방식은 시스템 설정에 따라 달라지며, 이는 로그 보존 기간과 디스크 공간 사용에 직접적인 영향을 미칩니다. 현재 시스템의 저장소 설정은 `journalctl --disk-usage` 또는 `/etc/systemd/journald.conf`에서 확인할 수 있습니다.
🌀 휘발성 저장소 (Volatile Storage)
/run/log/journal/
이곳에 저장된 로그는 시스템이 재부팅되면 모두 삭제됩니다. 주로 단기적인 문제 해결이나 임시 로그 저장에 사용됩니다. /var/log/journal 디렉터리가 존재하지 않거나 /etc/systemd/journald.conf 파일에 Storage=volatile로 설정된 경우, journald는 기본적으로 이곳에 로그를 저장합니다. 중요한 로그는 영구 저장소에 보관되도록 설정하는 것이 좋습니다.
💾 영구 저장소 (Persistent Storage)
/var/log/journal/
시스템 재부팅 후에도 로그를 보존하고 싶을 때 사용되는 경로입니다. 대부분의 운영 서버 환경에서는 이 경로에 로그가 저장되도록 설정하여 장기적인 감사, 문제 진단 및 보안 분석에 활용합니다. /var/log/journal 디렉터리가 존재하면 journald는 자동으로 로그를 영구 보존하며, /etc/systemd/journald.conf에서 Storage=persistent로 명시적으로 설정할 수도 있습니다.
로그 설정 및 디스크 공간 관리
로그는 시스템 상태를 파악하는 데 필수적이지만, 시간이 지남에 따라 디스크 공간을 과도하게 차지할 수 있습니다. `journald`의 설정을 적절히 변경하고 주기적으로 오래된 로그를 정리하는 것은 시스템의 안정성과 성능 유지에 매우 중요합니다. 이 섹션에서는 `journald`의 핵심 설정 파일과 로그 정리 명령어를 상세히 설명합니다.
설정 파일: /etc/systemd/journald.conf
journald의 모든 동작은 /etc/systemd/journald.conf 파일에서 제어할 수 있습니다. 이 파일을 편집하여 로그 저장 방식, 최대 크기, 보존 기간 등을 설정할 수 있습니다. 설정 변경 후에는 sudo systemctl restart systemd-journald 명령어로 서비스를 재시작해야 변경 사항이 적용됩니다.
- Storage=: 로그 저장 방식을 결정합니다.
persistent(영구 저장),volatile(재부팅 시 삭제),auto(기본값,/var/log/journal존재 여부에 따라 결정) 중 하나를 선택합니다. 대부분의 서버 환경에서는persistent를 권장합니다. - SystemMaxUse=: 저널이 사용할 최대 디스크 공간을 지정합니다. (예:
1G,100M) 이 값을 초과하면 가장 오래된 로그부터 자동으로 삭제됩니다. 디스크 공간 부족 문제를 방지하기 위해 시스템의 용량과 로그 발생량을 고려하여 적절히 설정해야 합니다. - SystemKeepFree=: 항상 확보해야 할 최소 여유 디스크 공간을 지정합니다. (예:
200M)SystemMaxUse와 함께 작동하며, 이 값 이하로 디스크 여유 공간이 떨어지지 않도록 로그를 삭제합니다. 시스템의 안정적인 작동을 위해 중요한 설정입니다. - ForwardToSyslog=: 기존
syslog데몬(예:rsyslog,syslog-ng)으로 로그를 전달할지 여부를 설정합니다.yes,no,auto중 하나를 사용합니다. 중앙 집중식 로그 관리 시스템을 사용하거나 레거시 시스템과의 호환성이 필요할 때 유용합니다. - MaxRetentionSec=: 로그를 보존할 최대 기간을 지정합니다. (예:
1month,30days,1year) 이 기간보다 오래된 로그는 자동으로 삭제됩니다.SystemMaxUse와 함께 로그 보존 정책을 유연하게 관리할 수 있습니다.
로그 수동 정리
설정 파일 외에도 journalctl 명령어를 사용하여 수동으로 로그를 정리하고 디스크 공간을 확보할 수 있습니다. 주의: 삭제된 로그는 복구할 수 없으므로 신중하게 명령어를 실행해야 합니다. 특히 --vacuum-time이나 --vacuum-size 옵션은 시스템의 중요한 감사 기록을 삭제할 수 있으므로, 사용 전에 충분히 이해하고 백업 정책을 고려해야 합니다.
현재 저널 디스크 공간 확인
journalctl --disk-usage
현재 `journald`가 사용하고 있는 디스크 공간의 총량을 확인합니다. 이를 통해 로그가 얼마나 많은 공간을 차지하고 있는지 파악하고, 정리 계획을 세울 수 있습니다.
오래된 로그 삭제 (시간 기준)
sudo journalctl --vacuum-time=2weeks
지정된 시간보다 오래된 모든 로그를 삭제합니다. 예를 들어, `2weeks`로 설정하면 2주보다 오래된 로그는 모두 제거됩니다. 이는 로그 보존 기간을 수동으로 관리할 때 유용하며, `1day`, `3months` 등 다양한 시간 단위를 사용할 수 있습니다.
로그 크기 제한 (용량 기준)
sudo journalctl --vacuum-size=500M
저널 파일의 총 크기를 지정된 용량으로 제한하고, 이 용량을 초과하는 가장 오래된 로그부터 삭제합니다. 예를 들어, `500M`으로 설정하면 저널 파일의 총 크기가 500MB를 넘지 않도록 유지됩니다. 디스크 공간 관리에 매우 효과적인 방법입니다.
로그 파일 개수 제한
sudo journalctl --vacuum-files=5
저널 파일의 최대 개수를 지정하여 관리합니다. 예를 들어, `journalctl --vacuum-files=5`는 최신 5개의 저널 파일만 남기고 나머지를 삭제합니다. 이는 파일 시스템의 inode 사용량을 관리하는 데 도움이 될 수 있으며, `SystemMaxFiles=` 설정과 유사하게 작동합니다.