Observability Pipelines でログを CloudPrem に送信する

This product is not supported for your selected Datadog site. ().
CloudPrem は Preview 版です

CloudPrem Preview に参加すると、新しいセルフ ホスト型のログ管理機能を利用できます。

Request Access

概要

Observability Pipelines は、Datadog Agent と CloudPrem の間に柔軟な中間レイヤーを提供します。これにより、ログが CloudPrem デプロイメントに届く前に、処理、変換、ルーティングを行えます。Datadog Agent から受け取ったログを CloudPrem に転送するよう、Observability Pipelines を次の手順で設定します。

  1. パイプラインを作成して設定する - Observability Pipelines UI で、パイプラインの構成 (ソース、プロセッサー、宛先) を定義します。ここで作成した定義を、後で Worker が使用します。
  2. Observability Pipelines Worker をデプロイする - パイプライン設定を使って Worker をインストールします。Agent が接続する前に、Worker が起動してログを待ち受けている必要があります。
  3. Datadog Agent を設定する - デプロイ済みの Worker にログを送るよう、Agent の送信先を設定します。この手順は最後に行ってください。Agent が接続するには、先に Worker のアドレスが利用可能になっている必要があるためです。

Observability Pipeline を作成して設定する

  1. Observability Pipelines に移動します。
  2. Log Volume Control テンプレート を選択します。
  3. 次のようにパイプラインを設定します。
    1. Datadog Agent ソース を選択します。
    2. パイプラインに初期設定で含まれているプロセッサーはすべて削除します。
    3. Datadog CloudPrem 宛先 を選択し、CloudPrem インスタンスにログを転送するようにします。設定欄は空のままにします。

Observability Pipelines をデプロイする

UI でパイプラインを作成したら、Observability Pipelines Worker をデプロイします。Worker は作成したパイプライン設定に従って動作し、Datadog Agent から送られるログを待ち受けます。

次の Helm コマンドは、Worker をインストールまたはアップグレードし、ログを受信して CloudPrem の indexer に転送するように設定します。
: 前の手順で作成したパイプラインの pipelineId が必要です。この ID によって、Worker とパイプライン設定が関連付けられます。

helm upgrade --install opw \
    -f values.yaml \
    --set datadog.apiKey=XXXXXXX \
    --set datadog.pipelineId=XXXXXXX \
    --set env[0].name=DD_OP_SOURCE_DATADOG_AGENT_ADDRESS,env[0].value='0.0.0.0:8282' \
    --set env[1].name=DD_OP_DESTINATION_CLOUDPREM_ENDPOINT_URL,env[1].value='http://<RELEASE_NAME>-indexer.<NAMESPACE_NAME>.svc.cluster.local:7280' \
    --set service.ports[0].name=dd-op-source-datadog-agent-address-port,service.ports[0].protocol=TCP,service.ports[0].port=8282,service.ports[0].targetPort=8282 \
    datadog/observability-pipelines-worker

1 分ほど待ってから、ログがパイプラインを通り、CloudPrem 宛先に届いていることを確認します。これで Worker が稼働し、ログを受け取れる状態になっていることがわかるので、次に Agent の設定へ進めます。

Datadog Agent の構成

Observability Pipelines Worker のデプロイと起動が完了したら、Datadog Agent がそこへログを送るように設定します。Agent は、Worker のサービス アドレスを使って接続します。詳しくは、Datadog Agent を Observability Pipelines Worker に接続する を参照してください。

Datadog Agent の設定を更新し、ログを Observability Pipelines Worker に送信するようにします。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    clusterName: your-cluster
    site: datadoghq.com
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key
    env:
      - name: DD_OBSERVABILITY_PIPELINES_WORKER_LOGS_ENABLED
        value: "true"
      - name: DD_OBSERVABILITY_PIPELINES_WORKER_LOGS_URL
        value: "http://observability-pipelines-worker:8282"

  features:
    logCollection:
      enabled: true
      containerCollectAll: true

確認

ログがパイプラインを通過していることを確認します。

# Observability Pipelines Worker の状態を確認する
kubectl get pods -l app=observability-pipelines-worker

# Worker のログを確認する
kubectl logs -l app=observability-pipelines-worker

# ログが CloudPrem に届いていることを確認する
kubectl exec -it <RELEASE_NAME>-searcher-0 -n <NAMESPACE_NAME> -- curl 'http://localhost:7280/api/v1/datadog/search?query='

参考資料