DDOT Collector を Kubernetes DaemonSet としてインストールする 概要 このガイドに従って、Helm または Datadog Operator を使用して、Kubernetes DaemonSet として Datadog Distribution of OpenTelemetry (DDOT) Collector をデプロイします。
要件 このガイドの手順を実行するには、以下の準備が必要です。
Datadog アカウント :
まだお持ちでない場合は、Datadog アカウントを作成 してください。 Datadog API キー を見つけるか、作成します。ソフトウェア :
次のものをマシンにインストールして設定してください:
ネットワーク :When using the Datadog SDK with OpenTelemetry API support, telemetry is routed to different components depending on the signal source. Ensure the following ports are accessible on your Datadog Agent or Collector:
Signal Source Protocol Port Destination Component OTel Metrics and Logs API OTLP (gRPC/HTTP) 4317 / 4318 Datadog Agent OTLP Receiver or DDOT Collector Datadog Tracing Datadog trace intake 8126 (TCP) Datadog Trace Agent Runtime Metrics DogStatsD 8125 (UDP) DogStatsD Server
OpenTelemetry Collector を使用して Datadog Agent をインストールする このインストールは、Datadog SDK + DDOT および OpenTelemetry SDK + DDOT 構成の両方に必要です。Datadog SDK は OpenTelemetry API を実装していますが、OTLP メトリクスとログを処理して転送するために DDOT Collector が必要です。
インストール方法を選択する 以下のインストール方法のいずれかを使用します。
Datadog Operator : Datadog の設定を自動的に調整し維持する Kubernetes ネイティブ アプローチです。カスタムリソースステータスでデプロイ状況、健全性、エラーを報告し、高度なコンフィギュレーションオプションでコンフィギュレーションミスのリスクを抑えます。Helm チャート : Datadog Agent をデプロイするための簡単な方法です。バージョン管理、ロールバック、テンプレート機能を提供し、デプロイメントの一貫性を保ち、再現を容易にします。Datadog Operator をインストールする Datadog Operator Helm チャート を使用して、クラスターに Datadog Operator をインストールできます:
helm repo add datadog https://helm.datadoghq.com
helm repo update
helm install datadog-operator datadog/datadog-operator
Datadog Helm リポジトリを追加する Datadog リポジトリを Helm リポジトリに追加するには:
helm repo add datadog https://helm.datadoghq.com
helm repo update
Datadog API キーを設定する Datadog API キー を取得します。 API キーを Kubernetes シークレットとして保存します:kubectl create secret generic datadog-secret \
--from-literal api-key= <DD_API_KEY>
<DD_API_KEY>を実際の Datadog API キーに置き換えます。 Datadog Operator をデプロイした後、Kubernetes クラスター内で Datadog Agent、Cluster Agent、および Cluster Checks Runners (使用する場合) のデプロイメントをトリガーする DatadogAgent リソースを作成します。Datadog Agent は DaemonSet としてデプロイされ、クラスターのすべてのノードでポッドを実行します。
datadog-agent.yaml ファイルを使用して、DatadogAgent デプロイメント構成を指定します。Copy
apiVersion : datadoghq.com/v2alpha1
kind : DatadogAgent
metadata :
name : datadog
spec :
global :
clusterName : <CLUSTER_NAME>
site : <DATADOG_SITE>
credentials :
apiSecret :
secretName : datadog-secret
keyName : api-key <CLUSTER_NAME> をクラスターの名前に置き換えます。<DATADOG_SITE> を自分の Datadog サイト に置き換えます。使用するサイトは (右側で正しい DATADOG SITE が選択されていることを確認してください。)
FIPS 準拠の Agent イメージを使用するには、FED 用に
useFIPSAgent: true (
spec.global 下) を設定してください。
FIPS コンプライアンス を参照してください。
OpenTelemetry Collector を有効にします: Copy
# Enable Features
features :
otelCollector :
enabled : true Datadog Operator は、デフォルトで OpenTelemetry Collector をポート 4317 (名前は otel-grpc) および 4318 (名前は otel-http) に自動的にバインドします。
(オプション) 追加の Datadog 機能を有効にします: これらの機能を有効にすると、追加料金が発生する場合があります。
料金ページ を確認し、進む前にカスタマーサクセスマネージャーに相談してください。
Copy
# Enable Features
features :
...
apm :
enabled : true
orchestratorExplorer :
enabled : true
processDiscovery :
enabled : true
liveProcessCollection :
enabled : true
usm :
enabled : true
clusterChecks :
enabled : true 追加の Datadog 機能を有効にする際は、Datadog 環境変数に依存するのではなく、必ず Datadog または OpenTelemetry Collector の設定ファイルを使用してください。
注 : operator v1.22.0 の時点で、DDOT コンテナは -full Agent イメージの代わりに ddot-collector イメージを使用します。
ノード Agent イメージタグを上書きする場合は、OpenTelemetry コンテナがスケジュールされるように、タグ >= 7.67.0 を使用してください (ddot-collector イメージは >= 7.67.0 でのみサポートされています)。 この ddot-collector イメージには -full バリアントはありません。-full イメージが必要な場合は、spec.override.nodeAgent.image.name を完全な Agent イメージ (例: registry.datadoghq.com/agent:7.72.1-full) に設定してください。 YAML ファイルを使用して、Datadog Agent チャート の Helm チャートパラメーターを指定します。
空の datadog-values.yaml ファイルを作成します: touch datadog-values.yaml
Datadog API キーシークレットを構成します: Copy
datadog :
site : <DATADOG_SITE>
apiKeyExistingSecret : datadog-secret <DATADOG_SITE> を Datadog サイト に設定します。そうでない場合、デフォルトは datadoghq.com、US1 サイトになります。
FED の場合、FIPS 準拠の Agent イメージを使用するために、
useFIPSAgent: true を
datadog-values.yaml のルートに設定してください。
FIPS コンプライアンス を参照してください。
OpenTelemetry Collector を有効にし、必須のポートを設定します: Copy
datadog :
...
otelCollector :
enabled : true
ports :
- containerPort : "4317" # default port for OpenTelemetry gRPC receiver.
hostPort : "4317"
name : otel-grpc
- containerPort : "4318" # default port for OpenTelemetry HTTP receiver
hostPort : "4318"
name : otel-http hostPort を設定して、コンテナポートを外部ネットワークに公開します。これにより、OTLP エクスポーターを設定して、Datadog Agent が割り当てられているノードの IP アドレスを指定できるようになります。
ポートを公開したくない場合は、代わりに Agent サービスを使用できます:
hostPort のエントリを、 datadog-values.yaml ファイルから削除してください。アプリケーションのデプロイメントファイル (deployment.yaml) で、OTLP エクスポーターを Agent サービスを使用するように設定します:env :
- name : OTEL_EXPORTER_OTLP_ENDPOINT
value : 'http://<SERVICE_NAME>.<SERVICE_NAMESPACE>.svc.cluster.local'
- name : OTEL_EXPORTER_OTLP_PROTOCOL
value : 'grpc'
(オプション) 追加の Datadog 機能を有効にします: これらの機能を有効にすると、追加料金が発生する場合があります。
料金ページ を確認し、進む前にカスタマーサクセスマネージャーに相談してください。
Copy
datadog :
...
apm :
portEnabled : true
peer_service_aggregation : true
orchestratorExplorer :
enabled : true
processAgent :
enabled : true
processCollection : true 追加の Datadog 機能を有効にする際は、Datadog 環境変数に依存するのではなく、必ず Datadog または OpenTelemetry Collector の設定ファイルを使用してください。
(オプション) ポッドラベルを収集し、それらをメトリクス、トレース、およびログに付与するタグとして使用します: Copy
datadog :
...
podLabelsAsTags :
app : kube_app
release : helm_release datadog-values.yaml ファイルは次のようになります:
Copy
datadog :
site : datadoghq.com
apiKeyExistingSecret : datadog-secret
otelCollector :
enabled : true
ports :
- containerPort : "4317"
hostPort : "4317"
name : otel-grpc
- containerPort : "4318"
hostPort : "4318"
name : otel-http
apm :
portEnabled : true
peer_service_aggregation : true
orchestratorExplorer :
enabled : true
processAgent :
enabled : true
processCollection : true
podLabelsAsTags :
app : kube_app
release : helm_release
Datadog Operator は、出発点として使用できるサンプルの OpenTelemetry Collector 構成を提供します。この構成を変更する必要がある場合、Datadog Operator はカスタム Collector 構成を提供する 2 つの方法をサポートしています:
インライン構成 : カスタム Collector 構成を features.otelCollector.conf.configData フィールドに直接追加します。ConfigMap ベースの構成 : Collector 構成を ConfigMap に保存し、features.otelCollector.conf.configMap フィールドで参照します。このアプローチにより、Collector の構成を DatadogAgent リソースから切り離して保持できます。インライン Collector 構成 以下のスニペットでは、Collector の構成が features.otelCollector.conf.configData パラメータの直下に配置されています:
Copy
...
# Enable Features
features :
otelCollector :
enabled : true
ports :
- containerPort : 4317
hostPort : 4317
name : otel-grpc
- containerPort : 4318
hostPort : 4318
name : otel-http
conf :
configData : |-
receivers:
prometheus:
config:
scrape_configs:
- job_name: "otelcol"
scrape_interval: 10s
static_configs:
- targets:
- 0.0.0.0:8888
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
debug:
verbosity: detailed
datadog:
api:
key: ${env:DD_API_KEY}
site: ${env:DD_SITE}
sending_queue:
batch:
flush_timeout: 10s
processors:
infraattributes:
cardinality: 2
connectors:
datadog/connector:
traces:
service:
pipelines:
traces:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog, datadog/connector]
metrics:
receivers: [otlp, datadog/connector, prometheus]
processors: [infraattributes]
exporters: [debug, datadog]
logs:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog] For the infraattributes processor to add Kubernetes tags, your telemetry must include the container.id resource attribute. This is often, but not always, added by OTel SDK auto-instrumentation.
If your tags are missing, see the troubleshooting guide for details on how to add this attribute.
この datadog-agent.yaml ファイルに含まれる DatadogAgent リソースを適用すると、Operator は Collector の構成を Agent DaemonSet に自動的にマウントします。
インライン Collector 構成を含む datadog-agent.yaml が完成したものは、次のようになります:
Copy
apiVersion : datadoghq.com/v2alpha1
kind : DatadogAgent
metadata :
name : datadog
spec :
global :
clusterName : <CLUSTER_NAME>
site : <DATADOG_SITE>
credentials :
apiSecret :
secretName : datadog-secret
keyName : api-key
# Enable Features
features :
apm :
enabled : true
orchestratorExplorer :
enabled : true
processDiscovery :
enabled : true
liveProcessCollection :
enabled : true
usm :
enabled : true
clusterChecks :
enabled : true
otelCollector :
enabled : true
ports :
- containerPort : 4317
hostPort : 4317
name : otel-grpc
- containerPort : 4318
hostPort : 4318
name : otel-http
conf :
configData : |-
receivers:
prometheus:
config:
scrape_configs:
- job_name: "datadog-agent"
scrape_interval: 10s
static_configs:
- targets:
- 0.0.0.0:8888
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
debug:
verbosity: detailed
datadog:
api:
key: ${env:DD_API_KEY}
site: ${env:DD_SITE}
sending_queue:
batch:
flush_timeout: 10s
processors:
infraattributes:
cardinality: 2
connectors:
datadog/connector:
traces:
service:
pipelines:
traces:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog, datadog/connector]
metrics:
receivers: [otlp, datadog/connector, prometheus]
processors: [infraattributes]
exporters: [debug, datadog]
logs:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog] ConfigMap ベースの Collector 構成 より複雑または頻繁に更新される構成の場合、Collector 構成を ConfigMap に保存することでバージョン管理が簡素化されることがあります。
Collector 構成を含む ConfigMap を作成します: Copy
apiVersion : v1
kind : ConfigMap
metadata :
name : otel-agent-config-map
namespace : system
data :
# must be named otel-config.yaml
otel-config.yaml : |-
receivers:
prometheus:
config:
scrape_configs:
- job_name: "datadog-agent"
scrape_interval: 10s
static_configs:
- targets:
- 0.0.0.0:8888
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
debug:
verbosity: detailed
datadog:
api:
key: ${env:DD_API_KEY}
site: ${env:DD_SITE}
sending_queue:
batch:
flush_timeout: 10s
processors:
infraattributes:
cardinality: 2
connectors:
datadog/connector:
traces:
service:
pipelines:
traces:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog, datadog/connector]
metrics:
receivers: [otlp, datadog/connector, prometheus]
processors: [infraattributes]
exporters: [debug, datadog]
logs:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog] ConfigMap 内の Collector 構成のフィールドは、次のように呼ばれる必要があります。 otel-config.yaml下の Pod テンプレートに追加してください。
パラメータを使用して、otel-agent-config-map リソース内の DatadogAgent ConfigMap を参照します:features.otelCollector.conf.configMap Copy
...
# Enable Features
features :
otelCollector :
enabled : true
ports :
- containerPort : 4317
hostPort : 4317
name : otel-grpc
- containerPort : 4318
hostPort : 4318
name : otel-http
conf :
configMap :
name : otel-agent-config-map Operator は ConfigMap から otel-config.yaml を Agent の OpenTelemetry Collector DaemonSet に自動的にマウントします。
ConfigMap として定義された Collector 構成を含む datadog-agent.yaml が完成したものは、次のようになります:
Copy
apiVersion : datadoghq.com/v2alpha1
kind : DatadogAgent
metadata :
name : datadog
spec :
global :
clusterName : <CLUSTER_NAME>
site : <DATADOG_SITE>
credentials :
apiSecret :
secretName : datadog-secret
keyName : api-key
# Enable Features
features :
apm :
enabled : true
orchestratorExplorer :
enabled : true
processDiscovery :
enabled : true
liveProcessCollection :
enabled : true
usm :
enabled : true
clusterChecks :
enabled : true
otelCollector :
enabled : true
ports :
- containerPort : 4317
hostPort : 4317
name : otel-grpc
- containerPort : 4318
hostPort : 4318
name : otel-http
conf :
configMap :
name : otel-agent-config-map
---
apiVersion : v1
kind : ConfigMap
metadata :
name : otel-agent-config-map
namespace : system
data :
# must be named otel-config.yaml
otel-config.yaml : |-
receivers:
prometheus:
config:
scrape_configs:
- job_name: "datadog-agent"
scrape_interval: 10s
static_configs:
- targets:
- 0.0.0.0:8888
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
debug:
verbosity: detailed
datadog:
api:
key: ${env:DD_API_KEY}
site: ${env:DD_SITE}
sending_queue:
batch:
flush_timeout: 10s
processors:
infraattributes:
cardinality: 2
connectors:
datadog/connector:
traces:
service:
pipelines:
traces:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog, datadog/connector]
metrics:
receivers: [otlp, datadog/connector, prometheus]
processors: [infraattributes]
exporters: [debug, datadog]
logs:
receivers: [otlp]
processors: [infraattributes]
exporters: [debug, datadog] Datadog Helm チャートは、出発点として使用できるサンプルの OpenTelemetry Collector 構成を提供します。このセクションでは、事前定義されたパイプラインと含まれている OpenTelemetry コンポーネントについて説明します。
これは otel-config.yaml における完全な OpenTelemetry Collector 構成です:
Copy
receivers :
prometheus :
config :
scrape_configs :
- job_name : "otelcol"
scrape_interval : 10s
static_configs :
- targets : [ "0.0.0.0:8888" ]
otlp :
protocols :
grpc :
endpoint : 0.0.0.0 : 4317
http :
endpoint : 0.0.0.0 : 4318
exporters :
debug :
verbosity : detailed
datadog :
api :
key : ${env:DD_API_KEY}
site : ${env:DD_SITE}
sending_queue :
batch :
flush_timeout : 10s
processors :
infraattributes :
cardinality : 2
connectors :
datadog/connector :
traces :
service :
pipelines :
traces :
receivers : [ otlp]
processors : [ infraattributes]
exporters : [ datadog, datadog/connector]
metrics :
receivers : [ otlp, datadog/connector, prometheus]
processors : [ infraattributes]
exporters : [ datadog]
logs :
receivers : [ otlp]
processors : [ infraattributes]
exporters : [ datadog] For the infraattributes processor to add Kubernetes tags, your telemetry must include the container.id resource attribute. This is often, but not always, added by OTel SDK auto-instrumentation.
If your tags are missing, see the troubleshooting guide for details on how to add this attribute.
主要コンポーネント Datadog にテレメトリデータを送信するために、構成内で次のコンポーネントが定義されています:
Datadog コネクタ Datadog コネクタ は Datadog APM トレースメトリクスを計算します。
Copy
connectors :
datadog/connector :
traces: Datadog エクスポーター Datadog エクスポーター はトレース、メトリクス、およびログを Datadog にエクスポートします。
Copy
exporters :
datadog :
api :
key : ${env:DD_API_KEY}
site : ${env:DD_SITE}
sending_queue :
batch :
flush_timeout : 10s 注 : key が指定されていないかシークレットに設定されている場合、または site が指定されていない場合、システムはコア Agent の設定から値を使用します。デフォルトでは、コア Agent はサイトを datadoghq.com (US1) に設定します。
Prometheus レシーバー Prometheus レシーバー はメトリクスパイプラインのために OpenTelemetry Collector からヘルスメトリクスを収集します。
Copy
receivers :
prometheus :
config :
scrape_configs :
- job_name : "otelcol"
scrape_interval : 10s
static_configs :
- targets : [ "0.0.0.0:8888" ] 詳細については、コレクターのヘルスメトリクス ドキュメントを参照してください。
OpenTelemetry Collector を使用して Agent をデプロイする Kubernetes 環境で OpenTelemetry Collector を使用して Datadog Agent をインストールまたはアップグレードするには、次の Helm コマンドのいずれかを使用してください:
デフォルトの OpenTelemetry Collector 構成の場合:
helm upgrade -i <RELEASE_NAME> datadog/datadog -f datadog-values.yaml
カスタム OpenTelemetry Collector 構成の場合:
helm upgrade -i <RELEASE_NAME> datadog/datadog \
-f datadog-values.yaml \
--set-file datadog.otelCollector.config= otel-config.yaml
このコマンドを使用すると、独自の otel-config.yaml ファイルを指定できます。
<RELEASE_NAME> を、使用している Helm リリース名に置き換えてください。
デプロイメントプロセス中に警告が表示される場合があります。これらの警告は無視できます。
この Helm チャートは、OpenTelemetry Collector を使用して Datadog Agent を DaemonSet としてデプロイします。Collector は、Agent デプロイメントパターン に従って、アプリケーションと同じホストにデプロイされます。Gateway デプロイメントパターン はプレビュー中です。インストール手順については、DDOT Kubernetes Gateway インストールガイド に従ってください。
Datadog にテレメトリを送信する テレメトリデータを Datadog に送信するには:
Instrument your application Configure the application Correlate observability data Run your application アプリケーションをインスツルメントする OpenTelemetry API を使用して アプリケーションをインスツルメントします。
例として、すでにインスツルメント済みの カレンダーサンプルアプリケーション を使用できます。以下のコードは、OpenTelemetry のアノテーションと API を使用して CalendarService.getDate() メソッドをインスツルメントします:
@WithSpan ( kind = SpanKind . CLIENT )
public String getDate () {
Span span = Span . current ();
span . setAttribute ( "peer.service" , "random-date-service" );
...
} アプリケーションコンテナは、同じホスト上の DDOT Collector にデータを送信する必要があります。Collector は DaemonSet として実行されるため、OTLP エンドポイントとしてローカルホストを指定する必要があります。
OTEL_EXPORTER_OTLP_ENDPOINT環境変数がまだ設定されていない場合は、アプリケーションの Deployment マニフェストファイルに追加してください:
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 はこのタグ付け構成を検出し、コンテナから収集したデータに適用します。
アプリケーションのデプロイメントマニフェストに次の環境変数を追加する:
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>" アプリケーションを実行する デプロイメントマニフェストで行った変更を適用するために、アプリケーションを再デプロイします。更新された構成が有効になると、メトリクス、トレース、ログに対して unified service tagging が完全に有効になります。
Datadog で可観測性データを確認する Datadog を使用して、アプリケーションの可観測性データを確認します。
Fleet Automation Datadog Agent と Collector の構成を確認します。
Live container monitoring Live Container Monitoring 機能を使用して、コンテナのヘルスを監視します。
インフラストラクチャーノードのヘルス ランタイムおよびインフラストラクチャーメトリクスを表示して、ノードのパフォーマンスを視覚化、監視、測定します。
ログ アプリケーションおよびシステムの運用を監視し、トラブルシューティングを行うにはログを確認します。
トレース アプリケーションが処理したリクエストの状態とパフォーマンスを把握するため、トレースとスパンを表示し、同じトレース内でインフラストラクチャーメトリクスを関連付けます。
ランタイムメトリクス アプリケーションのランタイム (JVM) メトリクスを監視します。
コレクターのヘルスメトリクス DDOT Collector からメトリクスを表示し、Collector のヘルスを監視します。
参考資料