Systemd日志管理服務:Journald以及重要配置選項


 

       Journald是systemd引入的用於收集和存儲日志數據的系統服務。它試圖使系統管理員可以在越來越多的日志消息中更輕松地找到有趣且相關的信息。為了實現此目標,日記中的主要更改之一是用為日志消息優化的特殊文件格式替換簡單的純文本日志文件。這種文件格式使系統管理員可以更有效地訪問相關消息。它還為單個系統帶來了數據庫驅動的集中日志記錄實現的某些功能。

 

概覽systemd-journald系統

Journald系統主要由三個主要的系統日記服務組件組成:

  • 守護程序:systemd日志服務由systemd-journald守護程序處理。
  • 配置文件:日志服務的配置在/etc/systemd/journald.conf里面設置。
  • 日志搜索程序:用於搜索日記日志文件的程序是journalctl。

       本文主要介紹systemd-journald日志相關的重要配置選項:主要包括systemd-journald logrotate和存儲類型選擇功能。

 

Journald支持的不同類型的存儲

       我們可以通過修改/etc/systemd/journald.conf文件控制存儲類型值,在[Journal]字符串下面可以修改存儲類型。

[Journal]
#Storage=auto

Storage支持的值為volatile,persistent,auto和none,默認是auto,所有值的含義如下

  • 如果為volatile,則日志數據將僅存儲在內存中,即在/run/log/journal目錄下(根據需要創建)。
  • 如果是persistent,則數據將會存儲在磁盤上,即/var/log/journal目錄下,並且在早期引導階段磁盤不可寫的時候把數據保存到/run/log/journal目錄下。
  • auto值意味着把日志數據存儲在/var/log/journal/目錄中。但是該目錄必須已經存在並且設置了適當的權限。如果不存在,則日記數據將存儲在易失性/run/log/journal/目錄中,並且在系統關閉時會刪除該數據。
  • none關閉所有存儲,所有接收到的日志數據將被丟棄。


對日志文件執行logrotate

       systemd-journald日志文件的logrotate將基於以下值執行:

#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month

       這些設置將會限制日志文件的大小上限。 以System開頭的選項用於限制磁盤使用量, 也就是 /var/log/journal 的使用量。 以Runtime開頭的選項用於限制內存使用量, 也就是 /run/log/journal 的使用量。

  • RuntimeMaxUse/SystemMaxUse= 控制日志最大可使用多少磁盤空間,然后對日志文件執行systemd-journald logrotate。默認為分配給節點的總物理內存的10%
  • RuntimeKeepFree/SystemKeepFree= 控制systemd-journald將為其他用途保留多少磁盤空間,之后將對日志文件執行systemd-journald logrotate。默認為分配給節點的總物理內存的15%
  • SystemMaxFileSize=/RuntimeMaxFileSize= 限制單個日志文件的最大體積, 到達此限制后日志文件將會自動滾動。 默認值是對應的 SystemMaxUse=/RuntimeMaxUse= 值的1/8 , 這也意味着日志滾動 默認保留7個歷史文件。
  • SystemMaxFiles/RuntimeMaxFiles= 限制最多允許同時存在多少個日志文件, 超出此限制后, 最老的日志文件將被刪除, 而當前的活動日志文件 則不受影響。 默認值為100個。
  • MaxRetentionSec=日志滾動的時間間隔。通常並不需要使用基於時間的日志滾動策略, 因為由SystemMaxFileSize/RuntimeMaxFileSize= 控制的基於文件大小的日志滾動策略已經可以確保日志文件的大小不會超標。 默認值是一個月, 設為零表示禁用基於時間的日志滾動策略。
  • MaxRetentionSec=日志文件的最大保留期限。 當日志文件的最后修改時間(mtime)與當前時間之差,大於此處設置的值時,日志文件將會被刪除。 通常並不需要使用基於時間的日志刪除策略。

如果我們檢查systemd-journald的狀態,那么我們可以看到它的報告日志已輪換:

$ systemctl status systemd-journald
● systemd-journald.service - Journal Service
   Loaded: loaded (/lib/systemd/system/systemd-journald.service; static; vendor preset: enabled)
   Active: active (running) since Sat 2019-11-23 08:34:43 CST; 3 months 14 days ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 404 (systemd-journal)
   Status: "Processing requests..."
    Tasks: 1 (limit: 9484)
   CGroup: /system.slice/systemd-journald.service
           └─404 /lib/systemd/systemd-journald

Nov 23 08:34:43 ubuntu systemd-journald[404]: Journal started
Nov 23 08:34:43 ubuntu systemd-journald[404]: Runtime journal (/run/log/journal/0bc1c3fec0b84c47ac1b0ea61a9db220) is 8.0M, max 79.5M, 71.5M free.
Nov 23 08:34:43 ubuntu systemd-journald[404]: Time spent on flushing to /var is 46.023ms for 1754 entries.
Nov 23 08:34:43 ubuntu systemd-journald[404]: System journal (/var/log/journal/0bc1c3fec0b84c47ac1b0ea61a9db220) is 504.0M, max 4.0G, 3.5G free.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM