
- Linux管理員教程
- 主頁
- CentOS概述
- 基本的CentOS Linux命令
- 檔案/資料夾管理
- 使用者管理
- 配額管理
- Systemd服務啟動和停止
- 使用systemctl進行資源管理
- 使用cgroups進行資源管理
- 程序管理
- 防火牆設定
- 在CentOS Linux中配置PHP
- 在CentOS Linux中設定Python
- 在CentOS Linux中配置Ruby
- 在CentOS Linux中設定Perl
- 安裝和配置Open LDAP
- 建立SSL證書
- 安裝Apache Web伺服器CentOS 7
- 在CentOS 7上設定MySQL
- 設定Postfix MTA和IMAP/POP3
- 安裝匿名FTP
- 遠端管理
- CentOS中的流量監控
- 日誌管理
- 備份和恢復
- 系統更新
- Shell指令碼
- 軟體包管理
- 卷管理
- Linux管理員有用資源
- Linux管理員 - 快速指南
- Linux管理員 - 有用資源
- Linux管理員 - 討論
Linux管理員 - 日誌管理
Systemd改變了CentOS Linux系統日誌的管理方式。系統上的每個守護程序不再將日誌放置在各個位置,而是使用諸如tail或grep之類的工具作為排序和過濾日誌條目的主要方式,journald為分析系統日誌帶來了單點管理。
systemd日誌記錄背後的主要元件是:journal、journalctl和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時的常用命令列開關-
開關 | 操作 |
---|---|
-k | 僅列出核心訊息 |
-u | 按特定單元列出(httpd、sshd等…) |
-b | 引導標籤偏移量 |
-o | 記錄輸出格式 |
-p | 按日誌型別過濾(名稱或編號) |
-F | 欄位名或欄位名值 |
--utc | UTC偏移時間 |
--since | 按時間範圍過濾 |
檢查引導日誌
首先,我們將檢查和配置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 (builder@kbuilder.dev. 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它應該儲存永續性引導日誌。在vim或您喜歡的文字編輯器中,開啟/etc/systemd/jounrald.conf"。
# See journald.conf(5) for details. [Journal]=Storage=peristent
我們關注的行是Storage=。首先刪除註釋#,然後更改為Storage = persistent,如上所示。儲存並重啟CentOS系統,注意執行journalctl list-boots時應該有多個條目。
注意-來自VPS提供商的不斷變化的machine-id可能會導致journald無法儲存永續性引導日誌。對於這種情況,有很多解決方法。最好仔細閱讀CentOS管理員論壇上釋出的當前修復程式,而不是遵循那些找到可行VPS解決方法的人的可信建議。
要檢查特定的引導日誌,我們只需要使用journald --list-boots獲取每個偏移量,然後使用-b開關。因此,要檢查第二個引導日誌,我們將使用-
journalctl -b -2
未指定引導日誌偏移量的-b的預設值始終是上次重啟後的當前引導日誌。
按日誌型別分析日誌
來自journald的事件編號並分為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比傳統的日誌分析方法提供了更大的靈活性和效率。