您好,登錄后才能下訂單哦!
作為最具吸引力的優(yōu)勢(shì), systemd 擁有強(qiáng)大的處理與系統(tǒng)日志記錄功能。在使用其它工具時(shí),日志往往被分散在整套系統(tǒng)當(dāng)中,由不同的守護(hù)進(jìn)程及進(jìn)程負(fù)責(zé)處理,這意味著我們很難跨越多種應(yīng)用程序?qū)ζ鋬?nèi)容進(jìn)行解讀。 |
相比之下,systemd嘗試提供一套集中化管理方案,從而統(tǒng)一打理全部?jī)?nèi)核及用戶級(jí)進(jìn)程的日志信息。這套系統(tǒng)能夠收集并管理日志內(nèi)容,而這也就是我們所熟知的journal。
Journal的實(shí)現(xiàn)歸功于journald守護(hù)進(jìn)程,其負(fù)責(zé)處理由內(nèi)核、initrd以及服務(wù)等產(chǎn)生的信息。在今天的教程中,我們將探討如何使用journalctl工具,并在其幫助下訪問(wèn)并操作journal內(nèi)部的數(shù)據(jù)。
Systemd journal的深層驅(qū)動(dòng)力在于以集中方式管理對(duì)來(lái)自任意來(lái)源的日志信息。由于大部分引導(dǎo)進(jìn)程都是由systemd進(jìn)程處理的,因此我們有理由以標(biāo)準(zhǔn)化方式實(shí)現(xiàn)日志的收集與訪問(wèn)。其中jornald守護(hù)進(jìn)程會(huì)收集全部來(lái)源的數(shù)據(jù)并將其以二進(jìn)制格式加以存儲(chǔ),從而輕松實(shí)現(xiàn)動(dòng)態(tài)操作。
這種作法能夠?qū)崿F(xiàn)多種收益。通過(guò)單一工具與數(shù)據(jù)交互,管理員能夠以動(dòng)態(tài)方式顯示日志數(shù)據(jù)。另外,我們也可以輕松查看歷史引導(dǎo)數(shù)據(jù),或者將日志條目同其它相關(guān)服務(wù)加以結(jié)合,從而 完成通信問(wèn)題調(diào)試。
將日志數(shù)據(jù)以二進(jìn)制形式存儲(chǔ)還意味著這些數(shù)據(jù)可根據(jù)需求隨時(shí)以二進(jìn)制輸出格式顯示。例如,大家可以通過(guò)標(biāo)準(zhǔn)syslog格式查看日志以實(shí)現(xiàn)日常管理,并在需要使用圖形服務(wù)時(shí)將各條目作為JSON對(duì)象交由圖形化服務(wù)處理。由于數(shù)據(jù)不會(huì)以純文本形式被寫入磁盤,因此我們無(wú)需進(jìn)行任何格式轉(zhuǎn)換。
大家可以將systemd journal與現(xiàn)有syslog方案配合使用,也可利用其替代現(xiàn)有syslog功能,具體取決于實(shí)際需求。盡管systemd journal足以涵蓋大部分管理工作需求,但其同時(shí)也能夠補(bǔ)充現(xiàn)有日志記錄機(jī)制。例如,大家可以建立一套集中式syslog服務(wù)器,從而對(duì)來(lái)自多臺(tái)服務(wù)器的數(shù)據(jù)進(jìn)行編譯;或者,我們也能夠利用systemd journal將來(lái)自多項(xiàng)服務(wù)的日志匯總在單一系統(tǒng)當(dāng)中。
使用二進(jìn)制journal的一大好處在于,它能夠以UTC或者本地時(shí)間顯示日志記錄。在默認(rèn)情況下,systemd會(huì)以本地時(shí)間顯示結(jié)果。
有鑒于此,在我們開始使用journal之前,首先要確保時(shí)區(qū)得到正確設(shè)置。Systemd套件中還提供一款timedatectl工具,專門用于解決此類問(wèn)題。
首先,利用list-timezones選項(xiàng)查看可用時(shí)區(qū):
timedatectl list-timezones
結(jié)果將列出系統(tǒng)上可用的全部時(shí)區(qū)。而后選擇與服務(wù)器所在地相匹配的項(xiàng)目,并使用set-timezone選項(xiàng)加以設(shè)置:
sudo timedatectl set-timezone zone
為了確保我們的設(shè)備使用正確的時(shí)間,可單獨(dú)使用timedatectl 命令 或者添加 status 選項(xiàng)。顯示結(jié)果如下:
timedatectl status Local time: Thu 2015-02-05 14:08:06 EST Universal time: Thu 2015-02-05 19:08:06 UTC RTC time: Thu 2015-02-05 19:08:06 Time zone: America/New_York (EST, -0500) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a
第一行所示應(yīng)為正確時(shí)間。
要查看journald守護(hù)進(jìn)程收集到的日志,可使用journalctl 命令 。
在單獨(dú)使用時(shí),系統(tǒng)中的每個(gè)journal條目都會(huì)被顯示在單一pager中供我們?yōu)g覽。條目時(shí)間越早,排列越靠前:
journalctl -- Logs begin at Tue 2015-02-03 21:48:52 UTC, end at Tue 2015-02-03 22:29:38 UTC. -- Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49. Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49. Feb 03 21:48:52 localhost.localdomain systemd-journald[139]: Received SIGTERM from PID 1 (systemd). Feb 03 21:48:52 localhost.localdomain kernel: audit: type=1404 audit(1423000132.274:2): enforcing=1 old_en Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules. Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules. Feb 03 21:48:52 localhost.localdomain kernel: input: ImExPS/2 Generic Explorer Mouse as /devices/platform/ Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 8 users, 102 roles, 4976 types, 294 bools, 1 sens, Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 83 classes, 104131 rules . . .
大家可以一頁(yè)頁(yè)進(jìn)行翻看,不過(guò)如果系統(tǒng)運(yùn)行時(shí)間較長(zhǎng),那么systemd中的日志也將成千上萬(wàn),這也證明了journal數(shù)據(jù)庫(kù)中可觀的數(shù)據(jù)量。
其格式與標(biāo)準(zhǔn)的syslog日志非常相似。然而,其收集數(shù)據(jù)的來(lái)源較syslog要豐富得多。其中包含有來(lái)自先前引導(dǎo)進(jìn)程、內(nèi)核、initrd以及應(yīng)用程序標(biāo)準(zhǔn)錯(cuò)誤與輸出的日志。這一切都可在journal中查看到。
大家可能還注意到,全部時(shí)間戳都以本地時(shí)間為準(zhǔn)。由于已經(jīng)為系統(tǒng)正確設(shè)置了本地時(shí)間,所以顯示的時(shí)間戳也都準(zhǔn)確無(wú)誤。
如果大家希望以UTC顯示時(shí)間戳,則可使用–utc標(biāo)記:
journalctl --utc
瀏覽大量數(shù)據(jù)當(dāng)然有其作用,但信息量過(guò)于龐大則會(huì)讓我們很難甚至根本不可能找到真正重要的內(nèi)容。因此,journalctl提供了極為關(guān)鍵的過(guò)濾選項(xiàng)。
其中最常用的就是-b標(biāo)記了,其將顯示全部最近一次重新引導(dǎo)后收集到的journal條目。
journalctl -b
通過(guò)這種方式,我們能夠識(shí)別并管理源自當(dāng)前環(huán)境下的信息。
如果不使用這項(xiàng)功能,而且顯示的引導(dǎo)數(shù)量超過(guò)一天,那么journalctl會(huì)在在系統(tǒng)關(guān)閉處插入說(shuō)明:
. . . -- Reboot -- . . .
這種方式能夠幫助我們有效區(qū)分來(lái)自不同引導(dǎo)會(huì)話的信息。
大家通常只需要查看當(dāng)前引導(dǎo)環(huán)境下的信息,但有時(shí)候查看過(guò)往引導(dǎo)記錄也非常必要。Journal能夠保存大量過(guò)往引導(dǎo)信息,從而允許journalctl輕松顯示相關(guān)內(nèi)容。
有些版本會(huì)在默認(rèn)情況下保存過(guò)往引導(dǎo)信息,而有些則默認(rèn)禁用這項(xiàng)功能。要啟用此功能,可以使用以下功能以創(chuàng)建用于存儲(chǔ)journal信息的目錄:
sudo mkdir -p /var/log/journal
或者直接編輯journal配置文件:
sudo nano /etc/systemd/journald.conf
在[Journal]區(qū)段下將Storage=選項(xiàng)設(shè)定為“persistent”以啟用持久記錄:
/etc/systemd/journald.conf . . . [Journal] Storage=persistent
當(dāng)啟用保存過(guò)往引導(dǎo)信息功能后,journalctl會(huì)提供額外命令以幫助大家將各引導(dǎo)記錄作為獨(dú)立單元操作。要查看Journald中已經(jīng)記錄的引導(dǎo)信息,可使用–list-boots選項(xiàng):
journalctl --list-boots -2 caf0524a1d394ce0bdbcff75b94444fe Tue 2015-02-03 21:48:52 UTC—Tue 2015-02-03 22:17:00 UTC -1 13883d180dc0420db0abcb5fa26d6198 Tue 2015-02-03 22:17:03 UTC—Tue 2015-02-03 22:19:08 UTC 0 bed718b17a73415fade0e4e7f4bea609 Tue 2015-02-03 22:19:12 UTC—Tue 2015-02-03 23:01:01 UTC
這里每次引導(dǎo)都將顯示為一行。第一列可用于在journalctl中引用該次引導(dǎo)。如果大家需要更為準(zhǔn)確的引用方式,則可在第二列中找到引導(dǎo)ID。末尾記錄的兩次時(shí)間為當(dāng)次引導(dǎo)的開始與結(jié)束時(shí)間。
要顯示這些引導(dǎo)中的具體信息,則可使用第一或者第二列提供的信息。
例如,要查看上次引導(dǎo)的journal記錄,則可使用-1相對(duì)指針配合-b標(biāo)記:
journalctl -b -1
另外,也可以使用引導(dǎo)ID:
journalctl -b caf0524a1d394ce0bdbcff75b94444fe
按照引導(dǎo)環(huán)境查看日志條目當(dāng)然非常重要,但我們往往還需要使用與系統(tǒng)引導(dǎo)無(wú)關(guān)的時(shí)間窗作為瀏覽基準(zhǔn)。這種情況在長(zhǎng)期運(yùn)行的服務(wù)器當(dāng)中較為常見(jiàn)。
大家可以利用–since與–until選項(xiàng)設(shè)定時(shí)間段,二者分別負(fù)責(zé)說(shuō)明給定時(shí)間之前與之后的記錄。
時(shí)間值可以多種格式輸出。對(duì)于絕對(duì)時(shí)間值,大家可以使用以下格式:
YYYY-MM-DD HH:MM:SS
例如,我們可以通過(guò)以下命令查看全部2015年1月10日下午5:15之后的條目:
journalctl --since "2015-01-10 17:15:00"
如果以上格式中的某些組成部分未進(jìn)行填寫,系統(tǒng)會(huì)直接進(jìn)行默認(rèn)填充。例如,如果日期部分未填寫,則會(huì)直接顯示當(dāng)前日期。如果時(shí)間部分未填寫,則缺省使用“00:00:00”(午夜)。第二字段亦可留空,默認(rèn)值為“00”:
journalctl --since "2015-01-10" --until "2015-01-11 03:00"
另外,journal還能夠理解部分相對(duì)值及命名簡(jiǎn)寫。例如,大家可以使用“yesterday”、“today”、“tomorrow”或者“now”等表達(dá)。另外,我們也可以使用“-”或者“+”設(shè)定相對(duì)值,或者使用“ago”之前的表達(dá)。
獲取昨天數(shù)據(jù)的命令如下:
journalctl –since yesterday
要獲得早9:00到一小時(shí)前這段時(shí)間內(nèi)的報(bào)告,可使用以下命令:
journalctl --since 09:00 --until "1 hour ago"
如大家所見(jiàn),時(shí)間窗的過(guò)濾機(jī)制非常靈活且易用。
現(xiàn)在我們要探討如何利用感興趣的服務(wù)或者組件類型實(shí)現(xiàn)過(guò)濾。Systemd journal同樣提供多種方式供大家選擇。
最常用的此類過(guò)濾方式當(dāng)數(shù)按單元過(guò)濾了。我們可以使用-u選項(xiàng)實(shí)現(xiàn)這一效果。
例如,要查看系統(tǒng)上全部來(lái)自 Nginx 單元的日志,可使用以下命令:
journalctl -u nginx.service
一般來(lái)講,我們可能需要同時(shí)按單元與時(shí)間進(jìn)行信息過(guò)濾。例如,檢查今天某項(xiàng)服務(wù)的運(yùn)行狀態(tài):
journalctl -u nginx.service --since today
我們還可以充分發(fā)揮journal查看多種單元信息的優(yōu)勢(shì)。例如,如果我們的Nginx進(jìn)程接入某個(gè) PHP-FPM 單元以處理動(dòng)態(tài)內(nèi)容,則可將這兩個(gè)單元合并并獲取按時(shí)間排序的查詢結(jié)果:
journalctl -u nginx.service -u php-fpm.service --since today
這種能力對(duì)于不同程序間交互及系統(tǒng)調(diào)試顯然非常重要。
由于某些服務(wù)當(dāng)中包含多個(gè)子進(jìn)程,因此如果我們希望通過(guò)進(jìn)程ID實(shí)現(xiàn)查詢,也可以使用相關(guān)過(guò)濾機(jī)制。
這里需要指定_PID字段。例如,如果PID為8088,則可輸入:
journalctl _PID=8088
有時(shí)候我們可能希望顯示全部來(lái)自特定用戶或者群組的日志條目,這就需要使用_UID或者_(dá)GID。例如,如果大家的Web服務(wù)器運(yùn)行在www-data用戶下,則可這樣找到該用戶ID:
id -u www-data 33
接下來(lái),我們可以使用該ID返回過(guò)濾后的journal結(jié)果:
journalctl _UID=33 --since today
Systemd journal擁有多種可實(shí)現(xiàn)過(guò)濾功能的字段。其中一些來(lái)自被記錄的進(jìn)程,有些則由journald用于自系統(tǒng)中收集特定時(shí)間段內(nèi)的日志。
之前提到的_PID屬于后一種。Journal會(huì)自動(dòng)記錄并檢索進(jìn)程PID,以備日后過(guò)濾之用。大家可以查看當(dāng)前全部可用journal字段:
man systemd.journal-fields
下面來(lái)看針對(duì)這些字段的過(guò)濾機(jī)制。-F選項(xiàng)可用于顯示特定journal字段內(nèi)的全部可用值。
例如,要查看systemd journal擁有條目的群組ID,可使用以下命令:
journalctl -F _GID 32 99 102 133 81 84 100 124 87
其將顯示全部journal已經(jīng)存儲(chǔ)至群組ID字段內(nèi)的值,并可用于未來(lái)的過(guò)濾需求。
我們也可以提供路徑位置以實(shí)現(xiàn)過(guò)濾。
如果該路徑指向某個(gè)可執(zhí)行文件,則journalctl會(huì)顯示與該可執(zhí)行文件相關(guān)的全部條目。例如,要找到與bash可執(zhí)行文件相關(guān)的條目:
journalctl /usr/bin/bash
一般來(lái)講,如果某個(gè)單元可用于該可執(zhí)行文件,那么此方法會(huì)更為明確且能夠提供更好的相關(guān)信息(與子進(jìn)程相關(guān)的條目等)。但有時(shí)候,這種作法則無(wú)法奏效。
內(nèi)核信息通常存在于dmesg輸出結(jié)果中,journal同樣可對(duì)其進(jìn)行檢索。要只顯示此類信息,可添加-k或者–dmesg標(biāo)記:
journalctl -k
默認(rèn)情況下,其會(huì)顯示當(dāng)前引導(dǎo)環(huán)境下的全部?jī)?nèi)核信息。大家也可以使用常規(guī)的引導(dǎo)選擇標(biāo)記對(duì)此前的引導(dǎo)記錄進(jìn)行查詢。例如,要查詢五次之前引導(dǎo)環(huán)境的信息:
journalctl -k -b -5
管理員們可能感興趣的另一種過(guò)濾機(jī)制為信息優(yōu)先級(jí)。盡管以更為詳盡的方式查看日志也很有必要,不過(guò)在理解現(xiàn)有信息時(shí),低優(yōu)先級(jí)日志往往會(huì)分散我們的注意力并導(dǎo)致理解混亂。
大家可以使用journalctl配合-p選項(xiàng)顯示特定優(yōu)先級(jí)的信息,從而過(guò)濾掉優(yōu)先級(jí)較低的信息。
例如,只顯示錯(cuò)誤級(jí)別或者更高的日志條目:
journalctl -p err -b
這將只顯示被標(biāo)記為錯(cuò)誤、嚴(yán)重、警告或者緊急級(jí)別的信息。Journal的這種實(shí)現(xiàn)方式與標(biāo)準(zhǔn)syslog信息在級(jí)別上是一致的。大家可以使用優(yōu)先級(jí)名稱或者其相關(guān)量化值。以下各數(shù)字為由最高到最低優(yōu)先級(jí):
0: emerg 1: alert 2: crit 3: err 4: warning 5: notice 6: info 7: debug以上為可在-p選項(xiàng)中使用的數(shù)字或者名稱。選定某一優(yōu)先級(jí)會(huì)顯示等級(jí)與之等同以及更高的信息。
到這里,過(guò)濾部分已經(jīng)介紹完畢。我們也可以使用多種方式對(duì)輸出結(jié)果進(jìn)行修改,從而調(diào)整journalctl的顯示內(nèi)容。
我們可以縮小或者擴(kuò)大輸出結(jié)果,從而調(diào)整journalctl的顯示方式。 在默認(rèn)情況下,journalctl會(huì)在pager內(nèi)顯示各條目,并通過(guò)右箭頭鍵訪問(wèn)其信息。 如果大家希望截?cái)噍敵鰞?nèi)容,向其中插入省略號(hào)以代表被移除的信息,則可使用–no-full選項(xiàng):
journalctl --no-full . . . Feb 04 20:54:13 journalme sshd[937]: Failed password for root from 83.234.207.60...h3 Feb 04 20:54:13 journalme sshd[937]: Connection closed by 83.234.207.60 [preauth] Feb 04 20:54:13 journalme sshd[937]: PAM 2 more authentication failures; logname...ot
大家也可以要求其顯示全部信息,無(wú)論其是否包含不可輸出的字符。具體方式為添加-a標(biāo)記:
journalctl -a
默認(rèn)情況下,journalctl會(huì)在pager內(nèi)顯示輸出結(jié)果以便于查閱。如果大家希望利用文本操作工具對(duì)數(shù)據(jù)進(jìn)行處理,則可能需要使用標(biāo)準(zhǔn)格式。在這種情況下,我們需要使用–no-pager選項(xiàng):
journalclt --no-pager
這樣相關(guān)結(jié)果即可根據(jù)需要被重新定向至磁盤上的文件或者處理工具當(dāng)中。
如果大家需要對(duì)journal條目進(jìn)行處理,則可能需要使用更易使用的格式以簡(jiǎn)化數(shù)據(jù)解析工作。幸運(yùn)的是,journal能夠以多種格式進(jìn)行顯示,只須添加-o選項(xiàng)加格式說(shuō)明即可。
例如,我們可以將journal條目輸出為JSON格式:
journalctl -b -u nginx -o json { "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading", "SYSLOG_IDENTIFIER" : "systemd", "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5", "_TRANSPORT" : "journal", "_PID" : "1", "_COMM" : "systemd", "_EXE" : "/usr/lib/systemd/systemd", "_CMDLINE" : "/usr/lib/systemd/systemd", "_SYSTEMD_CGROUP" : "/", "UNIT" : "nginx.service", "MESSAGE" : "Starting A high performance web server and a reverse proxy server...", "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973" } . . .
這種方式對(duì)于工具解析非常重要。大家也可以使用json-pretty格式以更好地處理數(shù)據(jù)結(jié)構(gòu):
journalctl -b -u nginx -o json-pretty { "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading", "SYSLOG_IDENTIFIER" : "systemd", "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5", "_TRANSPORT" : "journal", "_PID" : "1", "_COMM" : "systemd", "_EXE" : "/usr/lib/systemd/systemd", "_CMDLINE" : "/usr/lib/systemd/systemd", "_SYSTEMD_CGROUP" : "/", "UNIT" : "nginx.service", "MESSAGE" : "Starting A high performance web server and a reverse proxy server...", "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973" } . . .
以下為可用于顯示的各類格式:
cat
: 只顯示信息字段本身。
export
: 適合傳輸或備份的二進(jìn)制格式。
json
: 標(biāo)準(zhǔn)JSON,每行一個(gè)條目。
json-pretty
: JSON格式,適合人類閱讀習(xí)慣。
json-sse
: JSON格式,經(jīng)過(guò)打包以兼容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)部隱藏的字段。
這些選項(xiàng)允許大家以最適合需求的格式顯示journal條目。
Journalctl命令還能夠幫助管理員以類似于tail的方式監(jiān)控活動(dòng)或近期進(jìn)程。這項(xiàng)功能內(nèi)置于journalctl當(dāng)中,允許大家在無(wú)需借助其它工具的前提下實(shí)現(xiàn)訪問(wèn)。
要顯示特定數(shù)量的記錄,大家可以使用-n選項(xiàng),具體方式為tail -n。
默認(rèn)情況下,其會(huì)顯示最近十條記錄:
journalctl -n
大家可以在-n之后指定要查看的條目數(shù)量:
journalctl -n 20
要主動(dòng)追蹤當(dāng)前正在編寫的日志,大家可以使用-f標(biāo)記。方式同樣為tail -f:
journalctl -f
存儲(chǔ)這么多數(shù)據(jù)當(dāng)然會(huì)帶來(lái)巨大壓力,因此我們還需要了解如何清理部分陳舊日志以釋放存儲(chǔ)空間。
大家可以利用–disk-usage標(biāo)記查看journal的當(dāng)前磁盤使用量:
journalctl --disk-usage Journals take up 8.0M on disk.
如果大家打算對(duì)journal記錄進(jìn)行清理,則可使用兩種不同方式(適用于systemd 218及更高版本)。
如果使用–vacuum-size選項(xiàng),則可硬性指定日志的總體體積,意味著其會(huì)不斷刪除舊有記錄直到所占容量符合要求:
sudo journalctl --vacuum-size=1G
另一種方式則是使用–vacuum-time選項(xiàng)。任何早于這一時(shí)間點(diǎn)的條目都將被刪除。
例如,去年之后的條目才能保留:
sudo journalctl --vacuum-time=1years
大家可以配置自己的服務(wù)器以限定journal所能占用的最高容量。要實(shí)現(xiàn)這一點(diǎn),我們需要編輯/etc/systemd/journald.conf文件。
以下條目可用于限定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))。
通過(guò)設(shè)置上述值,大家可以控制journald對(duì)服務(wù)器空間的消耗及保留方式。
總結(jié)
到這里,systemd journal對(duì)系統(tǒng)及應(yīng)用數(shù)據(jù)的收集與管理機(jī)制就介紹完畢了。其出色的靈活性源自將廣泛的元數(shù)據(jù)自動(dòng)記錄至集中化日志之內(nèi)。另外,journalctl命令則顯著簡(jiǎn)化了journal的使用方式,從而讓更多管理員得以利用它完成面向不同應(yīng)用組件的分析與相關(guān)調(diào)試工作。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。