RHCSA : 실행 시스템 운영 – 시스템 로그 파일 및 저널 검색 및 해석

RHCSA 주제입니다. CertDepot 사이트를 번역 및 내용 추가하였으며, 컨텐츠 관련 모든 권리는 CertDepot에 있습니다.

시작하기 전에

대부분의 시스템 로그 파일은 SYSLOG 기본 설정으로 인해 /var/log 디렉토리에 위치해 있다(/etc/rsyslog.conf 파일을 참조할 것).

더불어 모든 SELinux 이벤트는 /var/log/audit/audit.log에 기록된다.

Systemd의 도입과 함께, 부팅과 그 이후의 로그들을 분석하는 새로운 커맨드들이 생겨났다.

부팅 프로세스

1. Systemd 우선순위 작업은 부팅 프로세스와 관련 정보를 제공하는 것을 관리하기 위한 것이다. 부팅 프로세스 간격을 알고 싶다면, 다음과 같이 입력한다.
[root@server2 ~]# systemd-analyze 
Startup finished in 403ms (kernel) + 2.098s (initrd) + 9.522s (userspace) = 12.023s
[root@server2 ~]# 
2. 부팅 프로세스 동안의 각각의 작업에 소요된 시간을 확인하려면, 다음과 같이 입력한다.
[root@server2 ~]# systemd-analyze blame
          5.542s kdump.service
          1.717s firewalld.service
          1.602s firstboot-graphical.service
          1.058s postfix.service
           975ms tuned.service
           799ms iprupdate.service
           786ms network.service
           632ms iprinit.service
           576ms accounts-daemon.service
           549ms avahi-daemon.service
...
[root@server2 ~]# 

노트: 이 부분에 대한 추가적인 정보를 Lennart Poettering의 블로그를 통해 얻을 수 있다.

저널 해석

추가적으로, Systemd는 시스템 이벤트 로그를 다룬다. syslog 데몬은 더이상 필수가 아니다. Journald 탄생의 비화는 Journald 입문에서 설명되어 있다.

