OpenTelemetry ツールを使用したスタンドアロン DDOT Collector のインストールはプレビュー版です。

概要

このガイドに従って、OpenTelemetry Operator または Helm チャートを使用して Datadog Distribution of OpenTelemetry (DDOT) Collector をデプロイします。

追加の OpenTelemetry コンポーネントが必要ですか?デフォルトのパッケージに含まれているもの以外のコンポーネントが必要な場合は、カスタム OpenTelemetry コンポーネントを使用するに従って、DDOT の機能を拡張してください。デフォルトで含まれているコンポーネントのリストについては、OpenTelemetry Collector コンポーネントを参照してください。

要件

このガイドの手順を実行するには、以下の準備が必要です。

Datadog アカウント:

  1. まだお持ちでない場合は、Datadog アカウントを作成してください。
  2. Datadog API キーを見つけるか、作成します。

ソフトウェア: 次のものをマシンにインストールして設定してください。

ネットワーク:

プロトコルトランスポートポート
gRPCTCP4317
HTTPTCP4318

Datadog Distribution of the OpenTelemetry Collector のインストール

インストール方法を選択する

以下のインストール方法のいずれかを使用します。

OpenTelemetry Operator をインストールする

OpenTelemetry Operator Helm チャートを使用して、クラスターに OpenTelemetry Operator をインストールできます。

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update
helm install opentelemetry-operator open-telemetry/opentelemetry-operator   \
     --set "manager.createRbacPermissions=true"                             \
     --set "manager.collectorImage.repository=datadog/ddot-collector"       \
     --set "manager.collectorImage.tag=7.83.1"

FED の場合は、タグを 7.83.1-fips に設定して、FIPS 準拠の DDOT イメージを使用してください。 FIPS コンプライアンスを参照してください。

OpenTelemetry Helm リポジトリを追加する

OpenTelemetry リポジトリを Helm リポジトリに追加するには:

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update

Datadog API キーを設定する

  1. Datadog API キーを取得します。
  2. 右側で選択されている DATADOG SITE (現在の値: ) が実際の Datadog サイトと一致していることを確認してください。
  3. API キーを Kubernetes シークレットとして保存します。
    kubectl create secret generic datadog-secret \
      --from-literal api-key=<DD_API_KEY>        \
      --from-literal site=
    
    Replace <DD_API_KEY> with your actual Datadog API key.

Configure the OTel Collector

OTel Operator をデプロイした後、Collector のデプロイをトリガーする OpenTelemetryCollector リソースを作成します。

  1. node-collector.yaml ファイルを使用して、OpenTelemetryCollector DaemonSet 構成を指定します。

node-collector.yaml

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: node-collector
spec:
  # Deploy 1 instance per node, that will collect telemetry from that node's pods
  mode: daemonset
  command: ['otel-agent', 'run'] # Will no longer be necessary from 7.82.0 onwards
  config:
    exporters:
      datadog:
        api:
          key: ${env:DD_API_KEY}
          site: ${env:DD_SITE}
        sending_queue:
          batch:
            flush_timeout: 10s
    service:
      telemetry:
        resource:
          k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
  env:
    - name: DD_API_KEY
      valueFrom:
        secretKeyRef:
          key: api-key
          name: datadog-apikey
    - name: DD_SITE
      valueFrom:
        secretKeyRef:
          key: site
          name: datadog-apikey
    - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
      value: datadog,pprof,zpages,prometheus,infraattributes
    - name: K8S_CLUSTER_NAME
      value: <CLUSTER_NAME>
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
    - name: DD_OTEL_STANDALONE
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
    - name: DD_OTELCOLLECTOR_ENABLED
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

<CLUSTER_NAME> は、実際のクラスターの名前に置き換えてください。

  1. 目的のすべてのシグナルについて、OTLP レシーバーと Datadog エクスポーターを追加します。アプリケーションポッドが同じノードで実行されている Collector インスタンスに到達できるように、hostPort を使用してノード上の OTLP ポートを公開してください。

node-collector.yaml

