Linux Admin-로그 관리
systemd는 CentOS Linux에서 시스템 로깅이 관리되는 방식을 변경했습니다. 로그 항목을 정렬하고 필터링하는 기본 방법 으로 tail 또는 grep 과 같은 도구를 사용하는 것보다 시스템의 모든 데몬이 개별 위치에 로그를 배치하는 대신 ,journald 시스템 로그 분석에 단일 관리 지점을 가져 왔습니다.
systemd 로깅 의 기본 구성 요소 는 journal, jounralctl 및 journald.conf입니다.
journald 는 기본 로깅 데몬이며 journald.conf 를 편집하여 구성되는 반면 journalctl 은 journald에 의해 기록 된 이벤트를 분석하는 데 사용됩니다 .
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 는 기존 로그 분석 방법에 비해 뛰어난 유연성과 효율성을 제공합니다.