Journald是爲Linux服務器打造的新系統日誌方式,它標誌着文本日誌文件的終結。如今日誌信息寫入到二進制文件,使用journalctl閱讀,要得到這些信息,Linux管理員將須要一些實踐。服務器
Red Hat Enterprise Linux 7與SUSE Linux Enterprise Server 12這些下一代的Linux發行版本使用systemd管理服務。journal是systemd的一個組件,由journald處理。它捕獲系統日誌信息、內核日誌信息,以及來自原始RAM磁盤的信息,早期啓動信息以及全部服務中寫入STDOUT和STDERR數據流的信息。Journald快速改變着服務器如何處理日誌信息與管理員如何訪問的方式。dom
對日誌文件說再見this
在systemd與journald世界中沒有日誌文件的位置。journald日誌寫入二進制文件,在紅帽系統上,位於/run/log/journal中。你不該該也不能使用頁面打開文件。反之,使用journalctl查看內容。該命令顯示全部登陸到服務器的信息(見表1)。spa
表1:journalctl輸出表默認格式的樣子。3d
- 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
無需擔憂,journalctl有不少過濾選項。Journalctl -b過濾在啓動時產生的信息。Journalctl --since=yesterday只顯示自從昨天登陸開始的信息。管理員能夠從具體的天數範圍搜索信息:例如,journalctl --since=2014-03-15 --until="2014-03-17 23:59:59"。使用journalctl -u httpd since=00:00 --until=8:00查看昨晚登陸的httpd進程。若是管理員掌握了高級的journald過濾選項,分析日誌文件就更加輕鬆。日誌
某些狀況下,journalctl顯示的默認日誌信息在細節上還不夠。要得到更多信息,將輸出格式設置爲verbose,使用命令journalctl -o verbose -n。xml
表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與遠程日誌事件
你所習慣的一些運做方式發生了變化。關閉與歸檔日誌文件的系統Logrotate變得日益巨大。在journald上,沒有必要循環日誌文件。它構建的目的在於監控存儲捲上的剩餘空間。若是卷快滿了,就刪除舊有記錄釋放空間。要爲journald日誌設置一個最大尺寸,在/etc/systemd/journal.conf文件中修改SystemMaxUse參數。it
遠程日誌又是另外一回事了。若是你的數據中心有一個遠程日誌服務器,那就應該保留。journald不是對集中日誌服務器,如rsyslog或syslog-ng do的徹底替代。Journald沒有未來自其餘服務器或設備的日誌文件進行替代的選項。也沒有指定哪臺日誌服務器的日誌事件能夠轉發的選項。若是你想要journald在其餘地方存放日誌信息,最佳作法是將信息轉發給[r]syslog[{d-ng}],在這裏處理集中的日誌。