# [...]
spec:
  # [...]
  # Publish the OTLP ports on the node's network interface
  ports:
    - name: otlp-grpc
      port: 4317
      protocol: TCP
      hostPort: 4317
    - name: otlp-http
      port: 4318
      protocol: TCP
      hostPort: 4318
  config:
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    # [...]
    service:
      # [...]
      pipelines:
        logs:
          receivers: ['otlp']
          exporters: ['datadog']
        metrics:
          receivers: ['otlp']
          exporters: ['datadog']
        traces:
          receivers: ['otlp']
          exporters: ['datadog']
  1. (オプション) 追加の機能を有効にします。
これらの機能を有効にすると、追加料金が発生する場合があります。料金ページを確認し、進む前にカスタマーサクセスマネージャーに相談してください。

node-collector.yaml

spec:
  config:
    receivers:
      host_metrics:
        collection_interval: 15s
        scrapers:
          cpu: {}
          load: {}
          memory: {}
          network: {}
          disk: {}
      kubelet_stats:
        auth_type: serviceAccount
        collection_interval: 15s
        endpoint: ${env:K8S_NODE_NAME}:10250
        node: ${env:K8S_NODE_NAME}
        metric_groups:
          - pod
          - container
          - volume
    processors:
      infraattributes:
        cardinality: 2
      resource/add-cluster-name:
        attributes:
          - key: k8s.cluster.name
            value: ${env:K8S_CLUSTER_NAME}
            action: upsert
    connectors:
      datadog/connector:
        traces:
          compute_top_level_by_span_kind: true
          peer_tags_aggregation: true
          compute_stats_by_span_kind: true
    extensions:
      health_check:
        endpoint: "${env:K8S_POD_IP}:13133"
    # [...]
    service:
      # [...]
      extensions: ['health_check']
      pipelines:
        logs:
          # [...]
          processors: ['resource/add-cluster-name', 'infraattributes']
        metrics:
          receivers: ['host_metrics', 'otlp', 'kubelet_stats', 'datadog/connector']
          processors: ['resource/add-cluster-name', 'infraattributes']
          # [...]
        traces:
          # [...]
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog', 'datadog/connector']
  env:
    # [...]
    - name: K8S_POD_IP
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: status.podIP
    # K8S_NODE_NAME is added automatically by the operator
  1. (オプション) ノードのファイルシステムからコンテナログを収集します。
ログ収集を有効にすると、追加料金が発生する場合があります。料金ページを確認し、進む前にカスタマーサクセスマネージャーに相談してください。

filelog レシーバーは、ノードからコンテナログを読み取ります。Operator はホストパスを自動的にマウントしないため、ログディレクトリを読み取り専用ボリュームとして追加してください。

node-collector.yaml

