Ubuntu 18.04では、journaldとrsyslogの両方がインストールされています。どちらもログメッセージを収集して保存するという同じ目的を果たします。したがって、ここでは同じ作業を行う2つのプログラムがあります。
私が見つけたのは、journaldはjournalctl
コマンドで照会できる独自のジャーナルファイルにログメッセージを保存するだけであることです。読み取り可能なファイルは書き込まれません。また、journalは常にsystemdによって開始されたすべてのサービスからのログ出力を収集します。最終的にsystemdはinitスクリプトなどの古いスキームからでもすべてのプロセスを開始するため、これは常にすべてのサービスでなければなりません。
Rsyslogは、syslogが過去50年ほど機能していたように機能するいくつかのソケットを介して、ログメッセージも受信します。アプリケーションはそのソケットにメッセージを送信する必要があり、rsyslogがそれらを受信します。どのようにしてjournaldが実際に何かを受け取るのかわかりません。次に、rsyslogは、これらの受信したメッセージを、その構成に従って異なる読み取り可能なファイルに転送します。
Ubuntuでは両方がインストールされていますが、接続されていないようです。少なくともrsyslogは、journaldからログメッセージを「読み取る」ことができる「imjournal」モジュールをロードしません。 rsyslogが(アクティブに)何かを読み取る方法がわかりません。メッセージを(パッシブに)受信するだけだと思いました。しかし、それはとにかくそれを使用していません。
ファイル/ var/log/syslogには、journalctl
で示される内容とほぼ同じ内容が含まれていますが、Sudo
からの出力だけがファイルにありません。しかし、私はそれをすべて比較していません。
これはどのように機能するのでしょうか?誰がどこにログメッセージを送信し、誰がそれらを受信し、どこに転送されますか?両方の宛先が入力されている場合、すべてのアプリケーションがsyslogとジャーナルの両方にメッセージを個別に送信する必要がありますか?それらが相互接続されている場合、メッセージが重複しないのはなぜですか?それらは再び除外されますか?どの場所がより完全であり、全体像が必要な場合はどこを見ればよいですか?
Ubuntuの新しいバージョンでこれらのいずれかが変更された場合、来年は古いサーバーを20.04に切り替える予定なので、これにも興味があります。
編集:このトピックに関するその他のリソースを次に示します。
この情報はすべて私を少し混乱させます。ジャーナルは最初にシステムコールからすべてのsyslogデータを受信するようです(私の/ dev/logは/ run/systemd/journal/dev-logを指します)。これは、ジャーナルが存在する前に使用されていました(/ run/systemd/journal/syslog、systemdが見つかると暗黙的に使用される)。次に、rsyslogはすべての高度なログ処理(レガシー/ var/logファイルの書き込みを含む)を実行できます。その魔法が必要なければ、rsyslogを無効にするだけかもしれません。しかし、それについてはよくわかりません!
journald
の古いメッセージをクリーンアップする時期になると(私は毎月実行します)、メッセージが保存されているファイルを確認できます。
Deleted archived journal /var/log/journal/1ff17e6df1874fb3b2a75e669fa978f1/[email protected]~ (32.0M).
Deleted archived journal /var/log/journal/1ff17e6df1874fb3b2a75e669fa978f1/[email protected]~ (8.0M).
ご覧のとおり、ファイル名は非常に長く、不可解です。
syslog
メッセージは、より伝統的なファイル名形式で保持されます。
$ ll /var/log/syslog*
-rw-r----- 1 syslog adm 2161 Nov 29 04:47 /var/log/syslog
-rw-r----- 1 syslog adm 159700 Nov 29 04:32 /var/log/syslog.1
-rw-r----- 1 syslog adm 24466 Nov 28 04:27 /var/log/syslog.2.gz
-rw-r----- 1 syslog adm 23489 Nov 27 04:30 /var/log/syslog.3.gz
-rw-r----- 1 syslog adm 28087 Nov 26 04:28 /var/log/syslog.4.gz
-rw-r----- 1 syslog adm 28300 Nov 25 04:30 /var/log/syslog.5.gz
-rw-r----- 1 syslog adm 27445 Nov 24 05:36 /var/log/syslog.6.gz
-rw-r----- 1 syslog adm 27460 Nov 23 08:25 /var/log/syslog.7.gz
.gz
で終わるファイル名には、ディスク上のスペースを節約するためにデータが圧縮されています。
簡単なテストにより、2つのメッセージロギングシステムが正確に重複していないことがわかります。 logger
コマンドを使用してメッセージをシステムに入力し、それを検索してその前の5行を表示します。
$ logger $0 "ygoe to two logs?"
$ cat /var/log/syslog | grep ygoe -a5
Nov 27 20:53:35 alien upowerd[2032]: message repeated 3 times: [ (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:101A.017F/power_supply/hidpp_battery_63]
Nov 27 20:54:23 alien upowerd[2032]: (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:2010.0180/power_supply/hidpp_battery_64
Nov 27 20:59:25 alien wpa_supplicant[1591]: wlp60s0: WPA: Group rekeying completed with ae:20:2e:cc:94:50 [GTK=CCMP]
Nov 27 21:00:02 alien CRON[24890]: (root) CMD (/usr/bin/updatedb)
Nov 27 21:07:48 alien upowerd[2032]: (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:2010.0180/power_supply/hidpp_battery_64
Nov 27 21:08:22 alien rick: bash ygoe to two logs?
$ journalctl -xe | grep ygoe -a5
Nov 27 20:59:25 alien wpa_supplicant[1591]: wlp60s0: WPA: Group rekeying completed with ae:20:2e:cc:94:50 [GTK=CCMP]
Nov 27 21:00:01 alien CRON[24881]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov 27 21:00:01 alien CRON[24890]: (root) CMD (/usr/bin/updatedb)
Nov 27 21:00:04 alien CRON[24881]: pam_unix(cron:session): session closed for user root
Nov 27 21:07:48 alien upowerd[2032]: (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:2010.0180/power_supply/hidpp_battery_64
Nov 27 21:08:22 alien rick[8000]: bash ygoe to two logs?
ご覧のとおり、journalctl
はsyslog
よりも詳細を提供します。さらにjournalctl
:
数年前にjournald
とsyslog
を複製することについて開発者の間で議論がありましたが、私は今のところリンクを見つけることができませんでした。