로그 관리 데몬
systemd시스템에서 로그는 rsyslogd 와 systemd-journald두데몬에 의해 관리됩니다.
시스템에서 이벤트가 발생하면 모두 systemd-journald 로 전달됩니다. 이는 부팅 시작부터 로그를 수집하며 이후에 rsyslogd로 syslog를 전달하여 각 파일 별로 로그를 저장합니다.

rsyslogd에 의해 수집되는 로그의 파일 위치
/var/log/messages : 대부분의 로그 기록 (인증,메일,cron,부팅,디버깅과 관련된 로그를 제외)
/var/log/secure : 인증과 관련된 로그를 기록
/var/log/maillog : 메일고 관련된 로그를 기록
/var/log/cron : 주기적인 작업과 관련된 로그를 기록
/var/log/boot.log : 부팅과정에 발생된 로그를 기록
systemd-journald 에 의해 처리되는 저널 데이터 파일의 위치
systemd-journald 에 의해 수집되는 로그는 저널(journal) 데이터라고 부르며, /run/log/journal 디렉토리에 바이너리 파일 형태로 저장됩니다.
저널 데이터 파일이 저장되는 /run 디렉토리는 메모리 기반 파일시스템인 tmpfs로 마운트 되어 있으므로 시스템이 재부팅 되면 저널 데이터 파일은 삭제됩니다.
저장 경로 ->/run/log/journal
[root@localhost ~]# ls -lR /run/log/journal
/run/log/journal:
total 0
drwxr-s---+ 2 root systemd-journal 60 May 17 09:43 9ba7072b23acb44487a132be7e2230ee
/run/log/journal/9ba7072b23acb44487a132be7e2230ee:
total 8192
-rwxr-x---+ 1 root systemd-journal 8388608 May 17 10:16 system.journal
/etc/rsyslog.conf
/etc/rsyslog.conf 파일의 룰(rule)부분에는 rsyslogd 에 의해 전달되는 로그의 규칙들이 저장되어있습니다.
규칙을 정의할 때 공백을 기준으로 앞부분을 필터(Filter)라 하고 뒷부분을 행동(Action) 이라 합니다.
필터(Filter)
필터는 로그 메시지를 분류하기위한 기준입니다. 필터 조건에 따라 로그 메시지가 처리되는 방식을 결정할 수 있습니다.
1. 기능 및 우선 순위 기반 필터
2. 속성 기반 필터
3. 표현 기반 필터
세가지 형식으로 분류됩니다.
1. 기능 및 우선 순위 기반 필터는 로그의 정류와 로그의 우선순위 를 기준으로 분류하는 방식이며 속성 기반 필터는 로그 메시지에 포함된 호스트 이름,메시지,태그 등의 속성을 기준으로 로그를 분류하는 방식입니다.
기능의 종류
기능 | 설명 |
kern | 커널 메시지 |
user | 유저 레벨 메시지 |
메일 관련 메시지 | |
daemon | 시스템 데몬 메시지 |
auth | 보안 및 인가 메시지 |
syslog | syslogd에 의해 내부적으로 생성된 메시지 |
lpr | 라인프린터 하위 시스템 |
news | 네트워크 뉴스 하위 시스템 |
uucp | UUCP 하위 시스템 |
cron | 스케줄 작업 메시지 |
authpriv | 보안 및 인가 메시지 |
ftp | FTP데몬 메시지 |
local0-local7 | 사용자 정의 기능 |
우선 순위 종류
코드 | 우선순위(priority) | 설명 |
0 | emerg | 시스템 사용 불가 |
1 | alert | 즉시 조취를 취해야 할 상태 |
2 | crit | 치명적인 상태 |
3 | err,error | 에러발생 |
4 | warn,warning | 경고발생 |
5 | notice | 일반적이지만 중요 |
6 | info | 간단한 정보 |
7 | debug | 디버깅 메시지 |
0에 가까울수록 시스템에 영향이 높은 로그 메시지로, 하드웨어 이상에 따른 즉각적인 시스템 중단 경고가 해당되고, 코드값이 7에 가까운 로그 메시지는 일반적으로 사용자에게 표시되어야할 필요는 없지만, 경우에 따라 문제 해결에 유용하게 사용될 수 있는정보입니다.
행동(Action)
행동은 필터에 의해서 선택된 로그들이 처리되는 방법을 정의하는 부분입니다. 주로 파일에 메시지를 저장하거나, 시스템에 로그인된 사용자에게 메시지를 전달합니다.
systemd-journald
systemd-journald는 시스템이 부팅이 시작할 때 부터 발생하는 모든 이벤트를 수집해서 구조화된 바이너리 형태의 저널데이터로 저장합니다. 이 저널 데이터는 구조화 되어있기 때문에 인덱싱을 통해 사용자가 원하는 내용을 쉽고 자세하게 찾을수있습니다.
journalctl
journalctl 명령을 사용하여 저널 데이터를 조회할수 있습니다.
journalctl [option] [argument]
옵션이나 인자없이 사용한다면 현재 저장된 저널 데이터를 순차적으로 출력합니다. 출력은 시간순이다.
-p 옵션을 추가하면 특정 우선순위를 지정하여 로그를 출력할 수 있습니다.
-r : 최근에 발생한 저널 데이터 출력
-f : 실시간 저널 데이터 모니터링
--since ' YYYY-MM-DD hh :mm :ss' 형식을 통해 지정 시점부터의 저널데이터를 조회 할수있습니다.
--since ' ~ ' --until : 특정기간의 저널 데이터 출력
-o : 저널데이터의 출력 설정
저널 데이터의 영구적 저장
저널 데이터가 저장되는 파일은 /run/log/journal 디렉토리에 존재하기 때문에 시스템이 재부팅되면 삭제됩니다. 이를 영구적으로 저장하려면 기존의 저널 데이터가 저장되던 경로인 /run/log/journal 디렉토리와 동일하게 설정하여야합니다.
이를 위해선
1. 기존 디렉터리 설정값 확인 ( ls -ld /run/log/journal/)
2. 저널 데이터 저장 디렉토리 생성 및 설정 변경 (일반적으로 로그 파일들이 저장 되는 /var/log 디렉토리에 저널데이터를 저장할 새로운 디렉토리를 생성하고 설정을 변경합니다 mkdir /var/log/journal)
3. 저널 데이터를 영구적으로 저장하도록 설정한 뒤 systemd-journald 를 재시작하면 즉시 /varlog/journal 디렉토리에 저널 데이터가 저장되고 시스템이 재부팅되어도 유지됩니다. ( journalctl --list-boots )
'리눅스 공부' 카테고리의 다른 글
컨테이너/도커 컨테이너/쿠버네티스 개요 (0) | 2021.06.14 |
---|---|
모놀리식 아키텍처/마이크로서비스 아키텍처/DevOps (0) | 2021.06.14 |
[리눅스/CentOS] 디스크 파티션(MBR,GPT) (0) | 2021.05.13 |
[리눅스/CentOS] 볼륨그룹 및 논리볼륨 관리/확장 (0) | 2021.05.13 |
[리눅스/CentOS] RAID 실습 (0) | 2021.05.13 |