spec:
  config:
    receivers:
      filelog:
        include:
          - /var/log/pods/*/*/*.log
        # Exclude the Collector's own logs to avoid a feedback loop
        exclude:
          - /var/log/pods/*_node-collector-collector-*_*/otc-container/*.log
        start_at: end
        include_file_path: true
        include_file_name: false
        retry_on_failure:
          enabled: true
        operators:
          - id: container-parser
            type: container
            max_log_size: 102400
    # [...]
    service:
      # [...]
      pipelines:
        logs:
          receivers: ['otlp', 'filelog']
          # [...]
  # Mount the node's log directories into the Collector pod (read-only)
  volumes:
    - name: varlogpods
      hostPath:
        path: /var/log/pods
    - name: varlibdockercontainers
      hostPath:
        path: /var/lib/docker/containers
  volumeMounts:
    - name: varlogpods
      mountPath: /var/log/pods
      readOnly: true
    - name: varlibdockercontainers
      mountPath: /var/lib/docker/containers
      readOnly: true

node-collector.yaml ファイルは次のようになります。

node-collector.yaml

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: node-collector
spec:
  # Deploy 1 instance per node, that will collect telemetry from that node's pods
  mode: daemonset
  command: ['otel-agent', 'run'] # Will no longer be necessary from 7.82.0 onwards
  # Publish the OTLP ports on the node's network interface
  ports:
    - name: otlp-grpc
      port: 4317
      protocol: TCP
      hostPort: 4317
    - name: otlp-http
      port: 4318
      protocol: TCP
      hostPort: 4318
  config:
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
      host_metrics:
        collection_interval: 15s
        scrapers:
          cpu: {}
          load: {}
          memory: {}
          network: {}
          disk: {}
      kubelet_stats:
        auth_type: serviceAccount
        collection_interval: 15s
        endpoint: ${env:K8S_NODE_NAME}:10250
        node: ${env:K8S_NODE_NAME}
        metric_groups:
          - pod
          - container
          - volume
      filelog:
        include:
          - /var/log/pods/*/*/*.log
        exclude:
          - /var/log/pods/*_node-collector-collector-*_*/otc-container/*.log
        start_at: end
        include_file_path: true
        include_file_name: false
        retry_on_failure:
          enabled: true
        operators:
          - id: container-parser
            type: container
            max_log_size: 102400
    processors:
      infraattributes:
        cardinality: 2
      resource/add-cluster-name:
        attributes:
          - key: k8s.cluster.name
            value: ${env:K8S_CLUSTER_NAME}
            action: upsert
    connectors:
      datadog/connector:
        traces:
          compute_top_level_by_span_kind: true
          peer_tags_aggregation: true
          compute_stats_by_span_kind: true
    exporters:
      datadog:
        api:
          key: ${env:DD_API_KEY}
          site: ${env:DD_SITE}
        sending_queue:
          batch:
            flush_timeout: 10s
    extensions:
      health_check:
        endpoint: "${env:K8S_POD_IP}:13133"
    service:
      telemetry:
        resource:
          k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
      extensions: ['health_check']
      pipelines:
        logs:
          receivers: ['otlp', 'filelog']
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog']
        metrics:
          receivers: ['host_metrics', 'otlp', 'kubelet_stats', 'datadog/connector']
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog']
        traces:
          receivers: ['otlp']
          processors: ['resource/add-cluster-name', 'infraattributes']
          exporters: ['datadog', 'datadog/connector']
  env:
    - name: DD_API_KEY
      valueFrom:
        secretKeyRef:
          key: api-key
          name: datadog-apikey
    - name: DD_SITE
      valueFrom:
        secretKeyRef:
          key: site
          name: datadog-apikey
    - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
      value: datadog,pprof,zpages,prometheus,infraattributes
    - name: K8S_CLUSTER_NAME
      value: <CLUSTER_NAME>
    - name: K8S_POD_IP
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: status.podIP
    # K8S_NODE_NAME is added automatically by the operator
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
    - name: DD_OTEL_STANDALONE
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
    - name: DD_OTELCOLLECTOR_ENABLED
      value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  # Mount the node's log directories for the filelog receiver (read-only)
  volumes:
    - name: varlogpods
      hostPath:
        path: /var/log/pods
    - name: varlibdockercontainers
      hostPath:
        path: /var/lib/docker/containers
  volumeMounts:
    - name: varlogpods
      mountPath: /var/log/pods
      readOnly: true
    - name: varlibdockercontainers
      mountPath: /var/lib/docker/containers
      readOnly: true

<CLUSTER_NAME> は、実際のクラスターの名前に置き換えてください。

YAML ファイルを使用して、Collector チャートの Helm チャートパラメーターを指定します。

  1. 空の node-collector-values.yaml ファイルを作成します。
touch node-collector-values.yaml
指定されていないパラメーターには、values.yaml のデフォルト値が使用されます。
  1. DaemonSet モードを選択し、DDOT をコレクターとして使用します。

node-collector-values.yaml

mode: daemonset
image:
  repository: datadog/ddot-collector
  tag: 7.83.1
ports:
  jaeger-compact:
    enabled: false
  jaeger-grpc:
    enabled: false
  jaeger-thrift:
    enabled: false
  zipkin:
    enabled: false
# Can be removed from 7.82.0 onwards
command:
  name: opt/datadog-agent/embedded/bin/otel-agent

FED の場合、 tag: 7.83.1-fips を設定して、FIPS 準拠の DDOT イメージを使用してください。FIPS コンプライアンスを参照してください。

Collector Helm チャートでは、デフォルトで各ノードの OTLP ポートを公開します (gRPC の場合はhostPort: 4317 、HTTP の場合は hostPort: 4318 )。これにより、アプリケーションポッドは同じノードで実行されている Collector インスタンスに到達できます。アプリケーションを構成するを参照してください。
  1. Datadog エクスポーターと API キーシークレットを構成します。

node-collector-values.yaml

config:
  exporters:
    datadog:
      api:
        key: ${env:DD_API_KEY}
        site: ${env:DD_SITE}
      sending_queue:
        batch:
          flush_timeout: 10s
extraEnvs:
  - name: DD_API_KEY
    valueFrom:
      secretKeyRef:
        key: api-key
        name: datadog-apikey
  - name: DD_SITE
    valueFrom:
      secretKeyRef:
        key: site
        name: datadog-apikey
  - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
    value: datadog,pprof,zpages,prometheus,infraattributes
  - name: K8S_CLUSTER_NAME
    value: <CLUSTER_NAME>
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
  - name: DD_OTEL_STANDALONE
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
  - name: DD_OTELCOLLECTOR_ENABLED
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

<CLUSTER_NAME> は、実際のクラスターの名前に置き換えてください。

  1. プリセットを有効にします。

node-collector-values.yaml

presets:
  hostMetrics:
    enabled: true
  kubeletMetrics:
    enabled: true
  logsCollection:
    enabled: true
    includeCollectorLogs: false
  1. 目的のシグナルに対して、OTLP レシーバーを含むパイプラインを定義します。

node-collector-values.yaml

config:
  # [...]
  receivers:
    otlp:
      protocols:
        grpc:
          endpoint: 0.0.0.0:4317
        http:
          endpoint: 0.0.0.0:4318
  service:
    pipelines:
      logs:
        receivers: ['otlp']
        exporters: ['datadog']
      metrics:
        receivers: ['otlp']
        exporters: ['datadog']
      traces:
        receivers: ['otlp']
        exporters: ['datadog']
    telemetry:
      resource:
        k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
  1. (オプション) 追加の Datadog 機能を有効にします。
これらの機能を有効にすると、追加料金が発生する場合があります。料金ページを確認し、進む前にカスタマーサクセスマネージャーに相談してください。

node-collector-values.yaml

config:
  # [...]
  processors:
    infraattributes:
      cardinality: 2
    resource/add-cluster-name:
      attributes:
        - key: k8s.cluster.name
          value: ${env:K8S_CLUSTER_NAME}
          action: upsert
  connectors:
    datadog/connector:
      traces:
        compute_top_level_by_span_kind: true
        peer_tags_aggregation: true
        compute_stats_by_span_kind: true
  service:
    pipelines:
      logs:
	    # [...]
        processors: ['resource/add-cluster-name', 'infraattributes']
      metrics:
        receivers: ['otlp', 'datadog/connector']
        processors: ['resource/add-cluster-name', 'infraattributes']
	    # [...]
      traces:
	    # [...]
        processors: ['resource/add-cluster-name', 'infraattributes']
        exporters: ['datadog', 'datadog/connector']

node-collector-values.yaml ファイルは次のようになります。

node-collector-values.yaml

mode: daemonset
# vvv To be removed from 7.82.0 onwards vvv
command:
  name: opt/datadog-agent/embedded/bin/otel-agent
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
image:
  repository: datadog/ddot-collector
  tag: 7.83.1
presets:
  hostMetrics: # Add an hostmetrics receiver to the metrics pipeline
    enabled: true
  kubeletMetrics: # Add a kubeletstats receiver to the metrics pipeline
    enabled: true
  logsCollection: # Add a filelog receiver to the logs pipeline
    enabled: true
    includeCollectorLogs: false
config:
  connectors:
    datadog/connector:
      traces:
        compute_top_level_by_span_kind: true
        peer_tags_aggregation: true
        compute_stats_by_span_kind: true
  exporters:
    datadog:
      api:
        key: ${env:DD_API_KEY}
        site: ${env:DD_SITE}
      sending_queue:
        batch:
          flush_timeout: 10s
  processors:
    infraattributes:
      cardinality: 2
    resource/add-cluster-name:
      attributes:
        - key: k8s.cluster.name
          value: ${env:K8S_CLUSTER_NAME}
          action: upsert
  receivers:
    otlp:
      protocols:
        grpc:
          endpoint: 0.0.0.0:4317
        http:
          endpoint: 0.0.0.0:4318
  service:
    extensions:
      - health_check
    pipelines:
      logs:
        receivers:
          - otlp
        processors:
          - resource/add-cluster-name
          - infraattributes
        exporters:
          - datadog
      metrics:
        receivers:
          - otlp
          - datadog/connector
        processors:
          - resource/add-cluster-name
          - infraattributes
        exporters:
          - datadog
      traces:
        receivers:
          - otlp
        processors:
          - resource/add-cluster-name
          - infraattributes
        exporters:
          - datadog
          - datadog/connector
    telemetry:
      resource:
        k8s.cluster.name: ${env:K8S_CLUSTER_NAME}
extraEnvs:
  - name: DD_API_KEY
    valueFrom:
      secretKeyRef:
        key: api-key
        name: datadog-apikey
  - name: DD_SITE
    valueFrom:
      secretKeyRef:
        key: site
        name: datadog-apikey
  - name: DD_OTELCOLLECTOR_CONVERTER_FEATURES
    value: datadog,pprof,zpages,prometheus,infraattributes
  - name: K8S_CLUSTER_NAME
    value: <CLUSTER_NAME>
    # vvv Will no longer be necessary from 7.83.0 onwards vvv
  - name: DD_OTEL_STANDALONE
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    # vvv Will no longer be necessary from 7.82.0 onwards vvv
  - name: DD_OTELCOLLECTOR_ENABLED
    value: 'true'
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ports:
  jaeger-compact:
    enabled: false
  jaeger-grpc:
    enabled: false
  jaeger-thrift:
    enabled: false
  zipkin:
    enabled: false

Collector をデプロイする

node-collector.yaml ファイルを適用して OpenTelemetryCollector リソースを作成します。Operator は Collector を DaemonSet としてデプロイし、ノードごとに 1 つのインスタンスを実行します。

kubectl apply -f node-collector.yaml

値ファイルを使用して OpenTelemetry Collector チャートをインストールします。

helm install node-collector open-telemetry/opentelemetry-collector -f node-collector-values.yaml

後で変更を適用するには、helm upgrade node-collector open-telemetry/opentelemetry-collector -f node-collector-values.yaml を実行します。

コアの Datadog Agent を DDOT と並行してインストールする

スタンドアロンの DDOT Collector と同じノードでコアの Datadog Agent を実行したい場合 (たとえば、DDOT で OTLP 取り込みを処理しながら、コアの Agent からインフラストラクチャーのメトリクス、APM、ログを収集する場合など)、Datadog Operator を使用して個別にインストールできます。

デフォルトでは、Datadog Operator Helm チャートは、Operator がインストールされている名前空間にある DatadogAgent リソースのみを監視します (watchNamespaces: [])。Operator とは別の名前空間に DatadogAgent リソースがある場合は (たとえば、そのリソースを OpenTelemetryCollector リソースの名前空間から分離しておく場合など)、 watchNamespaces を設定して、 DatadogAgent リソースが作成される名前空間を含めてください。

helm upgrade datadog-operator datadog/datadog-operator \
  -n <OPERATOR_NAMESPACE> \
  --reuse-values \
  --set 'watchNamespaces[0]=<DATADOG_AGENT_NAMESPACE>'

Operator が DatadogAgent リソースが作成される名前空間を監視していない場合、そのリソースは調整に失敗しますが、エラーも Kubernetes イベントも発生せず、問題を示すステータスの更新も行われません。

Datadog にテレメトリを送信する

テレメトリデータを Datadog に送信するには:

  1. アプリケーションをインスツルメントする
  2. アプリケーションを構成する
  3. 可観測性データを相関付けする
  4. アプリケーションを実行する

アプリケーションをインスツルメントする

OpenTelemetry API を使用してアプリケーションをインスツルメントします。

例として、すでにインスツルメント済みのカレンダーサンプルアプリケーションを使用できます。次のコードは、OpenTelemetry のアノテーションと API を使用して CalendarService.getDate() メソッドをインスツルメントします。

CalendarService.java

@WithSpan(kind = SpanKind.CLIENT)
public String getDate() {
    Span span = Span.current();
    span.setAttribute("peer.service", "random-date-service");
    ...
}

アプリケーションを構成する

アプリケーションコンテナは、同じノード上で実行されている DDOT Collector にデータを送信する必要があります。Collector は hostPort を使用してノード上の OTLP ポートを公開するため、アプリケーションはノードの IP アドレス (status.hostIP) を介してローカルの Collector に到達できます。

OTEL_EXPORTER_OTLP_ENDPOINT環境変数がまだ設定されていない場合は、アプリケーションの Deployment マニフェストファイルに追加してください。

deployment.yaml

env:
  ...
  - name: HOST_IP
    valueFrom:
     fieldRef:
        fieldPath: status.hostIP
  - name: OTLP_GRPC_PORT
    value: "4317"
  - name: OTEL_EXPORTER_OTLP_ENDPOINT
    value: 'http://$(HOST_IP):$(OTLP_GRPC_PORT)'
  - name: OTEL_EXPORTER_OTLP_PROTOCOL
    value: 'grpc'
   

可観測性データを相関付けする

統合サービスタグ付けにより、Datadog 内の可観測性データ同士が結び付けられ、一貫性のあるタグを使用してメトリクス、トレース、ログを横断的に確認することができます。

コンテナ化された環境では、OpenTelemetry Resource Attributes 環境変数を使用して env、service、および version を設定します。DDOT Collector はこのタグ付け構成を検出し、コンテナから収集したデータに適用します。

アプリケーションのデプロイメントマニフェストに次の環境変数を追加します。

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: <SERVICE>
spec:
  template:
    spec:
      containers:
      - name: <SERVICE>
        env:
          - name: OTEL_SERVICE_NAME
            value: "<SERVICE>"
          - name: OTEL_RESOURCE_ATTRIBUTES
            value: "service.version=<VERSION>,deployment.environment.name=<ENV>"

アプリケーションを実行する

デプロイメントマニフェストで行った変更を適用するために、アプリケーションを再デプロイします。更新された構成が有効になると、メトリクス、トレース、ログに対する統合サービスタグ付けが完全に有効になります。

Datadog で可観測性データを確認する

Datadog を使用して、アプリケーションの可観測性データを確認します。

Fleet Automation

Collector の構成を確認します。

[Fleet Automation] ページから Collector の構成を確認します。

Live Container Monitoring

Live Container Monitoring 機能を使用して、コンテナのヘルスを監視します。

[Containers] ページからコンテナのヘルスを監視します。

インフラストラクチャーノードのヘルス

ランタイムおよびインフラストラクチャーメトリクスを表示して、ノードのパフォーマンスを視覚化、監視、測定します。

[Host List] からランタイムおよびインフラストラクチャーメトリクスを表示します。

ログ

アプリケーションおよびシステムの運用を監視し、トラブルシューティングを行うにはログを確認します。

Log Explorer からログを表示します。

トレース

アプリケーションが処理したリクエストの状態とパフォーマンスを把握するため、トレースとスパンを表示し、同じトレース内でインフラストラクチャーメトリクスを関連付けます。

Trace Explorer からトレースを表示します。

ランタイムメトリクス

アプリケーションのランタイム (JVM) メトリクスを監視します。

JVM Metrics ダッシュボードから JVM メトリクスを表示します。

Collector のヘルスメトリクス

DDOT Collector からメトリクスを表示し、Collector のヘルスを監視します。

OTel ダッシュボードから Collector のヘルスメトリクスを表示します。

参考資料