journalctl日志管理
systemd日志管理
systemd 提供了自己的日志系統(logging system),稱為 journal。使用 systemd 日志,無需額外安裝日志服務(syslog)。讀取日志的命令:
#讀取systemd日志 journalctl
默認情況下(當Storage= 在配置文件/etc/systemd/journald.conf中被設置為auto),日志記錄將被寫入/var/log/journal/;該目錄是 systemd 軟件包的一部分。若被刪除,systemd不會自動創建它,直到下次升級軟件包時重建該目錄。如果/var/log/journal/目錄缺失,systemd 會將日志記錄寫入/run/systemd/journal。這意味著,系統重啟后日志將丟失。
配置systemd journald日志持久存儲
參考: https://thinkit.co.jp/story/2014/12/18/5389?page=0%2C1
在CentOS7的journald設置中,日志文件存放在/run/log/journal目錄下。但是/run目錄是tmpfs文件系統掛載的,當OS重啟時,/run/log/journal目錄下存儲的日志文件會被刪除。
為了在操作系統重啟后也能保存日志,在journald配置文件/etc/systemd/journald.conf中指定“Storage=persistent”
#配置日志持久存儲 sed -i 's/^#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf #限制日志容量為128MB SystemMaxUse=128M
重啟systemd-journald服務使配置生效
#重啟systemd-journald服務 systemctl restart systemd-journald #檢查當前由journald管理的所有日志的容量 journalctl --disk-usage
在這里插入圖片描述
日志大小限制
可以修改配置文件指定最大限制。如限制日志最大 50MiB:
#修改全局配置文件 vim /etc/systemd/journald.conf #限制日志最大 50MiB SystemMaxUse=50M
還可以通過子配置而不是全局配置文件進行設置:
#修改子配置文件 vim /etc/systemd/journald.conf.d/00-journal-size.conf #限制日志最大 50MiB [Journal] SystemMaxUse=50M
配置rsyslogd和systemd journald
#創建 持久化保存日志的目錄 mkdir -p /var/log/journal mkdir -p /etc/systemd/journald.conf.d
配置內容如下:
cat > /etc/systemd/journald.conf.d/99-prophet.conf << EOF [Journal] #?持久化保存到磁盤 Storage=persistent #?壓縮歷史記錄 Compress=yes SyncIntervalSec=5m RateLimitInterval=30s RateLimitBurst=1000 #?最大占用空間 SystemMaxUse=10G #?單文件最大200M SystemMaxFileSize=200M #?日志保存時間2周 MaxRetentionSec=2week #?是否將日志轉發到syslog ForwardToSyslog=no EOF
重新加載配置或重啟systemd-journald服務
#重啟systemd-journald systemctl restart systemd-journald
無法發現/var/log/journal目錄
#將Storage參數與更改成Storage=persistent vim /etc/systemd/journald.conf #持久化方式存儲日志 Storage=persistent #重啟systemd-journald服務 systemctl restart systemd-journald
配置自動刪除日志
https://linux.cn/article-15526-1.html
建議使用/etc/systemd/journald.conf這個journald 配置文件來控制日志文件的清理過程。
systemd提供了許多參數來有效管理日志文件。
journald.conf 參數 | 描述 | 實例 |
SystemMaxUse | 指定日志在持久性存儲中可使用的最大磁盤空間 | SystemMaxUse=500M |
SystemKeepFree | 指定在將日志條目添加到持久性存儲時,日志應留出的空間量。 | SystemKeepFree=100M |
SystemMaxFileSize | 控制單個日志文件在被輪換之前在持久性存儲中可以增長到多大。 | SystemMaxFileSize=100M |
RuntimeMaxUse | 指定在易失性存儲中可以使用的最大磁盤空間(在 /run 文件系統內)。 | RuntimeMaxUse=100M |
RuntimeKeepFree | 指定將數據寫入易失性存儲(在 /run 文件系統內)時為其他用途預留的空間數量。 | RuntimeMaxUse=100M |
RuntimeMaxFileSize | 指定單個日志文件在被輪換之前在易失性存儲(在 /run 文件系統內)所能占用的空間量。 | RuntimeMaxFileSize=200M |
修改完配置文件,記得重啟systemd-journald服務
#重啟服務 systemctl restart systemd-journald
journalctl查看日志
journal讀音:(???rn?l,周no)
#顯示尾部的最新10行日志 journalctl -n #顯示尾部指定行數的日志 journalctl -n 20 #實時滾動顯示最新日志 journalctl -f
journalctl查看指定服務日志
參考:journalctl常見用法
#查看指定service日志 journalctl -u 服務名 ## 例如:docker起不來 journalctl -u docker ## -x 顯示完整的日志信息,包括堆棧跟蹤和其他相關信息 ## -e 自動滾動到最新的日志條目。 ## -u kubelet 指定了要查看的日志單元(unit) journalctl -xeu kubelet #將日志保存為文件 journalctl -xeu kubelet > kubelet.log #動態查看日志(持續輸出,類似于logs -f) journalctl -eu kubelet -f ## 實時滾動顯示某個Unit的最新日志 journalctl -u kubelet -f #只查看今天的kubelet日志 ## |less可以解決日志顯示不全的問題 journalctl -u kubelet --since today |less #合并顯示多個 Unit 的日志 journalctl -u nginx.service -u php-fpm.service --since today
根據日期查看
#只看今天的日志 journalctl --since today #查看指定時間的日志 journalctl --since="2021-10-02 2200" #查看20分鐘內的日志 journalctl --since "20 min ago" #顯示昨天記錄的所有系統日志 journalctl --since yesterday #顯示從2015年1月10日開始到2015年1月11日3:00的所有系統日志 ## --since和--until選項用于指定起始時間和結束時間 journalctl --since "2015-01-10" --until "2015-01-11 03:00" #顯示從早上9點到1小時前記錄的所有系統日志 journalctl --since 09:00 --until "1 hour ago"
查看指定用戶的日志
#查看指定用戶的日志 journalctl _UID=33 --since today
查看指定命令的日志
#查看指定命令的日志 journalctl /usr/bin/bash
在這里插入圖片描述
#查看systemd命令行的日志 journalctl /usr/lib/systemd/systemd
查看指定進程的日志
#查看指定進程的日志 journalctl _PID=1
查看引導記錄
#查看引導記錄 journalctl -b #查看系統本次啟動的日志 sudo journalctl -b sudo journalctl -b -0 #查看上一次啟動的日志(需更改設置) sudo journalctl -b -1
journalctl刪除日志
#手工觸發日志輪轉切割 systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service
輪轉日志文件
#刷新日志緩沖區并輪轉日志文件 ## --flush:刷新日志緩沖區,將緩沖區中的日志寫入磁盤 ## --rotate:輪轉日志文件,將當前日志文件重命名并創建個新的日志文件 journalctl --flush --rotate
刪除指定時間之前的日志條目
#刪除1s以前的日志條目 journalctl --vacuum-time=1s
--vacuum-time的數字后面提供以下后綴:
?s:秒
?m:分鐘
?h:小時
?days:天
?months:月
?weeks:周
?years:年
保留指定大小的最后日志文件
#保留最后 400MB 的文件 journalctl --vacuum-size=400M
--vacuum-size的數字后面提供以下后綴:
?K:KB
?M:MB
?G:GB
保留指定數量的最后日志文件
#保留最后2個日志文件 journalctl --vacuum-files=2
檢查日志文件的完整性
清理完日志文件后,檢查日志文件的完整性是比較明智的。
#檢查日志文件的完整性 journalctl --verify
該命令顯示了日志文件是否通過(PASS)、失敗(FAIL)。
鏈接:https://blog.csdn.net/omaidb/article/details/116019014
-
文件系統
+關注
關注
0文章
294瀏覽量
20322 -
命令
+關注
關注
5文章
733瀏覽量
22759 -
日志
+關注
關注
0文章
143瀏覽量
10840
原文標題:告別大海撈針!journalctl 精準定位系統問題!
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Linux日志分析工具logwatch的安裝及使用
如何使用journalctl來讀取、監控和分析Linux中的日志
linux日志管理之journalctl命令

日志篇:模組日志總體介紹

Linux高頻命令終極指南
Linux實時查看日志的四種命令詳解

評論