概要
Systemd-journald は、ログデータを収集して保管するシステムサービスです。
さまざまなソースからのログ情報に基づいて、構造化およびインデックス化されたジャーナルを作成し、維持します。
セットアップ
インストール
journald チェックは Datadog Agent パッケージに含まれています。
サーバーに追加でインストールする必要はありません。
構成
ジャーナルファイルは、デフォルトでは、systemd-journal システムグループによって所有され、読み取られます。ジャーナルログの収集を開始するには、以下のようにします。
- ジャーナルを実行しているインスタンスに Agent をインストールします。
- 以下を実行して、
systemd-journal
グループに dd-agent
ユーザーを追加します。 usermod -a -G systemd-journal dd-agent
ホストで実行中の Agent に対してこのチェックを構成するには
ログの収集を開始するには、Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーの journald.d/conf.yaml
ファイルを編集します。
ログ収集
Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml
でこれを有効にする必要があります。
ログの収集を開始するには、次の構成ブロックを journald.d/conf.yaml
ファイルに追加します。
logs:
- type: journald
container_mode: true
source
および service
属性の値を埋めるために、Agent は SYSLOG_IDENTIFIER
、_SYSTEMD_UNIT
、_COMM
を収集し、最初に検出した空でない値に設定します。インテグレーションのパイプラインを活用するため、Datadog は systemd
サービスファイルまたは systemd
サービスオーバーライドファイルに SyslogIdentifier
パラメーターを直接設定することをおすすめしています。これらの場所はお使いのディストリビューションにより異なりますが、systemctl show -p FragmentPath <unit_name>
コマンドを使って systemd
サービスファイルの場所を検索することができます。
注: Agent 7.17 以降では、container_mode
が true
に設定されている場合、Docker コンテナに基づいてログのデフォルトの動作変更が行われます。ログの source
属性は、単に docker
ではなく、対応するコンテナの短いイメージ名に自動的に設定されます。
Agent を再起動します。
コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレートのガイドを参照して、次のパラメーターを適用してください。
ログ収集
Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Kubernetes ログ収集を参照してください。
パラメーター | 値 |
---|
<LOG_CONFIG> | {"source": "journald", "service": "<YOUR_APP_NAME>"} |
高度な機能
ジャーナルの場所の変更
Agent は、デフォルトで次の場所でジャーナルを探します。
/var/log/journal
/run/log/journal
ジャーナルがこれ以外の場所にある場合は、path
パラメーターに、対応するジャーナルのパスを追加します。
ジャーナルユニットの絞り込み
これらのパラメーターを使用することで、特定の_システムレベル_ユニットをフィルターにかけることができます。
include_units
: 指定されたすべてのシステムレベルユニットを含めます。exclude_units
: 指定されたすべてのシステムレベルユニットを除外します。
例:
logs:
- type: journald
path: /var/log/journal/
include_units:
- docker.service
- sshd.service
Datadog Agent バージョン 7.37.0
+ では、これらのパラメーターを使用して、_ユーザーレベル_ユニットをフィルターにかけることができます。
include_user_units
: 指定されたすべてのユーザーレベルユニットを含めます。exclude_user_units
: 指定されたすべてのユーザーレベルユニットを除外します。
注: exclude_units
または exclude_user_units
でワイルドカード *
を使用すると、特定の Journald ログを指定できます。ワイルドカード *
は include_units
では機能しません。デフォルトでは、システムにもユーザーにもユニットがなく、一致するものが定義されていない場合、すべてのジャーナルログが収集されます。
例:
logs:
# すべてのシステムレベルユニットログを収集します。
- type: journald
exclude_user_units:
- '*'
ジャーナルメッセージのフィルター
Datadog Agent バージョン 7.39.0
+ では、これらのパラメーターを持つキー値ペアを使用して、任意のメッセージをフィルターにかけることができます。
include_matches
: key=value
に一致するメッセージを含めます。exclude_matches
: key=value
に一致するメッセージを除外します。
例:
logs:
- type: journald
path: /var/log/journal/
include_matches:
- _TRANSPORT=kernel
同じジャーナルを複数回追跡する
異なるソースタグやサービスタグを持つユニットを報告したい場合、これらは別々の journald 構成に表示する必要があります。
これを行うには、ジャーナル構成を config_id
で一意に識別する必要があります (Agent 7.41.0
+ で利用可能)。
logs:
- type: journald
config_id: my-app1
source: my-app1
service: my-app1
include_units:
- my-app1.service
- type: journald
config_id: my-app2
source: my-app2
service: my-app2
include_units:
- my-app2.service
コンテナタグの収集
高度に動的なコンテナ環境において情報を見つける際にタグは重要です。Agent が journald ログからコンテナタグを収集できる理由はここにあります。
Agent がホストから実行されている場合、これは自動的に機能します。Datadog Agent のコンテナバージョンを使用している場合は、ジャーナルパスと次のファイルをマウントしてください。
/etc/machine-id
: これで、Agent は、ホストに格納されたジャーナルに確実に問い合わせることができます。
検証
Agent の status サブコマンドを実行し、ログ Agent セクションで journald
を探します。
収集データ
メトリクス
journald には、メトリクスは含まれません。
サービスチェック
journald には、サービスのチェック機能は含まれません。
イベント
journald には、イベントは含まれません。
トラブルシューティング
ご不明な点は、Datadog のサポートチームまでお問合せください。