/var/log/messages
/var, 로그 메시지가 생기는 과정 본문
마지막으로, /var 디렉토리에 관한 글을 쓰려고 한다.
/var 내부의 구조는 /usr에 비해 복잡하지는 않지만, 서버 점검 할 때 가장 중요한 요소 중 하나인 /var/log/messages가 있는 곳이다. 이번 글은 /var와 /var/log/messages에 관해서 글을 써보려고 한다.

일단 linux foundation과 man 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-journald와 rsyslogd 데몬이 만든다.
system-journald
systemd가 journal 이라는 이진 형식으로 인코딩이 된 파일로 저장한다.
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
=> 모든 상황에서 발생하는 메시지 중, warning과 err 수준의 메시지를 /var/log/warn에 저장하겠다는 것이다.
*.crit /var/log/warn
=> crit 이상의 메시지도 /var/log/warn에 저장하겠다는 것이다.
/etc/rsyslog.conf 관련한 정보는 여러 블로그에 좋은 글들이 많으니, 찾아보는 것을 권한다.
이 글은 이 파일에 초점을 두지 않았기 때문이다.
이 파일들과는 별개로, 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를 확인해보면,

주로 nic가 on / off 되는 로그들이 나타났다.
dmesg를 아무 옵션 없이 주게 되면, 시간을 확인하기 매우 불편한다. 그러니 꼭 –T 옵션을 사용해야 윗 사진처럼 시간을 볼 수가 있다.
알아둬야 할 점은, demsg가 나타낸 시간과 /var/log/messages의 시간이 다를 수 있다.
왜냐하면 demsg는 하드웨어 clock을 기준으로 하는 반면, /var/log/messages는 시스템 시계를 기준으로 하기 때문이다.
c. systemd journal에 기록된다.
이 모든 메시지들이 sysetmd가 journal 형식으로 기록한다는 것이다.
이 로그 메시지들은 쌓이면 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 |

