본문으로 바로가기

[Linux] journal user guide

category Linux/RHEL7 & 8 2021. 7. 15. 19:08
반응형

리눅스용 시스템 서비스 매니저인 systemd 는 로그 데이타를 journal 이라는 바이너리 형식으로 저장한다.

시스템이 부팅했을 때부터의 시스템 로그를 저장한다. 

아래 내용은 journalctl 사용방법과 journald 관련 설정에 대한 내용이다.

 

 

1. systemd-journald 서비스 상태 확인

[root@16-1-repo ~]# systemctl status systemd-journald
● systemd-journald.service - Journal Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)
   Active: active (running) since Thu 2021-07-15 18:08:43 KST; 45s ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 791 (systemd-journal)
   Status: "Processing requests..."
    Tasks: 1 (limit: 101359)
   Memory: 2.5M
   CGroup: /system.slice/systemd-journald.service
           └─791 /usr/lib/systemd/systemd-journald

Jul 15 18:08:43 16-1-repo systemd-journald[791]: Journal started
Jul 15 18:08:43 16-1-repo systemd-journald[791]: Runtime journal (/run/log/journal/9fbdfba95f08495da0fb579afce8f359) is 8.0M, max 793.6M>
Jul 15 18:08:43 16-1-repo systemd-journald[791]: Runtime journal (/run/log/journal/9fbdfba95f08495da0fb579afce8f359) is 8.0M, max 793.6M>

 

 

2. 주로 사용하는 journalctl 예제

# 최근 메시지만 보기  (최근 7개만 보기)
[root@16-1-repo ~]# journalctl -n 7      
-- Logs begin at Thu 2021-07-15 18:08:41 KST, end at Thu 2021-07-15 18:09:26 KST. --
Jul 15 18:09:26 16-1-repo systemd[1773]: Listening on D-Bus User Message Bus Socket.
Jul 15 18:09:26 16-1-repo systemd[1773]: Reached target Sockets.
Jul 15 18:09:26 16-1-repo systemd[1773]: Reached target Basic System.
Jul 15 18:09:26 16-1-repo systemd[1773]: Reached target Default.
Jul 15 18:09:26 16-1-repo systemd[1773]: Startup finished in 30ms.
Jul 15 18:09:26 16-1-repo systemd[1]: Started User Manager for UID 0.
Jul 15 18:09:26 16-1-repo sshd[1770]: pam_unix(sshd:session): session opened for user root by (uid=0)


# 실시간 로그 보는 방법
[root@16-1-repo ~]# journalctl -f
-- Logs begin at Thu 2021-07-15 18:08:41 KST. --
... < 중략 >
Jul 15 18:12:22 16-1-repo systemd[1]: Started Session 3 of user root.
Jul 15 18:12:22 16-1-repo sshd[1831]: pam_unix(sshd:session): session opened for user root by (uid=0)


# 날짜 및 시간으로 필터해서 보는 방법
예1) 특정 날짜 이후에 생성된 journal 로그 보는 방법
[root@16-1-repo ~]# journalctl --since 2021-07-14


예2) 특정 기간의 journal 로그 보는 방법  (아래처럼 지정시 14일까지 로그가 아니라 07-13일까지의 로그만 보여줌)
[root@16-1-repo ~]# journalctl --since 2021-07-12 --until 2021-07-14

 

 

3. journal log 보는 방법

journal 파일은 바이너리로 vi 로 볼 수 없다. 따라서 journalctl 명령어를 사용해서 봐야한다.

기본적으로 journal log는 /run/log/journal/xxxxx/에 존재한다.    (xxxxx : 무슨 ID일 것 같은데 못 찾았다...)

# journal 로그 보는 방법
journalctl --file=<파일명>

[root@16-1-repo ~]# cd /run/log/journal/9fbdfba95f08495da0fb579afce8f359
[root@16-1-repo ~]# journalctl --file=system@1c28df56cb58476eb510aa8b91253844-000000000020a97e-0005c1f0ecbc1d0f.journal

 

 

4. /var/log/journal에 저장하는 방법 (옵션)

/run/log가 아닌 /var/log/에 journal을 저장하고 싶다면 아래와 같이 하면 /var/log 경로에서 journal 로그가 저장된다.

# 기본 journal log 저장 디렉토리 확인
[root@16-1-repo ~]# ls /run/log/journal/9fbdfba95f08495da0fb579afce8f359/
system.journal


# 디렉토리 생성 및 journal log 조회
[root@16-1-repo ~]# mkdir -p /var/log/journal

[root@16-1-repo ~]# ls /var/log/journal/


# systemd-journald 서비스 재기동
[root@16-1-repo ~]# systemctl restart systemd-journald


# journal log 확인
[root@16-1-repo ~]# ls /var/log/journal/
9fbdfba95f08495da0fb579afce8f359


[root@16-1-repo ~]# ls /var/log/journal/9fbdfba95f08495da0fb579afce8f359/
system.journal


# 기본 journal log 저장 디렉토리 확인 (/run/log/ 에 저장되었던 journal 로그가 사라짐을 확인)
[root@16-1-repo ~]# cd /run/log/
[root@16-1-repo log]# ls
[root@16-1-repo log]#

 

 

5. /var/log/journal에 저장 크기 및 보관주기 설정방법

journal log 파일의 최대 Size를 지정하여 사용자가 원하는 만큼의 크기만 저장되도록 할 수 있다.

journal log 파일의 최대 보관일수 역시 설정할 수 있다.

1. journal 디렉토리 사용량 확인
[root@16-1-repo ~]# cd /var/log
[root@16-1-repo log]# du -d 1 -h
... 
< 중략 >
321M	./journal


[root@16-1-repo log]# systemctl status systemd-journald
... 
< 중략 >
 7월 15 17:52:42 16-1-repo systemd-journal[464835]: Permanent journal is using 408.0M (max allowed 350.0M, trying to lea…08.0M)

(MAX로 350M까지만 허용된다는 것을 확인 할 수 있음)


2. 250M까지만 허용하도록 config를 변경한다 
[root@16-1-repo log]# vi /etc/systemd/journald.conf

# 변경 전 (주석처리 되어있으면 주석을 해제하고 설정한다.)
[Journal]
...
< 중략 >
SystemMaxUse=350M
...


# 변경 후
[Journal]
...
< 중략 >
SystemMaxUse=250M
...
#MaxFileSec=1month      <- 보관주기 설정시 이 부분의 주석을 제거하면 된다
...


3. systemd-journal 재기동
[root@16-1-repo log]# systemctl restart systemd-journald

[root@16-1-repo log]# systemctl status systemd-journald
... 
< 중략 >
systemd-journal[502894]: Permanent journal is using 320.0M (max allowed 250.0M, trying to lea…20.0M)

(MAX로 250M까지만 허용된다는 것으로 변경됨)


4. journal 디렉토리 사용량 확인
[root@16-1-repo log]# du -d 1 -h
...
241M	./journal

 

728x90