type
status
date
slug
summary
tags
category
icon
password
정의
로그는 시스템에서 발생한 이벤트나 활동을 기록한 데이터입니다.
일반적으로 기본 시스템, 보안 메시지, cron 등이 있습니다.
사용되는 사례는 다음과 같습니다.
- 문제 해결
- 성능 분석
- 시스템 Health 모니터링
- 규정과 감사
- 보안
아키텍처
로그 아키텍처는 로그 데이터를 수집, 저장, 분석하는 시스템으로 구성됩니다. 일반적으로 로그 수집기는 다양한 소스에서 로그를 모아 중앙 저장소에 전달합니다.
rsyslog
/etc/rsyslog.conf
또는 /etc/syslog.conf
에 있는 구성 파일을 사용하여 로그가 저장되는 위치와 방법을 임의로 지정할 수 있습니다.rsyslogd 에 의해 수집되는 로그(syslog) 위치입니다.
로그 파일 | 설명 |
/var/log/messages | 시스템 메시지와 일반 로그 |
/var/log/secure | 보안 관련 메시지와 인증 로그 |
/var/log/maillog | 메일 서버 관련 로그 |
/var/log/cron | 크론 작업 관련 로그 |
/var/log/boot.log | 부팅 과정에서 발생하는 로그 |
/var/log/dmesg | 커널 및 부팅 메시지 로그 |
/var/log/httpd/ | Apache 웹 서버 로그 |
/var/log/audit/ | 보안 감사 로그 |
우선순위
코드 값이 낮을 수록 중요합니다.
코드 | 우선순위 | 설명 |
0 | emerg | 시스템 사용 불가 |
1 | alert | 즉시 조치를 취해야 함 |
2 | crit | 치명적 |
3 | err, error | 에러 |
4 | warn, warning | 경고 |
5 | notice | 일반적이나 중요 |
6 | info | 간단한 정보 |
7 | debug | 디버깅 메시지 |
systemd-journald
systemd-journald는 systemd 기반 시스템에서 사용되는 로깅 시스템입니다. 이 서비스는 시스템 로그, 커널 로그, 애플리케이션 로그 등 다양한 소스의 로그 데이터를 수집합니다.
수집된 로그는 바이너리 형식으로 저장되어 효율적인 저장과 빠른 검색이 가능합니다.
journald
서비스에서 수집, 저장 및 처리하고, journalctl
로 저널 데이터를 조회할 수 있습니다./run/log/journal
에 위치하기 때문에 시스템이 재부팅되면 저널 데이터는 삭제됩니다.비교
항목 | rsyslog | systemd-journald |
사용처 | 전통적인 Unix/Linux 시스템 | systemd 기반 현대 Linux 시스템 |
로그 형식 | 일반 텍스트 파일 | 바이너리 형식 (구조화된 데이터) |
전송 | 원격 서버로 로그 전송 가능 | 주로 로컬 저장, 원격 전송은 제한적 |
메타데이터 | 제한적인 메타데이터 | 풍부한 메타데이터 (PID, UID 등) |
검색 및 분석 | 텍스트 기반 도구로 검색 (grep 등) | journalctl을 통한 고급 필터링 및 검색 |
관계 및 흐름
로그는 rsyslogd 와 systemd-journald 두 데몬에 의해 관리됩니다.
관리
logrotate
logrotate는 로그 파일이 너무 커지지 않도록 주기적으로 롤오버하고 압축하여 디스크 공간을 절약하는 데 사용됩니다. 이는 로그 관리의 핵심 도구로, 로그 파일이 일정 크기나 기간에 도달하면 자동으로 처리해줍니다.
다음은 logrotate 설정 파일의 예시입니다.
daily
: 로그 파일을 매일 롤오버합니다.
rotate 7
: 7개의 이전 로그 파일을 보관합니다.
compress
: 롤오버된 로그 파일을 압축합니다.
delaycompress
: 가장 최근의 롤오버된 파일은 다음 롤오버 때까지 압축하지 않습니다.
missingok
: 로그 파일이 없어도 오류를 발생시키지 않습니다.
notifempty
: 로그 파일이 비어 있으면 롤오버하지 않습니다.
create 0640 root utmp
: 새로운 로그 파일을 생성할 때의 권한과 소유자를 설정합니다.
postrotate
및endscript
: 로그 파일을 롤오버한 후 실행할 명령어를 정의합니다. 이 예시에서는 syslog 데몬을 재시작합니다.
journalctl
journalctl은 journal 로그를 조회하고 관리하기 위한 명령어입니다. 이를 사용하면 특정 시간 범위, 서비스, 우선순위 등 다양한 조건으로 로그를 필터링할 수 있습니다.
저널 데이터를 영구 저장 하려면
/etc/systemd/journald.conf
내에서 @Storage
값을 auto
에서 persistent
로 변경하면 됩니다.REF