Linux系統管理員應該知道的journalctl知識

在Systemd出現之前,Linux系統及各應用的日誌都是分別管理的,Systemd開始統一管理了所有Unit的啟動日誌,這樣帶來的好處就是可以只用一個 journalctl命令,查看所有內核和應用的日誌。

1. 基礎用法

1.1 查看所有日誌(默認顯示本次啟動的所有日誌)

[root@devops-101 ~]# journalctl

查看本次啟動的所有日誌也可以使用

[root@devops-101 ~]# journalctl -b

1.2 查看內核日誌

[root@devops-101 ~]# journalctl -k

1.3 查看指定時間的日誌

通過--since和--until選項,可以過濾任意時間限制,顯示指定條件之前、之後或之間的日誌。

[root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00"

查詢一個時間段範圍內的日誌。

[root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00" --until="2018-09-21 10:22:00"

1.4 根據不同的主題進行過濾篩選

根據服務篩選

[root@devops-101 ~]# journalctl -u kubelet.service
[root@devops-101 ~]# journalctl -u kubelet

根據進程ID查詢 如果進程使用了systemd託管日誌,則可以通過以下命令查找進程對應的日誌。

[root@devops-101 ~]# journalctl _PID=1

Systemd journal 有很多可以用來過濾的字段,可以通過 man systemd.journal-fields 查看所有可以用來過濾的字段。對於用來篩選的字段,可以使用-F參數來查看所有可以用來過濾的值,例如journalctl -F _PID。

按優先級 操作系統提供了從0 (emerg) 到 7 (debug) 一共7個級別的日誌,可以配合-p參數分別查看對應級別的日誌。

[root@devops-101 ~]# journalctl -p 5 -u kubelet

7個級別的含義為

  • 0: emerg
  • 1: alert
  • 2: crit
  • 3: err
  • 4: warning
  • 5: notice
  • 6: info
  • 7: debug

1.5 調整顯示輸出

默認情況,journal輸出進入分頁模式,用戶可以在終端上調整顯示的內容,如果要不需要分頁,需要加上--no-pager參數。

以Json格式輸出

[root@devops-101 ~]# journalctl -p 5 --no-pager -o json

通過-o參數,可以設置為json格式輸出,這對於其他接收json格式的日誌分析工具非常友好。

[root@devops-101 ~]# journalctl -p 5 --no-pager -o json-pretty

使用json-pretty則對於管理員查看日誌非常易讀。

支持的各種格式如下:

  • cat: 只顯示信息字段本身。
  • export: 適合傳輸或備份的二進制格式。
  • json: 標準JSON,每行一個條目。
  • json-pretty: JSON格式,適合人類閱讀習慣。
  • json-sse: JSON格式,經過打包以兼容server-sent事件。
  • short: 默認syslog類輸出格式。
  • short-iso: 默認格式,強調顯示ISO 8601掛鐘時間戳。
  • short-monotonic: 默認格式,提供普通時間戳。
  • short-precise: 默認格式,提供微秒級精度。
  • verbose: 顯示該條目的全部可用journal字段,包括通常被內部隱藏的字段。

1.6 活動日誌跟蹤

journalctl也支持類似tail的功能,如通過-n參數指定顯示最近的多少行,默認為10行,通過-f參數持續監控日誌輸出。

2. 維護

2.1 查看日誌佔用的磁盤空間

[root@devops-101 ~]# journalctl --disk-usage
Archived and active journals take up 8.0M on disk.

2.2 設置日誌佔用的空間

root@devops-101 ~]# journalctl --vacuum-size=500M
Vacuuming done, freed 0B of archived journals on disk.

2.3 設置日誌保存的時間

[root@devops-101 ~]# journalctl --vacuum-time=1month
Vacuuming done, freed 0B of archived journals on disk.

3. 配置

上面的一些維護動作,也可以通過配置參數設置,配置文件位於/etc/systemd/journald.conf。

  • Storage=persistent
  • Compress=yes
  • Seal=yes
  • SplitMode=uid
  • SyncIntervalSec=5m
  • RateLimitInterval=30s
  • RateLimitBurst=1000
  • SystemMaxUse=
  • SystemKeepFree=
  • SystemMaxFileSize=
  • RuntimeMaxUse=
  • RuntimeKeepFree=
  • RuntimeMaxFileSize=
  • MaxRetentionSec=
  • MaxFileSec=1month
  • ForwardToSyslog=yes
  • ForwardToKMsg=no
  • ForwardToConsole=no
  • ForwardToWall=yes
  • TTYPath=/dev/console
  • MaxLevelStore=debug
  • MaxLevelSyslog=debug
  • MaxLevelKMsg=notice
  • MaxLevelConsole=info
  • MaxLevelWall=emerg
Linux系統管理員應該知道的journalctl知識


分享到:


相關文章: