Linux服務(wù)器管理員Journald初級(jí)指南
Journald是為L(zhǎng)inux服務(wù)器打造的新系統(tǒng)日志方式,它標(biāo)志著文本日志文件的終結(jié)?,F(xiàn)在日志信息寫入到二進(jìn)制文件,使用journalctl閱讀,要獲得這些信息,Linux管理員將需要一些實(shí)踐。
Red Hat Enterprise Linux 7與SUSE Linux Enterprise Server 12這些下一代的Linux發(fā)行版本使用systemd管理服務(wù)。journal是systemd的一個(gè)組件,由journald處理。它捕獲系統(tǒng)日志信息、內(nèi)核日志信息,以及來自原始RAM磁盤的信息,早期啟動(dòng)信息以及所有服務(wù)中寫入STDOUT和STDERR數(shù)據(jù)流的信息。Journald快速改變著服務(wù)器如何處理日志信息與管理員如何訪問的方式。
對(duì)日志文件說再見
在systemd與journald世界中沒有日志文件的位置。journald日志寫入二進(jìn)制文件,在紅帽系統(tǒng)上,位于/run/log/journal中。你不應(yīng)該也不能使用頁面打開文件。反之,使用journalctl查看內(nèi)容。該命令顯示所有登錄到服務(wù)器的信息(見表1)。
表1:journalctl輸出表默認(rèn)格式的樣子。
- Apr 04 09:48:59 localhost.localdomain chronyd[768]: Can't synchronise: no majority
- Apr 04 09:50:01 localhost.localdomain systemd[1]: Starting Session 3 of user root.
- Apr 04 09:50:01 localhost.localdomain systemd[1]: Started Session 3 of user root.
- Apr 04 09:50:01 localhost.localdomain CROND[3699]: (root) CMD (/usr/lib64/sa/sa1 1 1)
- Apr 04 09:50:03 localhost.localdomain chronyd[768]: Selected source 46.249.47.127
- Apr 04 09:50:03 localhost.localdomain chronyd[768]: System clock wrong by -2.417074 seconds, adjustment started
- Apr 04 09:50:36 localhost.localdomain pulseaudio[3163]: [alsa-sink] alsa-sink.c: ALSA woke us up to write new data to the device, but there
- Apr 04 09:50:36 localhost.localdomain pulseaudio[3163]: [alsa-sink] alsa-sink.c: Most likely this is a bug in the ALSA driver 'snd_ens1371'.
- Apr 04 09:50:36 localhost.localdomain pulseaudio[3163]: [alsa-sink] alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent s
- Apr 04 09:51:07 localhost.localdomain chronyd[768]: Selected source 81.171.44.131
- Apr 04 09:52:12 localhost.localdomain chronyd[768]: System clock wrong by 0.669116 seconds, adjustment started
- Apr 04 09:53:17 localhost.lo
無需擔(dān)心,journalctl有很多過濾選項(xiàng)。Journalctl -b過濾在啟動(dòng)時(shí)產(chǎn)生的信息。Journalctl --since=yesterday只顯示自從昨天登錄開始的信息。管理員可以從具體的天數(shù)范圍搜索信息:例如,journalctl --since=2014-03-15 --until="2014-03-17 23:59:59"。使用journalctl -u httpd since=00:00 --until=8:00查看昨晚登錄的httpd進(jìn)程。如果管理員掌握了高級(jí)的journald過濾選項(xiàng),分析日志文件就更加輕松。
某些情況下,journalctl顯示的默認(rèn)日志信息在細(xì)節(jié)上還不夠。要獲得更多信息,將輸出格式設(shè)置為verbose,使用命令journalctl -o verbose -n。
表2:通過顯示verbose日志信息,Linux管理員可以從日志文件獲取更多信息。
- Fri 2014-04-04 10:12:32.072521 CEST [s=a52ddd97575747a18c6378d388b2b9ff;i=955;b=bc03fb52eddb41
- b0bb4829ae19c1c286;m=8f1dd 5f2;t=4f633145a58d9;
- PRIORITY=6
- _UID=0
- _GID=0
- _BOOT_ID=bc03fb52eddb41b0bb4829ae19c1c286
- _MACHINE_ID=1fbfd90ac4fc49919fe1b63d6bcf9097
- _HOSTNAME=localhost.localdomain
- SYSLOG_FACILITY=3
- _TRANSPORT=syslog
- _SYSTEMD_CGROUP=/system.slice/network.service
- _SYSTEMD_UNIT=network.service
- SYSLOG_IDENTIFIER=dhclient
- _COMM=dhclient
- E=/usr/sbin/dhclient
- _CMDLINE=/sbin/dhclient -H localhost -1-q-lf/var/lib/dhclient/dhclient-0b5faf33-6df0-4f11-bbb9-659b5cd940e9-ens33.lease -pf /var/run/
- _CAP_EFFECTIVE=0000000000203402
- _SELINUX_CONTEXT=system_u:system_r:dhcpc_t:s0
- SYSLOG_PID=1760
- _PID=1760
- MESSAGE=bound to 192.168.4.232 -- renewal in 892 seconds.
- _SOURCE_REALTIME_TIMESTAMP=1396599152072521
Logrotate與遠(yuǎn)程日志
你所習(xí)慣的一些運(yùn)作方式發(fā)生了變化。關(guān)閉與歸檔日志文件的系統(tǒng)Logrotate變得日益巨大。在journald上,沒有必要循環(huán)日志文件。它構(gòu)建的目的在于監(jiān)控存儲(chǔ)卷上的剩余空間。如果卷快滿了,就刪除舊有記錄釋放空間。要為journald日志設(shè)置一個(gè)***尺寸,在/etc/systemd/journal.conf文件中修改SystemMaxUse參數(shù)。
遠(yuǎn)程日志又是另一回事了。如果你的數(shù)據(jù)中心有一個(gè)遠(yuǎn)程日志服務(wù)器,那就應(yīng)該保留。journald不是對(duì)集中日志服務(wù)器,如rsyslog或syslog-ng do的完全替代。Journald沒有將來自其他服務(wù)器或設(shè)備的日志文件進(jìn)行替代的選項(xiàng)。也沒有指定哪臺(tái)日志服務(wù)器的日志事件可以轉(zhuǎn)發(fā)的選項(xiàng)。如果你想要journald在其他地方存放日志信息,***做法是將信息轉(zhuǎn)發(fā)給[r]syslog[{d-ng}],在這里處理集中的日志。