Vector を使用して複数の Agent を集計する

Vector を使用して複数の Agent を集計する

概要

Datadog Agent は Vector と組み合わせて使用することができます。このシナリオでは、Agent が Vector に データを送信し、そこで複数のアップストリーム Agent からのデータ集計を行います。

Agents -> Vector -> Datadog

Vector はデータを Datadog および他の宛先に送信する前に処理することができるため、このシナリオは プロキシを使用する場合とは異なります。Vector の機能は次の通りです。

:

  • サポート対象となるのはログの集計のみです。
  • Vector は他のソースから直接ログを収集することができます。その際、サードパーティのログには適切なタグ付けがされていない場合があります。タグ、ソース、またはサービスの値を追加するには、Vector Remap Language を使用すると便利です。

コンフィギュレーション

Agent の構成

Vector にログを送信するには、Agent のコンフィギュレーションファイル、datadog.yaml を更新します。 サポート対象となるのはログのデータタイプのみです。datadog.yaml ファイルで以下の値を更新してください。

logs_config:
  logs_dd_url: "<VECTOR_HOST>:<VECTOR_PORT>"
  logs_no_ssl: true # TLS/SSL が Vector 側で有効化されていない場合
  use_http: true # Vector `datadog_logs` ソースは、HTTP(S) を介したイベントのみをサポートし、生の TCP はサポートしません
  # use_v2_api: false # v0.17.0 より前のバージョンの Vector を使用している場合は、この行のコメントを解除します

VECTOR_HOST は Vector を実行しているシステムのホスト名で、VECTOR_PORT は Vector datadog_logs ソースをリッスンしている TCP ポートです。

Vector のコンフィギュレーション

Datadog Agent からログを受信するには、Vector にdatadog_logs source を設定します。 Datadog にログを送信するには、Vector に少なくとも 1 つの datadog_logs sink を設定する必要があります。

Vector での処理中にログに適用できるコンフィギュレーションパラメーターや変換の一覧については、 公式の Vector ドキュメントを参照してください。

ここでは、Vector Remap Language を使ってすべてのログにタグを追加するコンフィギュレーションの例をご紹介します。

sources:
  datadog_agents:
    type: datadog_agent
    address: "[::]:8080" # 上記の <VECTOR_PORT> をここで使用するポート値に設定

transforms:
  add_tags:
    type: remap
    inputs:
      - datadog_agents
    source: |
      # ここでは、`!` の省略形を `string` 関数とともに使用しています。.ddtags が "string" でない場合はエラーになります。
      # .ddtags フィールドは、常に文字列であることが期待されています。
      .ddtags = string!(.ddtags) + ",sender:vector"      

sinks:
  to_datadog:
    type: datadog_logs
    inputs:
       - add_tags
    default_api_key: "${DATADOG_API_KEY_ENV_VAR}"
    encoding:
      codec: json

Kubernetes を使用する

公式の Datadog チャートを使用して、上記の Agent コンフィギュレーションagents.customAgentConfig 値に追加します。: agents.customAgentConfig を考慮するために、agent.useConfigMaptrue に設定する必要があります。

Datadog Helm チャートの詳細については、Kubernetes ドキュメントを参照してください。

Vector では、Datadog のログソースがあらかじめ設定されたデータ集計用公式チャートを提供しています。 Helm を使用した Vector のインストールについては 公式の Vector ドキュメントを参照してください。

Datadog にログを送信するには、Vector のコンフィギュレーションに datadog_logs シンクを追加する必要があります。Vector のチャートでは、customConfig フィールドを使用して、values.yaml ファイル内の任意の有効な Vector のコンフィギュレーションを保持することができます。datadog_logs を有効にするには、Vector のコンフィギュレーションで説明したものと同様の設定を直接 Vector のチャートのコンフィギュレーションに含めることができます。

Vector で Datadog ログを操作する

Vector に送信されたログを活用すれば、ログ変換を行う Vector Remap Language など、Vector の全機能を利用することができます。 Datadog Agent から送信されたログは、Vectorに到達すると期待される形式のスキーマで構造化されます。また Datadog API に直接ログを送信する場合は API ドキュメントに記載のスキーマの詳細説明を参照してください。

Vector が他のソースから収集したログは高度な機能を使用して強化することができます。VRL でこれらのログを調整し、 期待されるスキーマに従って関連するフィールドにデータを入力します。

その他の参考資料