Linux Admin-로그 관리

systemd는 CentOS Linux에서 시스템 로깅이 관리되는 방식을 변경했습니다. 로그 항목을 정렬하고 필터링하는 기본 방법 으로 tail 또는 grep 과 같은 도구를 사용하는 것보다 시스템의 모든 데몬이 개별 위치에 로그를 배치하는 대신 ,journald 시스템 로그 분석에 단일 관리 지점을 가져 왔습니다.

systemd 로깅 의 기본 구성 요소 는 journal, jounralctl 및 journald.conf입니다.

journald 는 기본 로깅 데몬이며 journald.conf 를 편집하여 구성되는 반면 journalctljournald에 의해 기록 된 이벤트를 분석하는 데 사용됩니다 .

journald에 의해 기록되는 이벤트 에는 커널 이벤트, 사용자 프로세스 및 데몬 서비스가 포함됩니다.

올바른 시스템 시간대 설정

journalctl을 사용하기 전에 시스템 시간이 올바른 시간으로 설정되어 있는지 확인해야합니다. 이를 위해 timedatectl 을 사용 합니다.

현재 시스템 시간을 확인합시다.

[root@centos rdc]# timedatectl status 
Local time: Mon 2017-03-20 00:14:49 MDT 
Universal time: Mon 2017-03-20 06:14:49 UTC 
RTC time: Mon 2017-03-20 06:14:49 
Time zone: America/Denver (MDT, -0600) 
NTP enabled: yes 
NTP synchronized: yes 
RTC in local TZ: no 
DST active: yes 
Last DST change: DST began at 
              Sun 2017-03-12 01:59:59 MST 
              Sun 2017-03-12 03:00:00 MDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
              Sun 2017-11-05 01:59:59 MDT 
              Sun 2017-11-05 01:00:00 MST
              
[root@centos rdc]#

현재 시스템은 현지 시간대에 맞습니다. 시스템이 아닌 경우 올바른 시간대를 설정하십시오. 설정을 변경 한 후 CentOS는 현재 시간대에서 시간대 오프셋을 자동으로 계산하여 시스템 시계를 즉시 조정합니다.

로하자 목록은 모든 시간대 timedatectl -

