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

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

Linux日志管理經(jīng)驗(yàn)總結(jié)
Linux高頻命令終極指南
Linux實(shí)時(shí)查看日志的四種命令詳解

評(píng)論