關(guān)于CentOS7日志文件及journalctl日志查看方法
日志文件說明
tail /var/log/messages //系統(tǒng)啟動(dòng)后的信息和錯(cuò)誤日志,是Red Hat Linux中最常用的日志之一 tail -f /var/log/secure //與安全相關(guān)的日志信息 tail /var/log/maillog //與郵件相關(guān)的日志信息 tail /var/log/cron //與定時(shí)任務(wù)相關(guān)的日志信息 tail /var/log/dmesg //和系統(tǒng)啟動(dòng)相關(guān) tail /var/log/audit/audit.log //系統(tǒng)審計(jì)日志 tail /var/log/yum.log //yum tail /var/log/xferlog //和訪問FTP服務(wù)器相關(guān) tail /var/log/wtmp //當(dāng)前登錄的用戶(命令:w) tail /var/log/btmp //最近登錄的用戶(命令last) tail /var/log/lastlog //所有用戶的登錄情況(命令lastlog ) tail /var/log/boot.log //守護(hù)進(jìn)程啟動(dòng)和停止相關(guān)的日志消息 tail /var/log/spooler //與UUCP和news設(shè)備相關(guān)的日志信息 #清理日志文件 cat /dev/null > /var/log/boot.log cat /dev/null > /var/log/btmp cat /dev/null > /var/log/cron cat /dev/null > /var/log/dmesg cat /dev/null > /var/log/firewalld cat /dev/null > /var/log/grubby cat /dev/null > /var/log/lastlog cat /dev/null > /var/log/mail.info cat /dev/null > /var/log/maillog cat /dev/null > /var/log/messages cat /dev/null > /var/log/secure cat /dev/null > /var/log/spooler cat /dev/null > /var/log/syslog cat /dev/null > /var/log/tallylog cat /dev/null > /var/log/wpa_supplicant.log cat /dev/null > /var/log/wtmp cat /dev/null > /var/log/yum.log
1、概述
日志管理工具journalctl是centos7上專有的日志管理工具,該工具是從message這個(gè)文件里讀取信息。
Systemd統(tǒng)一管理所有Unit的啟動(dòng)日志。帶來的好處就是,可以只用journalctl一個(gè)命令,查看所有日志(內(nèi)核日志和應(yīng)用日志)。
日志的配置文件是/etc/systemd/journald.conf。
2、查看所有日志
#(默認(rèn)情況下 ,只保存本次啟動(dòng)的日志) [root@CENTOS57 proc]# journalctl
3、查看內(nèi)核日志
(不顯示應(yīng)用日志) [root@CENTOS57 proc]# journalctl -k
4、查看系統(tǒng)本次啟動(dòng)的日志
journalctl -b #或者 journalctl -b -0 #或者 journalctl -b 0
5、查看上一次啟動(dòng)的日志
需要修改配置文件 /etc/systemd/journald.conf
[root@CENTOS57 proc]# journalctl -b -1
否則你會(huì)看到這樣的提示信息:
所以我們需要將systemd-journald服務(wù)配置為在重新啟動(dòng)后永久保留系統(tǒng)日志,只需要將Storage參數(shù)設(shè)置為persistent。
Storage參數(shù)設(shè)置值有:
- 1、
persistent
:將日志存儲(chǔ)在/var/log/journal目錄中,該目錄在重新啟動(dòng)后仍然存在。 - 2、
volatile
:將日記存儲(chǔ)在/run/log/journal目錄中,這不會(huì)導(dǎo)致系統(tǒng)重啟。 - 3、
auto
:rsyslog將確定使用持久性存儲(chǔ)(persistent)還是易失性存儲(chǔ)(volatile),如果存在/var/log/journal目錄,則rsyslog使用持久性存儲(chǔ),否則使用易失性存儲(chǔ)。
對(duì)于永久存儲(chǔ),請(qǐng)將其設(shè)置為:
[Journal] Storage=persistent
提交更改后,重新啟動(dòng)systemd-journald服務(wù)以使配置更改生效:
systemctl restart systemd-journald
確認(rèn)服務(wù)已重新啟動(dòng)并正在運(yùn)行:
systemctl status systemd-journald
要查看journald知道的引導(dǎo),請(qǐng)使用以下–list-boots選項(xiàng):
[root@centos7 ~]# journalctl --list-boots -1 00d066e11cbee123b5 Thu 2018-02-22 17:01:47 CST—Thu 2018-02-22 17:09:15 CST 0 63f75abbe94c3b5710 Thu 2018-02-22 17:09:10 CST—Thu 2018-02-22 17:10:19 CST
這將為每次啟動(dòng)顯示一行。第一列是啟動(dòng)的偏移量,可用于輕松引用啟動(dòng)journalctl。
如果您需要絕對(duì)參考,則啟動(dòng)ID位于第二列。您可以通過在結(jié)束時(shí)列出的兩個(gè)時(shí)間規(guī)范來指出引導(dǎo)會(huì)話引用的時(shí)間。
6、查看指定時(shí)間的日志
可以使用–since和–until選項(xiàng)過濾任意時(shí)間限制,這些限制分別顯示給定時(shí)間之前或之后的條目。
可以使用“yesterday”、“today”、“tomorrow”或者“now”等表達(dá)。
另外,我們也可以使用“-”或者“+”設(shè)定相對(duì)值,或者使用“ago”之前的表達(dá)。
#"顯示2017年10月30號(hào),18點(diǎn)10分30秒到當(dāng)前時(shí)間之間的所有日志信息" journalctl --since="2017-10-30 18:10:30" #獲取昨天的日志如下: journalctl --since yesterday #獲取某一個(gè)時(shí)間段到當(dāng)前時(shí)間的前一個(gè)小時(shí)的日志 journalctl --since 09:00 --until "1 hour ago" #獲取當(dāng)前時(shí)間的前20分鐘的日志 journalctl --since "20 min ago" #獲取某一天到某一個(gè)時(shí)間段的日志信息 journalctl --since "2017-01-10" --until "2017-01-11 03:00" #獲取15:15到現(xiàn)在的日志 journalctl --since"15:15" --until now
7、按服務(wù)過濾消息日志
#查看httpd服務(wù)的日志信息 [root@centos7 ~]# journalctl -u httpd.service -- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:30:01 CST. -- Feb 22 17:29:27 centos7.localdomain systemd[1]: Starting The Apache HTTP Server... Feb 22 17:29:27 centos7.localdomain httpd[1610]: AH00558: httpd: Could not reliably determine t Feb 22 17:29:28 centos7.localdomain systemd[1]: Started The Apache HTTP Server. #查看httpd服務(wù)當(dāng)天的運(yùn)行狀況 [root@centos7 ~]# journalctl -u httpd.service --since today
8、按進(jìn)程、用戶或者群組ID
#通過進(jìn)程ID實(shí)現(xiàn)查詢,需要指定_PID字段。 journalctl _PID=8088 #查看指定用戶的日志 journalctl _UID=33 --since today #查看指定用戶組的日志 journalctl _GID=20 --since today #顯示尾部的最新10行日志 journalctl -n #顯示尾部指定行數(shù)的日志 journalctl -n 20 #實(shí)時(shí)滾動(dòng)顯示最新日志 journalctl -f #查看指定服務(wù)的日志 journalctl /usr/lib/systemd/systemd #查看某個(gè)路徑的腳本的日志 journalctl /usr/bin/bash #實(shí)時(shí)滾動(dòng)顯示某個(gè)Unit的最新日志 journalctl -u nginx.service -f #合并顯示多個(gè)Unit的日志 journalctl -u nginx.service -u php-fpm.service --since today
9、按優(yōu)先級(jí)
使用journalctl配合-p選項(xiàng)顯示特定優(yōu)先級(jí)的信息,從而過濾掉優(yōu)先級(jí)較低的信息。
由最高到最低優(yōu)先級(jí):
- 0: emerg
- 1: alert
- 2: crit
- 3: err
- 4: warning
- 5: notice
- 6: info
- 7: debug
只顯示錯(cuò)誤級(jí)別或者更高的日志條目: [root@centos7 ~]# journalctl -p err -b -- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:40:02 CST. -- Feb 22 17:09:10 centos7.localdomain kernel: sd 0:0:0:0: [sda] Assuming drive cache: write throu Feb 22 17:09:12 centos7.localdomain kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not Feb 22 17:09:15 centos7.localdomain rsyslogd[593]: error during parsing file /etc/rsyslog.conf, Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: ALSA wo Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: Most li Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: We were Feb 22 17:09:48 centos7.localdomain spice-vdagent[1274]: Cannot access vdagent virtio channel / lines 1-8/8 (END) 或者[root@centos7 ~]# journalctl -p 3 -b
10、輸出格式
#journal能夠以多種格式進(jìn)行顯示,只須添加-o選項(xiàng)加格式說明即可。 #將journal條目輸出為JSON格式: [root@CENTOS57 proc]# journalctl -b -u httpd -o json { "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7db;b=b2d84e8bf26a462e9639384e1c0be5cf;m=eddf635;t=5b3a0187d82cb;x=90ce86876890254e", "__REALTIME_TIMESTAMP" : "160 { "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7f2;b=b2d84e8bf26a462e9639384e1c0be5cf;m=ee4987b;t=5b3a018842511;x=a984025285f8f913", "__REALTIME_TIMESTAMP" : "160 { "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7f3;b=b2d84e8bf26a462e9639384e1c0be5cf;m=ee5a191;t=5b3a018852e27;x=c0c8530ea7133468", "__REALTIME_TIMESTAMP" : "160 #使用json-pretty格式以更好地處理數(shù)據(jù)結(jié)構(gòu) [root@CENTOS57 proc]# journalctl -u httpd -o json-pretty { "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7db;b=b2d84e8bf26a462e9639384e1c0be5cf;m=eddf635;t=5b3a0187d82cb;x=90ce86876890254e", "__REALTIME_TIMESTAMP" : "1604875070571211", "__MONOTONIC_TIMESTAMP" : "249427509", "_BOOT_ID" : "b2d84e8bf26a462e9639384e1c0be5cf", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_MACHINE_ID" : "9e19325de3e04e56b869967ea97e8dae", "SYSLOG_FACILITY" : "3", "SYSLOG_IDENTIFIER" : "systemd", "_TRANSPORT" : "journal", "_PID" : "1", "_COMM" : "systemd", "_EXE" : "/usr/lib/systemd/systemd", "_CAP_EFFECTIVE" : "1fffffffff", "_SYSTEMD_CGROUP" : "/", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1417", "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading", "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5", "_HOSTNAME" : "CENTOS57", "_CMDLINE" : "/usr/lib/systemd/systemd --switched-root --system --deserialize 21", "UNIT" : "httpd.service", "MESSAGE" : "Starting The Apache HTTP Server...", "_SOURCE_REALTIME_TIMESTAMP" : "1604875070570852" } 以下為可用于顯示的各類格式: cat: 只顯示信息字段本身。 export: 適合傳輸或備份的二進(jìn)制格式。 json: 標(biāo)準(zhǔn)JSON,每行一個(gè)條目。 json-pretty: JSON格式,適合人類閱讀習(xí)慣。 json-sse: JSON格式,經(jīng)過打包以兼容server-sent事件。 short: 默認(rèn)syslog類輸出格式。 short-iso: 默認(rèn)格式,強(qiáng)調(diào)顯示ISO 8601掛鐘時(shí)間戳。 short-monotonic: 默認(rèn)格式,提供普通時(shí)間戳。 short-precise: 默認(rèn)格式,提供微秒級(jí)精度。 verbose: 顯示該條目的全部可用journal字段,包括通常被內(nèi)部隱藏的字段。
11、journal維護(hù)
#查看當(dāng)前日志占用磁盤的空間的總大小 [root@centos7 ~]# journalctl --disk-usage Archived and active journals take up 8.0M on disk. #指定日志文件最大空間 journalctl --vacuum-size=1G #指定日志文件保存多久 journalctl --vacuum-time=1years #1年 journalctl --vacuum-time=2d #2天 journalctl --vacuum-size=500M #500M #不分頁標(biāo)準(zhǔn)輸出,日志默認(rèn)分頁輸出--no-pager改為正常的標(biāo)準(zhǔn)輸出 journalctl --no-pager #分頁顯示,其中插入省略號(hào)以代表被移除的信息,使用–no-full選 journalctl --no-full #檢查日志是否如常?日志文件是否完好且未損壞? journalctl --verify
12、啟用日志消息的持久存儲(chǔ)
要啟用日志限制持久性配置,你可以修改journald的配置文件
/etc/systemd/journald.conf
將該Storage=選項(xiàng)設(shè)置為“persistent”以啟用持久記錄。
Storge選項(xiàng)為:
volatile
,則日記日志數(shù)據(jù)將僅存儲(chǔ)在內(nèi)存中,即/run/log/journal中。persistent
,則數(shù)據(jù)將最好存儲(chǔ)在磁盤上,即在/var/log/journal的下方。auto
,類似于“ persistent”,但是如果需要的話不會(huì)創(chuàng)建目錄/var/log/journal,因此它的存在控制著日志數(shù)據(jù)的去向。
[root@CENTOS57 proc]# vim /etc/systemd/journald.conf [Journal] Storage=persistent
默認(rèn)journalctl的日志都是保存到內(nèi)存中。要保存到文件,只需創(chuàng)建/var/log/journal目錄,重啟journald服務(wù)即可。
在CentOS 7上,您必須啟用日志消息的持久存儲(chǔ):
[root@CENTOS57 proc]# mkdir /var/log/journal [root@CENTOS57 proc]# systemd-tmpfiles --create --prefix /var/log/journal [root@CENTOS57 proc]# systemctl restart systemd-journald
否則,啟動(dòng)之間將不會(huì)保留日志日志消息。
journalctl相關(guān)配置
以下條目可用于限定journal體積的膨脹速度:
SystemMaxUse=:
指定journal所能使用的最高持久存儲(chǔ)容量。SystemKeepFree=:
指定journal在添加新條目時(shí)需要保留的剩余空間。SystemMaxFileSize=:
控制單一journal文件大小,符合要求方可被轉(zhuǎn)為持久存儲(chǔ)。RuntimeMaxUse=:
指定易失性存儲(chǔ)中的最大可用磁盤容量(/run文件系統(tǒng)之內(nèi))。RuntimeKeepFree=:
指定向易失性存儲(chǔ)內(nèi)寫入數(shù)據(jù)時(shí)為其它應(yīng)用保留的空間量(/run文件系統(tǒng)之內(nèi))。RuntimeMaxFileSize=:
指定單一journal文件可占用的最大易失性存儲(chǔ)容量(/run文件系統(tǒng)之內(nèi))。
通過設(shè)置上述值,大家可以控制journald對(duì)服務(wù)器空間的消耗及保留方式。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Rainbond云原生快捷部署生產(chǎn)可用的Gitlab步驟詳解
這篇文章主要為大家介紹了Rainbond云原生快捷部署生產(chǎn)可用的Gitlab步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04Rancher通過界面管理K8s平臺(tái)的圖文步驟詳解
這篇文章主要為大家介紹了Rancher通過界面管理K8s平臺(tái)通過詳細(xì)的圖文進(jìn)行步驟講解,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03IoT邊緣集群Kubernetes?Events告警通知實(shí)現(xiàn)示例
這篇文章主要為大家介紹了IoT邊緣集群Kubernetes?Events告警通知實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02kubernetes之statefulset搭建MySQL集群
這篇文章主要為大家介紹了kubernetes之statefulset搭建MySQL集群示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04centos搭建k8s環(huán)境詳細(xì)步驟及常用命令
kubernetes是google開源的容器集群管理系統(tǒng),提供應(yīng)用部署、維護(hù)、擴(kuò)展機(jī)制等功能,利用kubernetes能方便管理跨集群運(yùn)行容器化的應(yīng)用,這篇文章主要給大家介紹了關(guān)于centos搭建k8s環(huán)境詳細(xì)步驟及常用命令的相關(guān)資料,需要的朋友可以參考下2024-01-01Rainbond上部署API?Gateway?Kong及環(huán)境配置教程
這篇文章主要為大家介紹了Rainbond上部署API?Gateway?Kong及環(huán)境配置教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04k8s?Ingress實(shí)現(xiàn)流量路由規(guī)則控制的定義格式類型
這篇文章主要為大家介紹了k8s?Ingress?實(shí)現(xiàn)流量路由規(guī)則控制的定義格式及類型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04