Journalctlの外部でJournalctlログを分析するには?

Journalctlの外部でJournalctlログを分析するには?

サービスに特定のクエリ文字列パラメータを渡したユーザーの数など、いくつかの統計情報をsystemdログファイルから収集する必要があります。 Journalctlはこの情報を見ることができることを知っていますが、データを集約するためにGo(またはPython)でこの情報を表示する方法がわかりません。これについてライブラリを探していましたが、何も見つからないようで、ログファイルが実際にどこに保存されているのかわかりません。

ベストアンサー1

Journal APIを使用して、プログラムでsystemdログにアクセスできます。

あるいは、ホストで systemd-journal-gatewayd サービスを実行して、HTTP サーバーを介してログデータをエクスポートすることを検討することもできます。この場合、別の言語でHTTPクライアント実装を使用してログを直接照会できます。

ジャーナルAPI

公式Journal APIはsystemd自体の一部として提供され、Journalctlを実装しています。これはC APIです。

/var/log/journalこのAPIはsystemd-journaldまたは直接作成されたファイルにアクセスするため、これらの/run/log/journal場所から読み取るには適切な権限が必要です。これは通常、コードをルートとして実行する必要があることを意味します。

また、このAPIを使用するには、システムライブラリに接続して実行時に使用できるようにする必要があります。libsystemd-devこのパッケージをコンパイルしてリンクするには、Ubuntu 18.04システムにこのパッケージをインストールする必要があります。

sudo apt-get install libsystemd-dev

マンページを見つけることができますSDジャーナル(3)これはAPIの一般的な概要です。ジャーナルクエリのより具体的な例については、次を参照してください。sd_journal_next(3)(ここには完全な単純なプログラムを含む良い例が含まれています)sd_journal_add_match(3)取得できる一致を制限します(ジャーナルクエリを効果的に実装します)。また、次のものが必要です。sd_journal_get_data(3)sd_journal_open(3)ちょっと待ってください。このポインタがログに直接アクセスするのに役立つことを願っています。 )

Pythonバインディング

持つPythonバインディングJournal APIへのバインディングを含む公式のsystemdプロジェクトのsystemd。

これらのモジュールは、次のコマンドを使用してインストールできるUbuntu 18.04パッケージでも利用できます。

sudo apt-get install python3-systemd

...Python 3(推奨)の場合、またはまだPython 2を使用する必要がある場合は、次のものを使用できます。

sudo apt-get install python-systemd

systemd.journalReaderモジュールクラスのドキュメントを参照してください。コードドックストリング。このコースでは、興味のあるジャーナルへの読み取りアクセスを提供します。

バインディングの移動

systemdライブラリへのGoバインディングがあります。github.com/coreos/go-systemd基準寸法。

フィルタリングのための一致を含むログから読み取るためのsdjournalサブモジュール、特にタイプを見てください。JournalReaderこれに関する詳細情報を見つけることができます。ソースコードから

ジャーナルゲートウェイ

Journal APIを使用してログファイルに直接アクセスする別の方法は、HTTPサーバーを介してログファイルをエクスポートするサービスを実行することです。 Systemd は、以下を介してこれらのサービスを提供します。systemd-ジャーナル-gatewayd

このプログラムはUbuntu 18.04でsystemd-journal-remoteパッケージの一部として提供されるため、次のコマンドを使用してインストールして有効にできます。

sudo apt-get install systemd-journal-remote
sudo systemctl enable --now systemd-journal-gatewayd

これにより、ログを参照して照会するために使用できるポート19531からHTTPサーバーがエクスポートされます。

詳しくはマニュアルページをご覧ください。systemd-journal-gatewayd.service(8)、これにはカールを使用してアクセスする方法のいくつかの例が含まれています。独自のデフォルトのエクスポートデータを使用できるようにすることができます。ジャーナルのエクスポート形式、JSONまたはsyslogに似たプレーンテキスト。

systemd-journal-gatewaydパスを選択した場合は、HTTPサーバーを介したログデータのエクスポートのセキュリティ影響を理解する必要があります。少なくともlocalhostでのみポートを公開することを検討してください。

おすすめ記事