반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

/var/log/messages

/var, 로그 메시지가 생기는 과정 본문

SUSE

/var, 로그 메시지가 생기는 과정

로만로만 2023. 2. 13. 12:55
반응형

마지막으로, /var 디렉토리에 관한 글을 쓰려고 한다.

/var 내부의 구조는 /usr에 비해 복잡하지는 않지만, 서버 점검 할 때 가장 중요한 요소 중 하나인 /var/log/messages가 있는 곳이다. 이번 글은 /var/var/log/messages에 관해서 글을 써보려고 한다.

 

일단 linux foundationman 7 hier에서 공통으로 말하는 /var의 설명은 아래의 내용이다.

가변 데이터 파일이 포함되어 있습니다. ’

 

그러려니 할 수 있겠지만, 좀 더 깊이 있게 이해하면 좋게 말하면 간단하게, 나쁘게 말하면 성의 없게?

표현 했다고 할 수 있다.

그건 글 중반에서 이야기 하도록 하고, 위 사진에 나온 디렉터리를 설명해보자 한다.

 

1. /var/log, 기타 로그 파일

로그 정보들이 있는 곳이다.

ls를 통해 확인을 해보면, 아래 사진과 같다.

 

그럼, log메시지는 어떤 과정으로 생기는 것일까?

수세 공식 사이트에선 이렇게 말한다.

systemd로 이동한 이후 systemd에 등록된 시스템 서비스의 메시지가 커널 메시지와 systemd journal
기록된다. 다른 로그 파일(주로 시스템 응용 프로그램의 로그 파일)은 일반 텍스트로 작성되며 편집기나 호출기를 사용하여 쉽게 읽을 수 있습니다.

https://documentation.suse.com/zh-tw/sles/15-SP3/html/SLES-all/cha-tuning-syslog.html

역시 공식 사이트라서 그런지, 말이 좀 어렵다.
무슨 말 인지 한번 살펴 보도록 하자.

a. systemd로 이동한 이후 systemd에 등록된 시스템 서비스의 메시지가

/etc/systemd라는 디렉터리가 있다. 이 디렉터리는 systemd를 설정 할 수 있는 파일들이 모인 곳이다.

( systemd는 리눅스가 부팅 시 가장 먼저 실행되는 프로세스로, 서비스와 로그 관리 하는데 사용 되기도 한다. )

 

여기서 보면 system이란 디렉터리가 보이는데, 이 디렉터리는 현재 서비스 중인 목록을 볼 수 있다.

한번 확인해보면, 아래 사진과 같다.

보게 되면 확장자가 service인 파일들을 볼 수 있는데 이 의미는 현재 리눅스에 등록된 서비스라는 것이다.
( .wants는 서비스의 활성화 방식을 정의한 디렉터리이다. )

실제로 서비스 파일을 설치하면 자동으로 /var/log 밑에 추가가 된다.
웹 서버 서비스를 설치하니, /var/log밑에 apache2가 추가 된 것을 볼 수 있다.

 
 

즉 여기에 있는 service 파일들이 systemd에 등록되었다고 말할 수 있는 것이다.

그럼 이 파일들의 메시지는 어떻게 만들어 지는 것인가? 바로 system-journaldrsyslogd 데몬이 만든다.

 

system-journald

systemdjournal 이라는 이진 형식으로 인코딩이 된 파일로 저장한다.

journal이란 직역하면 일보, 기사 등을 의미한다. , systemd가 만들어낸 기사( 로그 )를 의미한다.

부팅부터 모든 로그를 수집한다.

journal 파일은 /var/log/journal 혹은 /run/log/journal에 기록 된다.
( /run은 계속 실행되고 있는 프로세스를 저장하고 있는 경로를 의미한다. )
이 로그들은 journalctl 이란 명령어로 확인 할 수 있다.

스크린샷을 했는데 가독성이 너무 안 좋아서 텍스트로 가져왔다.
host-1:~ # journalctl -n 5
Feb 13 12:40:01 host-1 postfix/pickup[129158]: 6E4E7133A9EB: uid=0 from=<root>
Feb 13 12:40:01 host-1 postfix/cleanup[129360]: 6E4E7133A9EB: message-id=<20230213034001.6E4E7133A9EB@localhost>
Feb 13 12:40:01 host-1 postfix/qmgr[1732]: 6E4E7133A9EB: from=<root@localhost>, size=843, nrcpt=1 (queue active)
Feb 13 12:40:01 host-1 postfix/local[129362]: 6E4E7133A9EB: to=<root@localhost>, orig_to=<root>, relay=local, delay=0.02, delays=0.01/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Feb 13 12:40:01 host-1 postfix/qmgr[1732]: 6E4E7133A9EB: removed

rsyslogd
remote syslog라고도 불린다.
원래는 syslog였지만, remote 기능을 추가함으로써, 원격 로그 서버로 만들 수 있게 되었다고 한다.
그리고 어떤 글은 rocket-fast system ( for log processing ) 이라고도 부르기도 한다.
rocket
만큼 빠르게 기록한다는 의미로 그렇게 부르기도 한다.

이 파일은 syslog를 통해 각 파일 별로 로그를 저장한다,
rsyslogd를 제대로 설명하려면 마찬가지로 하나의 블로그를 또 써야하니, 간단하게 설명하고자 한다.

이 데몬은 /etc/rsyslog.conf에서 로그 메시지를 발생 시키는 규칙을 설명을 하고 있다.

