journald ログをプレーンテキスト ファイルに取得する

journald ログをプレーンテキスト ファイルに取得する

journaldのログをファイルに記録して、後でそれを取得してLogstashに送信できるようにしたいです。syslog-ngを実行してjournaldのクライアントにして、syslogファイルを取得することを考えました。CoreOSマシンでDockerコンテナを使用しているので、CoreOS dockerホストでコンテナとしてsyslog-ngを実行し、コンテナを実行するsystemdユニットを作成しようとしました。systemdでsyslogを取得するにはこのページを参照してくださいしかし、syslog-ng コンテナをホストの syslog ソケットから直接読み取ろうとすると (docker ボリュームでマウントすることによって)、「アドレスが既に使用されています」というエラーが表示されます。そのため、syslog-ng が稼働しているコンテナである journald ログがありますが、syslog-ng 内で journald ログを取得する方法がわかりません。

journald ログをファイルに取得するための代替ソリューションは、 を実行する systemd ユニットを実行することですjournalctl -f --json | tee -a /var/log/systemdが、このソリューションの信頼性については確信がありません。これは十分なソリューションでしょうか?

答え1

この質問は少し古いものであることは承知していますが、Google で最初に表示される結果の 1 つです。また、--json オプションは機能していないようで、man ページにも表示されません。

journalctl のマニュアル ページを確認したところ、--no-tail というオプションがあり、このオプションは日付を std に直接出力し、それを別のアプリケーションまたはファイルにパイプすることができます。

私の場合は、今日の ssh ログが欲しかったので、これを実行しました: journalctl -u sshd -S today --no-tail > main.log

技術的な説明: ユニットからの今日のすべてのログを取得しsshd>それをファイルに出力します。

あなたの場合、これがあなたが望んでいることだと私は信じています: journalctl --no-tail > test.log

これはArch Linuxでテストされました。

関連情報