首頁 > 運維 > 安全 > systemd 日誌維護指南(附實例)

systemd 日誌維護指南(附實例)

王林
發布: 2023-06-09 21:46:33
轉載
803 人瀏覽過

systemd 日志维护指南(附实例)

如果你的Linux 發行版支援 systemd#,那麼從啟動時開始,它每秒鐘都會從系統的所有進程和應用程式中收集日誌。所有這些日誌事件都由 systemd 的 #journald 守護程式管理。 journald 收集所有的日誌(資訊、警告、錯誤等),並將其作為二進位資料儲存在磁碟檔案中。

由於日誌保留在磁碟中,而且每秒鐘都在收集,所以它佔用了巨大的磁碟空間;特別是對於舊的系統、伺服器。例如,在我的一個運行了一年左右的測試系統中,日誌檔案的大小是 GB 級的。

如果你管理多個系統、伺服器,建議一定要正確管理 journald 日誌,以便高效運作。讓我們來看看如何管理日誌檔案。

systemd 日誌維護

使用 systemd 的 journalctl 工具,你可以查詢這些日誌,對其進行各種操作。例如,查看不同啟動時的日誌文件,檢查特定進程或應用程式的最後警告和錯誤。如果你對這些不了解,我建議你在學習本指南之前先快速瀏覽一下此教學:使用 journalctl 查看和分析 systemd 日誌(附實例) 》。

物理日記的日誌檔在哪裡?

systemd 的 journald 守護程式在每次啟動時都會收集日誌。這意味著,它根據啟動情況對日誌檔案進行分類。

日誌以二進位形式儲存在路徑 /var/log/journal,資料夾為機器 ID。

比如說:

systemd 日志维护指南(附实例)

日誌檔案位置的截圖-1

systemd 日志维护指南(附实例)

日誌檔案位置的截圖-2

另外,請記住,根據系統配置,運行時日誌檔案被儲存在 /run/log/journal/ 。而這些在每次啟動時都會被刪除。

我可以手動刪除日誌檔嗎?

你可以,但不要這樣做。相反,請按照下面的說明,使用 journalctl 工具清除日誌檔案以釋放磁碟空間。

systemd 的日誌檔案佔用了多少磁碟空間?

打開一個終端,執行以下命令。

journalctl --disk-usage
登入後複製

這應該為你提供系統中的日誌檔案實際使用的數量。

systemd 日志维护指南(附实例)

journalctl 磁碟使用指令

如果你有一個圖形化的桌面環境,你可以開啟檔案管理器,瀏覽路徑/var/log/journal,並檢查屬性。

systemd 日誌清理過程

清理日誌檔案的有效方法應該是透過 #journald.conf 設定檔來完成。正常情況下,即使 journalctl 提供了刪除日誌檔案的工具,你也不應該手動刪除這些檔案。

让我们来看看如何 ​​手动​​ 删除它,然后我将解释 ​​journald.conf​​ 中的配置变化,这样你就不需要时不时地手动删除文件;相反,systemd 会根据你的配置自动处理它。

手动删除

首先,你必须 ​​flush​​ 和 ​​rotate​​ 日志文件。轮换rotate是将当前活动的日志文件归档,并立即开始创建一个新的日志文件继续记录日志。冲洗flush 开关要求日志守护进程将存储在 ​​/run/log/journal/​​ 中的所有日志数据冲入 ​​/var/log/journal/​​,如果持久性存储被启用的话。

然后,在 ​​flush​​ 和 ​​rotate​​ 之后,你需要用 ​​vacuum-size​​、​​vacuum-time​​ 和 ​​vacuum-files​​ 选项运行 ​​journalctl​​ 来强制 systemd 清除日志。

例 1:

sudo journalctl --flush --rotate
登入後複製
登入後複製
登入後複製
sudo journalctl --vacuum-time=1s
登入後複製

上面这组命令会删除所有存档的日志文件,直到最后一秒。这有效地清除了一切。因此,在运行该命令时要小心。

systemd 日志维护指南(附实例)

日志清理-例子

清理完毕后:

systemd 日志维护指南(附实例)

清理后--日志的占用空间

你也可以根据你的需要在 ​​--vacuum-time​​ 的数字后面提供以下后缀:

  • ​s​​:秒
  • ​m​​:分钟
  • ​h​​:小时
  • ​days​​:天
  • ​months​​:月
  • ​weeks​​:周
  • ​years​​:年

例 2:

sudo journalctl --flush --rotate
登入後複製
登入後複製
登入後複製
sudo journalctl --vacuum-size=400M
登入後複製

这将清除所有存档的日志文件,并保留最后 400MB 的文件。记住这个开关只适用于存档的日志文件,不适用于活动的日志文件。你也可以使用后缀,如下所示。

  • ​K​​:KB
  • ​M​​:MB
  • ​G​​:GB

例 3:

sudo journalctl --flush --rotate
登入後複製
登入後複製
登入後複製
sudo journalctl --vacuum-files=2
登入後複製

​vacuum-files​​ 选项会清除所有低于指定数量的日志文件。因此,在上面的例子中,只有最后两个日志文件被保留,其他的都被删除。同样,这只对存档的文件有效。

如果你愿意,你可以把两种选项结合起来,但我建议不要这样做。然而,如果同时使用两个选项,请确保先用 ​​--rotate​​ 选项运行。

使用配置文件自动删除

虽然上述方法很好,也很容易使用,但建议你使用 journald 配置文件来控制日志文件的清理过程,该文件存在于 ​​/etc/systemd/journald.conf​​。

systemd 为你提供了许多参数来有效管理日志文件。通过组合这些参数,你可以有效地限制日志文件所占用的磁盘空间。让我们来看看。

journald.conf 参数

描述

实例

​SystemMaxUse​

指定日志在持久性存储中可使用的最大磁盘空间

​SystemMaxUse=500M​

​SystemKeepFree​

指定在将日志条目添加到持久性存储时,日志应留出的空间量。

#SystemKeepFree=100M

SystemMaxFileSize

控制單一日誌檔案在被輪換之前在持久性儲存中可以增長到多大。

#SystemMaxFileSize=100M

# RuntimeMaxUse

指定在揮發性儲存中可以使用的最大磁碟空間(在 /run 檔案系統內) 。

#RuntimeMaxUse=100M

##RuntimeKeepFree

指定將資料寫入易失性儲存體(在 #/run# 檔案系統內)時為其他用途預留的空間數量。

#RuntimeMaxUse=100M

##RuntimeMaxFileSize

指定单个日志文件在被轮换之前在易失性存储(在 ​​/run​​ 文件系统内)所能占用的空间量。

​RuntimeMaxFileSize=200M​

如果你在运行中的系统的 ​​/etc/systemd/journald.conf​​ 文件中添加这些值,那么在更新文件后,你必须重新启动 journald。要重新启动,请使用以下命令。

sudo systemctl restart systemd-journald
登入後複製

核实日志文件

在你清理完文件后,检查日志文件的完整性是比较明智的。要做到这一点,请运行下面的命令。该命令显示了日志文件是否通过(​​PASS​​)、失败(​​FAIL​​)。

journalctl --verify
登入後複製

systemd 日志维护指南(附实例)

验证日志文件

总结

希望本指南能帮助你了解 systemd 日志管理流程的基本情况。通过这些,你可以通过限制空间、清除旧的日志文件来管理系统或服务器中的日志文件所使用的磁盘空间。这些只是指导性的命令,你可以通过多种方式组合这些命令来实现你的系统需求。

以上是systemd 日誌維護指南(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板