apiVersion:opentelemetry.io/v1beta1kind:OpenTelemetryCollectormetadata:name:node-collectorspec:# Deploy 1 instance per node, that will collect telemetry from that node's podsmode:daemonsetcommand:['otel-agent','run']# Will no longer be necessary from 7.82.0 onwardsconfig:exporters:datadog:api:key:${env:DD_API_KEY}site:${env:DD_SITE}sending_queue:batch:flush_timeout:10sservice:telemetry:resource:k8s.cluster.name:${env:K8S_CLUSTER_NAME}env:- name:DD_API_KEYvalueFrom:secretKeyRef:key:api-keyname:datadog-apikey- name:DD_SITEvalueFrom:secretKeyRef:key:sitename:datadog-apikey- name:DD_OTELCOLLECTOR_CONVERTER_FEATURESvalue:datadog,pprof,zpages,prometheus,infraattributes- name:K8S_CLUSTER_NAMEvalue:<CLUSTER_NAME># vvv Will no longer be necessary from 7.83.0 onwards vvv- name:DD_OTEL_STANDALONEvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^# vvv Will no longer be necessary from 7.82.0 onwards vvv- name:DD_OTELCOLLECTOR_ENABLEDvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec:config:receivers:filelog:include:- /var/log/pods/*/*/*.log# Exclude the Collector's own logs to avoid a feedback loopexclude:- /var/log/pods/*_node-collector-collector-*_*/otc-container/*.logstart_at:endinclude_file_path:trueinclude_file_name:falseretry_on_failure:enabled:trueoperators:- id:container-parsertype:containermax_log_size:102400# [...]service:# [...]pipelines:logs:receivers:['otlp','filelog']# [...]# Mount the node's log directories into the Collector pod (read-only)volumes:- name:varlogpodshostPath:path:/var/log/pods- name:varlibdockercontainershostPath:path:/var/lib/docker/containersvolumeMounts:- name:varlogpodsmountPath:/var/log/podsreadOnly:true- name:varlibdockercontainersmountPath:/var/lib/docker/containersreadOnly:true
完成した node-collector.yaml ファイル
node-collector.yaml ファイルは次のようになります。
node-collector.yaml
apiVersion:opentelemetry.io/v1beta1kind:OpenTelemetryCollectormetadata:name:node-collectorspec:# Deploy 1 instance per node, that will collect telemetry from that node's podsmode:daemonsetcommand:['otel-agent','run']# Will no longer be necessary from 7.82.0 onwards# Publish the OTLP ports on the node's network interfaceports:- name:otlp-grpcport:4317protocol:TCPhostPort:4317- name:otlp-httpport:4318protocol:TCPhostPort:4318config:receivers:otlp:protocols:grpc:endpoint:0.0.0.0:4317http:endpoint:0.0.0.0:4318host_metrics:collection_interval:15sscrapers:cpu:{}load:{}memory:{}network:{}disk:{}kubelet_stats:auth_type:serviceAccountcollection_interval:15sendpoint:${env:K8S_NODE_NAME}:10250node:${env:K8S_NODE_NAME}metric_groups:- pod- container- volumefilelog:include:- /var/log/pods/*/*/*.logexclude:- /var/log/pods/*_node-collector-collector-*_*/otc-container/*.logstart_at:endinclude_file_path:trueinclude_file_name:falseretry_on_failure:enabled:trueoperators:- id:container-parsertype:containermax_log_size:102400processors:infraattributes:cardinality:2resource/add-cluster-name:attributes:- key:k8s.cluster.namevalue:${env:K8S_CLUSTER_NAME}action:upsertconnectors:datadog/connector:traces:compute_top_level_by_span_kind:truepeer_tags_aggregation:truecompute_stats_by_span_kind:trueexporters:datadog:api:key:${env:DD_API_KEY}site:${env:DD_SITE}sending_queue:batch:flush_timeout:10sextensions: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_KEYvalueFrom:secretKeyRef:key:api-keyname:datadog-apikey- name:DD_SITEvalueFrom:secretKeyRef:key:sitename:datadog-apikey- name:DD_OTELCOLLECTOR_CONVERTER_FEATURESvalue:datadog,pprof,zpages,prometheus,infraattributes- name:K8S_CLUSTER_NAMEvalue:<CLUSTER_NAME>- name:K8S_POD_IPvalueFrom:fieldRef:apiVersion:v1fieldPath: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_STANDALONEvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^# vvv Will no longer be necessary from 7.82.0 onwards vvv- name:DD_OTELCOLLECTOR_ENABLEDvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^# Mount the node's log directories for the filelog receiver (read-only)volumes:- name:varlogpodshostPath:path:/var/log/pods- name:varlibdockercontainershostPath:path:/var/lib/docker/containersvolumeMounts:- name:varlogpodsmountPath:/var/log/podsreadOnly:true- name:varlibdockercontainersmountPath:/var/lib/docker/containersreadOnly:true
mode:daemonsetimage:repository:datadog/ddot-collectortag:7.83.1ports:jaeger-compact:enabled:falsejaeger-grpc:enabled:falsejaeger-thrift:enabled:falsezipkin:enabled:false# Can be removed from 7.82.0 onwardscommand:name:opt/datadog-agent/embedded/bin/otel-agent
config:exporters:datadog:api:key:${env:DD_API_KEY}site:${env:DD_SITE}sending_queue:batch:flush_timeout:10sextraEnvs:- name:DD_API_KEYvalueFrom:secretKeyRef:key:api-keyname:datadog-apikey- name:DD_SITEvalueFrom:secretKeyRef:key:sitename:datadog-apikey- name:DD_OTELCOLLECTOR_CONVERTER_FEATURESvalue:datadog,pprof,zpages,prometheus,infraattributes- name:K8S_CLUSTER_NAMEvalue:<CLUSTER_NAME># vvv Will no longer be necessary from 7.83.0 onwards vvv- name:DD_OTEL_STANDALONEvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^# vvv Will no longer be necessary from 7.82.0 onwards vvv- name:DD_OTELCOLLECTOR_ENABLEDvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mode:daemonset# vvv To be removed from 7.82.0 onwards vvvcommand:name:opt/datadog-agent/embedded/bin/otel-agent# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^image:repository:datadog/ddot-collectortag:7.83.1presets:hostMetrics:# Add an hostmetrics receiver to the metrics pipelineenabled:truekubeletMetrics:# Add a kubeletstats receiver to the metrics pipelineenabled:truelogsCollection:# Add a filelog receiver to the logs pipelineenabled:trueincludeCollectorLogs:falseconfig:connectors:datadog/connector:traces:compute_top_level_by_span_kind:truepeer_tags_aggregation:truecompute_stats_by_span_kind:trueexporters:datadog:api:key:${env:DD_API_KEY}site:${env:DD_SITE}sending_queue:batch:flush_timeout:10sprocessors:infraattributes:cardinality:2resource/add-cluster-name:attributes:- key:k8s.cluster.namevalue:${env:K8S_CLUSTER_NAME}action:upsertreceivers:otlp:protocols:grpc:endpoint:0.0.0.0:4317http:endpoint:0.0.0.0:4318service:extensions:- health_checkpipelines:logs:receivers:- otlpprocessors:- resource/add-cluster-name- infraattributesexporters:- datadogmetrics:receivers:- otlp- datadog/connectorprocessors:- resource/add-cluster-name- infraattributesexporters:- datadogtraces:receivers:- otlpprocessors:- resource/add-cluster-name- infraattributesexporters:- datadog- datadog/connectortelemetry:resource:k8s.cluster.name:${env:K8S_CLUSTER_NAME}extraEnvs:- name:DD_API_KEYvalueFrom:secretKeyRef:key:api-keyname:datadog-apikey- name:DD_SITEvalueFrom:secretKeyRef:key:sitename:datadog-apikey- name:DD_OTELCOLLECTOR_CONVERTER_FEATURESvalue:datadog,pprof,zpages,prometheus,infraattributes- name:K8S_CLUSTER_NAMEvalue:<CLUSTER_NAME># vvv Will no longer be necessary from 7.83.0 onwards vvv- name:DD_OTEL_STANDALONEvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^# vvv Will no longer be necessary from 7.82.0 onwards vvv- name:DD_OTELCOLLECTOR_ENABLEDvalue:'true'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ports:jaeger-compact:enabled:falsejaeger-grpc:enabled:falsejaeger-thrift:enabled:falsezipkin:enabled:false