[root@centos rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

그것은 timedatectl list-timezones 의 경합 출력입니다 . 특정 지역 시간대를 찾으려면 grep 명령을 사용할 수 있습니다.

[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[root@centos rdc]#

CentOS에서 사용하는 레이블은 일반적으로 공백 대신 밑줄이있는 국가 / 지역입니다 (New_York 대 "New York").

이제 시간대를 설정해 보겠습니다.

[root@centos rdc]# timedatectl set-timezone "America/New_York"

[root@centos rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[root@centos rdc]#

시스템 시계가 자동으로 시간을 조정해야합니다.

journalctl을 사용하여 로그 분석

journalctl을 사용할 때 일반적인 명령 줄 스위치 -

스위치 동작
-케이 커널 메시지 만 나열
-유 특정 단위 (httpd, sshd 등) 별 목록
-비 레이블 오프셋을 부팅합니다.
-영형 출력 형식을 기록합니다.
-피 로그 유형 (이름 또는 번호)별로 필터링
-에프 Fieldname 또는 fieldnamevalue
--utc UTC 오프셋 시간
--이후 기간별로 필터링

부팅 로그 검사

먼저 CentOS Linux에서 부팅 로그를 검사하고 구성합니다. 가장 먼저 눈에 띄는 것은 CentOS는 기본적으로 재부팅 후에도 지속되는 부팅 로깅을 저장하지 않는다는 것입니다.

재부팅 인스턴스 별 부팅 로그를 확인하려면 다음 명령을 실행할 수 있습니다.

[root@centos rdc]# journalctl --list-boots 
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[root@centos rdc]#

시스템을 재부팅하면 다른 항목을 볼 수 있습니다.

[root@centos rdc]# journalctl --list-boots 
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
 
[root@centos rdc]#

이제 마지막 부팅 로깅 인스턴스를 살펴 보겠습니다.

root@centos rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

위는 마지막 부팅의 압축 된 출력입니다. 시간, 일, 주, 월 및 연도의 부트 로그를 다시 참조 할 수도 있습니다. 그러나 기본적으로 CentOS는 영구 부팅 로그를 저장하지 않습니다. 부팅 로그를 지속적으로 저장하려면 몇 가지 구성 변경이 필요합니다.

  • 부팅 로그를위한 중앙 저장소 지점 만들기
  • 새 로그 폴더에 적절한 권한 부여
  • 영구 로깅을위한 journald.conf 구성

영구 부팅 로그의 부팅 위치 구성

journald 가 영구 부팅 로그를 저장하려는 초기 위치 는 / var / log / journal 입니다. 이것은 기본적으로 존재하지 않으므로 만들어 보겠습니다.

[root@centos rdc]# mkdir /var/log/journal

이제 디렉토리에 journald 데몬 액세스 권한을 부여해 보겠습니다.

systemd-tmpfiles --create --prefix /var/log/journal

마지막으로 journald에 영구 부팅 로그를 저장해야한다고 알려 드리겠습니다 . 에서 정력 또는 좋아하는 텍스트 편집기를 열고 /etc/systemd/jounrald.conf " .

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

우리가 관련된 라인은 Storage = 입니다. 먼저 주석 #을 제거한 다음 다음으로 변경하십시오.Storage = persistent위에 묘사 된대로. CentOS 시스템을 저장하고 재부팅하고 journalctl list-boots를 실행할 때 여러 항목이 있어야합니다 .

Note− VPS 공급자와 같이 지속적으로 변경되는 시스템 ID로 인해 journald 가 영구 부팅 로그 저장에 실패 할 수 있습니다 . 이러한 시나리오에 대한 많은 해결 방법이 있습니다. 그럴듯한 VPS 해결 방법을 찾은 사람들의 신뢰할 수있는 조언을 따르는 것보다 CentOS 관리자 포럼에 게시 된 현재 수정 사항을 숙독하는 것이 가장 좋습니다.

특정 부트 로그를 검사하기 위해, 우리는 단순히 각각 사용하여 오프셋 얻을 필요가 journald --list 부츠를 하여 오프셋 -b 스위치를. 따라서 두 번째 부팅 로그를 확인하려면 다음을 사용합니다.

journalctl -b -2

부팅 로그 오프셋이 지정되지 않은 -b 의 기본값 은 항상 마지막 재부팅 후 현재 부팅 로그입니다.

로그 유형별로 로그 분석

저널링 된 이벤트 는 번호가 매겨지고 7 가지 유형으로 분류됩니다.

0 - emerg   :: System is unusable 
1 - alert   :: Action must be taken immediatly    
2 - crit    :: Action is advised to be taken immediatly 
3 - err     :: Error effecting functionality of application 
4 - warning :: Usually means a common issue that can affect security or usilbity 
5 - info    :: logged informtation for common operations 
6 - debug   :: usually disabled by default to troubleshoot functionality

따라서, 우리는 다음과 같은 명령을 통해 발행 할 수있는 모든 경고를보고 싶다면 journalctl을 -

[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD  ? APIC   06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD  $PCITBL$ 06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty 
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node 
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60 
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

위는 시스템에서 지난 4 일 동안의 모든 경고를 보여줍니다.

systemd를 사용하여 로그를보고 정독하는 새로운 방법은 익숙해지기 위해 연습과 연구가 거의 필요하지 않습니다. 그러나 다양한 출력 형식과 모든 패키징 된 데몬 로그를 보편적으로 만들기위한 특별한주의 사항을 수용 할 가치가 있습니다. journald 는 기존 로그 분석 방법에 비해 뛰어난 유연성과 효율성을 제공합니다.