単位ごとのフィルタを使用すると、Journalctlがログメッセージを表示しないのはなぜですか?

単位ごとのフィルタを使用すると、Journalctlがログメッセージを表示しないのはなぜですか?

Ubuntu 16.04を使用していますが、Journalctlログを分析すると奇妙な動作が発生します。

フィルタリングされていない出力は次のとおりです(すべての関連フィールドを含むためにjson出力を使用しました)。

$ journalctl -o json-pretty --since "2018-01-11 12:00:00" --until "2018-01-11 12:00:05"
{
"__CURSOR" : "s=bac060082d1c447a972958f176cdcec7;i=1d2a2e;b=a948062f9f0b4091ae299c0523a99111;m=337bc483bf3;t=5627c5f8a3bae;x=7fd2518d6b70b9d",
"__REALTIME_TIMESTAMP" : "1515661201914798",
"__MONOTONIC_TIMESTAMP" : "3537916935155",
"_BOOT_ID" : "a948062f9f0b4091ae299c0523a99111",
"_TRANSPORT" : "stdout",
"PRIORITY" : "6",
"SYSLOG_FACILITY" : "3",
"SYSLOG_IDENTIFIER" : "start.sh",
"_PID" : "6474",
"_UID" : "1000",
"_GID" : "1000",
"_COMM" : "start.sh",
"_EXE" : "/bin/bash",
"_CMDLINE" : "/bin/bash /usr/local/malibu/start.sh",
"_CAP_EFFECTIVE" : "0",
"_SYSTEMD_CGROUP" : "/system.slice/malibu.service",
"_SYSTEMD_UNIT" : "malibu.service",
"_SYSTEMD_SLICE" : "system.slice",
"_MACHINE_ID" : "f03ff2ad269ea529c82323dd57f29b00",
"_HOSTNAME" : "terminal",
"MESSAGE" : "2018-01-11 12:00:01.914 DEBUG: malibu.devices.validator.ValidatorPortService$ - health check succeeded"
}

ご覧のとおり、出力にはログメッセージが含まれています。

ただし、-u malibu.serviceデバイス名()でフィルタを追加すると、次のメッセージが消えます。

$ journalctl -u malibu.service -o json-pretty --since "2018-01-11 12:00:00" --until "2018-01-11 12:00:05"

_SYSTEMD_UNITユニット名は、フィルタリングされていない出力のフィールドとまったく同じです。なぜJournalctlがフィルタリングされたバージョンに表示されないのですか?

編集する:わかると、以前のバージョンのsystemd(229)を使用していましたが、最新バージョンは236で、最新のJournalctlを使用して問題を解決しました。残念ながら、229は16.04 LTSベースで利用可能な最新のsystemdバージョンなので、この問題に対する合理的な回避策はありません(ユーザースペースで最新のsystemdをビルドし、新しく構築されたJournalctlバイナリを直接使用する以外)。

ベストアンサー1

わかると、以前のバージョンのsystemd(229)を使用していましたが、最新バージョンは236で、最新のJournalctlを使用して問題を解決しました。残念ながら、229は16.04 LTSベースで利用可能な最新のsystemdバージョンなので、この問題に対する合理的な回避策はありません(ユーザースペースで最新のsystemdをビルドし、新しく構築されたJournalctlバイナリを直接使用する以外)。

おすすめ記事