1. Systemd 저널의 내용을 얻고 싶다면 다음과 같이 입력한다.
[root@server2 ~]# journalctl 
-- Logs begin at 화 2016-04-26 15:59:18 KST, end at 일 2016-05-08 15:36:49 KST. --
 4월 26 15:59:18 localhost.localdomain systemd-journal[335]: Runtime journal is using 8
 4월 26 15:59:18 localhost.localdomain systemd-journal[335]: Runtime journal is using 8
 4월 26 15:59:18 localhost.localdomain kernel: Initializing cgroup subsys cpuset
 4월 26 15:59:18 localhost.localdomain kernel: Initializing cgroup subsys cpu
 4월 26 15:59:18 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
 4월 26 15:59:18 localhost.localdomain kernel: Linux version 3.10.0-123.el7.x86_64 (bui
 4월 26 15:59:18 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0
 4월 26 15:59:18 localhost.localdomain kernel: Disabled fast string operations
 4월 26 15:59:18 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x0000000000000000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x000000000009e800-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x00000000000dc000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x0000000000100000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x000000007fee0000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x000000007feff000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x000000007ff00000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x00000000f0000000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x00000000fec00000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x00000000fee00000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: BIOS-e820: [mem 0x00000000fffe0000-0x000
 4월 26 15:59:18 localhost.localdomain kernel: NX (Execute Disable) protection: active
 4월 26 15:59:18 localhost.localdomain kernel: SMBIOS 2.4 present.
 4월 26 15:59:18 localhost.localdomain kernel: DMI: VMware, Inc. VMware Virtual Platfor
 4월 26 15:59:18 localhost.localdomain kernel: Hypervisor detected: VMware
 4월 26 15:59:18 localhost.localdomain kernel: e820: update [mem 0x00000000-0x00000fff]
 4월 26 15:59:18 localhost.localdomain kernel: e820: remove [mem 0x000a0000-0x000fffff]
 4월 26 15:59:18 localhost.localdomain kernel: No AGP bridge found
 4월 26 15:59:18 localhost.localdomain kernel: e820: last_pfn = 0x80000 max_arch_pfn = 
 4월 26 15:59:18 localhost.localdomain kernel: MTRR default type: uncachable
 4월 26 15:59:18 localhost.localdomain kernel: MTRR fixed ranges enabled:
 4월 26 15:59:18 localhost.localdomain kernel:   00000-9FFFF write-back
 4월 26 15:59:18 localhost.localdomain kernel:   A0000-BFFFF uncachable
 4월 26 15:59:18 localhost.localdomain kernel:   C0000-CFFFF write-protect
 4월 26 15:59:18 localhost.localdomain kernel:   D0000-EFFFF uncachable
 4월 26 15:59:18 localhost.localdomain kernel:   F0000-FFFFF write-protect
 4월 26 15:59:18 localhost.localdomain kernel: MTRR variable ranges enabled:
 4월 26 15:59:18 localhost.localdomain kernel:   0 base 00000000000 mask 3FF80000000 wr
 4월 26 15:59:18 localhost.localdomain kernel:   1 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   2 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   3 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   4 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   5 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   6 disabled
lines 1-44
...
[root@server2 ~]# 
2-1. 저널에서 crond 프로세스와 관련된 모든 이벤트를 얻고자 한다면, 다음과 같이 입력한다.
[root@server2 ~]# journalctl /sbin/crond
-- Logs begin at 화 2016-04-26 15:59:18 KST, end at 일 2016-05-08 15:38:29 KST. --
 4월 26 15:55:18 server2.example.com crond[1061]: (CRON) INFO (RANDOM_DELAY will be sca
 4월 26 15:55:20 server2.example.com crond[1061]: (CRON) INFO (running with inotify sup
lines 1-3/3 (END)
[root@server2 ~]# 

노트: /sbin/crond 대신에 which crond를 입력하여도 된다.

2-2. 다른 방법으로, 다음과 같이 입력해도 된다.
[root@server2 ~]# journalctl -u crond
-- Logs begin at 화 2016-04-26 15:59:18 KST, end at 일 2016-05-08 15:40:01 KST. --
 4월 26 15:55:18 server2.example.com systemd[1]: Starting Command Scheduler...
 4월 26 15:55:18 server2.example.com systemd[1]: Started Command Scheduler.
 4월 26 15:55:18 server2.example.com crond[1061]: (CRON) INFO (RANDOM_DELAY will be sca
 4월 26 15:55:20 server2.example.com crond[1061]: (CRON) INFO (running with inotify sup
lines 1-5/5 (END)
[root@server2 ~]# 
3. 최근 부팅 이후의 모든 이벤트를 얻고 싶다면, 다음과 같이 입력한다.
[root@server2 ~]# journalctl -b
-- Logs begin at 화 2016-04-26 15:59:18 KST, end at 일 2016-05-08 15:40:29 KST. --
 4월 26 15:59:18 localhost.localdomain systemd-journal[335]: Runtime journal is using 8
...
 4월 26 15:59:18 localhost.localdomain kernel: MTRR variable ranges enabled:
 4월 26 15:59:18 localhost.localdomain kernel:   0 base 00000000000 mask 3FF80000000 wr
 4월 26 15:59:18 localhost.localdomain kernel:   1 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   2 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   3 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   4 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   5 disabled
 4월 26 15:59:18 localhost.localdomain kernel:   6 disabled
lines 1-44
[root@server2 ~]# 
4. 오늘 발생한 이벤트를 저널에서 얻으려면, 다음과 같이 입력한다.
[root@server2 ~]# journalctl --since=today
-- Logs begin at 화 2016-04-26 15:59:18 KST, end at 일 2016-05-08 15:44:30 KST. --
 5월 08 00:00:01 server2.example.com systemd[1]: Created slice user-0.slice.
 5월 08 00:00:01 server2.example.com systemd[1]: Starting Session 427 of user root.
 5월 08 00:00:01 server2.example.com systemd[1]: Started Session 427 of user root.
 5월 08 00:00:01 server2.example.com CROND[69026]: (root) CMD (/usr/lib64/sa/sa1 1 1)
...
 5월 08 01:00:01 server2.example.com systemd[1]: Starting Session 434 of user root.
 5월 08 01:00:01 server2.example.com systemd[1]: Started Session 434 of user root.
 5월 08 01:00:01 server2.example.com systemd[1]: Starting Session 435 of user root.
 5월 08 01:00:01 server2.example.com systemd[1]: Started Session 435 of user root.
 5월 08 01:00:01 server2.example.com CROND[69659]: (root) CMD (/usr/sbin/raid-check)
 5월 08 01:00:01 server2.example.com CROND[69660]: (root) CMD (/usr/lib64/sa/sa1 1 1)
 5월 08 01:01:02 server2.example.com systemd[1]: Created slice user-0.slice.
 5월 08 01:01:02 server2.example.com systemd[1]: Starting Session 436 of user root.
lines 1-44
[root@server2 ~]#
5. syslog 에러 우선순위로 모든 이벤트를 얻으려면, 다음과 같이 입력한다.
[root@server2 ~]# journalctl -p err
-- Logs begin at 화 2016-04-26 15:59:18 KST, end at 일 2016-05-08 15:45:10 KST. --
 4월 26 15:59:18 localhost.localdomain systemd-fsck[590]: fsck failed with error code 8
 4월 26 15:59:19 localhost.localdomain kernel: sd 18:0:0:0: [sda] Assuming drive cache:
 4월 26 15:59:19 localhost.localdomain kernel: sd 18:0:0:0: [sda] Assuming drive cache:
 4월 26 15:59:19 localhost.localdomain kernel: sd 18:0:1:0: [sdb] Assuming drive cache:
 4월 26 15:59:19 localhost.localdomain kernel: sd 18:0:1:0: [sdb] Assuming drive cache:
 4월 26 15:59:19 localhost.localdomain kernel: sd 18:0:1:0: [sdb] Assuming drive cache:
 4월 26 15:59:19 localhost.localdomain kernel: sd 18:0:0:0: [sda] Assuming drive cache:
 4월 26 15:59:21 server2.example.com kernel: piix4_smbus 0000:00:07.3: Host SMBus contr
 4월 26 15:55:20 server2.example.com systemd[1]: Failed to start firstboot configuratio
 4월 26 15:55:21 server2.example.com libvirtd[1588]: libvirt version: 1.1.1, package: 2
 4월 26 15:55:21 server2.example.com libvirtd[1588]: Module /usr/lib64/libvirt/connecti
lines 1-12/12 (END)
[root@server2 ~]# 
6. 최근의 10개의 이벤트를 얻고, 새로운 이벤트를 기다리려면(tail -f /var/log/messages와 비슷한 개념), 다음과 같이 입력한다.
[root@server2 ~]# journalctl -f
-- Logs begin at 화 2016-04-26 15:59:18 KST. --
 5월 08 15:44:50 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:44:50 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:00 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:00 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:10 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:10 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:20 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:20 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:30 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:30 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:40 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:40 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:50 server2.example.com systemd[1]: httpd.service: Got notification m....
 5월 08 15:45:50 server2.example.com systemd[1]: httpd.service: Got notification m....
^C
[root@server2 ~]# 

추가 자료

at4am의 프로필 이미지

at4am

2016년 05월 08일

글쓴이의 더 많은 글 읽어보기