간단히 살펴보고자 한다.

특정 시간을 기준으로, 중복된 메시지를 제거하겠다는 설정이 있는 것을 볼 수도 있다.

그리고 로그 파일들의 기본 permissions 들도 확인 할 수 있다.

 

그리고 이 파일에서 가장 중요한 형식인 바로 어떤 로그를 등록을 시킬 건지를 정하는 부분도 있다.

*.=warning;*.=err -/var/log/warn
=> 모든 상황에서 발생하는 메시지 중, warningerr 수준의 메시지를 /var/log/warn에 저장하겠다는 것이다.

*.crit /var/log/warn

=> crit 이상의 메시지도 /var/log/warn에 저장하겠다는 것이다.

/etc/rsyslog.conf 관련한 정보는 여러 블로그에 좋은 글들이 많으니, 찾아보는 것을 권한다.

이 글은 이 파일에 초점을 두지 않았기 때문이다.

 
b. 커널 메시지와

이 파일들과는 별개로, kernel 자체에서 발생시키는 메시지들도 있다. 바로 Klogd라는 데몬이 만든다.

리눅스 커널은 로그를 RAM에 저장하고, 이 정보를 보기 위해선, /proc/kmsg/dev/kmsg라는 파일이 존재한다.

 

/proc/kmsg는 커널에 의해 만들어지는 것이다. 여기서 만들어진 정보는 /sbin/klogd/bin/dmesg에 쓰인다.

/proc/kmsg의 특징은 한번 읽으면 지워진다는 특징이 있다.

 

/dev/kmsg는 여러번 읽어도 지워지지 않는다는 특징이 있다.

/dev/kmsg를 확인하려면 dmesg를 입력하면 된다.

 

개인적인 생각으론, /proc/kmsg/dev/kmsg의 관계는 /dev/kmsg/proc/kmsg를 읽는다. 그리고 dmesg/dev/kmsg를 읽어서 출력한다.

라고 생각한다.

 

이유는 man dmesg의 옵션들에서 찾을 수 있었다.

dmesg n 의 옵션 설명 중 모든 수준의 메시지는 여전히 /proc/kmsg에 기록된다는 메시지가 있다.

dmesg S 의 옵션 설명 중 기본 값은 /dev/kmsg를 사용한다는 메시지가 있다.

그래서 이러지 않을까..? 라는 유추를 해보았다.

 

필자의 demsg를 확인해보면,

주로 nicon / off 되는 로그들이 나타났다.

dmesg를 아무 옵션 없이 주게 되면, 시간을 확인하기 매우 불편한다. 그러니 꼭 T 옵션을 사용해야 윗 사진처럼 시간을 볼 수가 있다.

알아둬야 할 점은, demsg가 나타낸 시간과 /var/log/messages의 시간이 다를 수 있다.

왜냐하면 demsg는 하드웨어 clock을 기준으로 하는 반면, /var/log/messages는 시스템 시계를 기준으로 하기 때문이다.

 

c. systemd journal에 기록된다.

이 모든 메시지들이 sysetmdjournal 형식으로 기록한다는 것이다.

 

이 로그 메시지들은 쌓이면 RAM을 낭비하는 현상이 나타나기에 /etc/logrotate를 이용해서 관리를 한다.

나중에 시간 나면, 이 주제로도 글을 써보려고 한다.

 

, 위에 모든 과정들을 겪은 후, /var/log ( 주로 /var/log/messages )에 저장이 된다는 것이다.

가변 적인 의미가 알고보니 이 정도의 규모 였다.

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nahejae533&logNo=221270596126

 

[리눅스] 08. 로그 관리

ch08. 로그 관리 [1] 로그 아키텍처 * 로그 기록의 역할 1) 문제의 원인 파악 2) 인가되지 않은 접근으로부...

blog.naver.com

이 분 글에 이 글 이해도를 돕기 위한 그림과 글이 있으니 확인해봐도 좋을 것 같다.

 

로그 관리 데몬 흐름도

로그 파일 위치

 

2. /var/spool, 메일과 관련된 디렉토리

아무 것도 안 했는데 갑자기 root 계정으로 mail이 왔다는 것을 보았다.
그래서 vi로 확인해보았더니 아래와 같이 나왔다.
( 찾아보니, 시스템 관련 처리 중 이슈가 발생하면 자동으로 발생되는 메일이라고 한다. )

잘은 모르겠지만, /usr/lib64/sa/sadc 관련 처리 중 issue가 발생한 것 같다.

 

3. /var/tmp, /tmp와 마찬가지로 지정되지 않은 기간 동안 지정된 임시 파일을 저장

/tmp와 차이점은, 이 파일은 30일마다 삭제를 한다면, /tmp는 재부팅하면 삭제 된다는 것이다.

혹시 기간을 설정하고 싶으면 /usr/lib/tmpfiles.d/tmp.conf에서 설정하면 되겠다.

 

이제까지 리눅스 디렉토리 구조였고, 다음 글은 파일시스템에 관해서 글을 써보도록 할 것이다.

 

 

 
 

 

 
 

 

 

 

'SUSE' 카테고리의 다른 글

free 명령어 정리  (0) 2023.02.27
리눅스 파일시스템이란  (0) 2023.02.22
/usr 디렉터리  (0) 2023.02.11
리눅스 디렉토리 구조  (2) 2023.01.29
리눅스 명렁어 사용 방법  (2) 2023.01.22