The converter enhances the user provided configuration.
The autoconfigure logic is applied within the Convert function. It takes in a *confmap.Conf and will modify it based on the logic described below.
The converter supports selective enabling and disabling of features through the otelcollector.converter.features configuration option.
infraattributes: Adds the infra attributes processor to pipelines with Datadog exportersprometheus: Adds a prometheus receiver to collect internal telemetry metricspprof: Adds the pprof extension for profiling capabilitieszpages: Adds the zpages extension for debugging informationhealth_check: Adds the health check extension for health monitoringddflare: Adds the Datadog flare extension for diagnostic informationdatadog: Adds the OSS Datadog extension to send Fleet Automation data
# Default: all features enabled
otelcollector:
converter:
enabled: true
features: ["infraattributes", "prometheus", "pprof", "zpages", "health_check", "ddflare"]
# Enable only specific features
otelcollector:
converter:
enabled: true
features: ["infraattributes", "prometheus"]
# Disable all features
otelcollector:
converter:
enabled: true
features: []You may also set these features using an environment variable:
export DD_OTELCOLLECTOR_CONVERTER_FEATURES="infraattributes,prometheus,pprof"The converter looks for the pprof, health_check, zpages, ddflare and datadog extensions. If these are already defined in the service pipeline, it makes no changes. If any of these extensions are not defined, it will add the extensions config (name: <extension_name>/dd-autoconfigured) and add the component in the services extension pipeline.
The converter will check for any pipelines which have the dd exporter without the infraattributes processor. If it finds any matches, it will add the infra attributes config (name: infraattributes/dd-autoconfigured) and add the processor to the pipeline. It adds the processor in last place in the processors slice.
The converter will check to see if a prometheus receiver is defined which points to the service internal telemetry metrics address. It then checks that this receiver is used in the same pipeline as all configured datadog exporters.
If it finds datadogexporters which are not defined in a pipeline with the prometheus receiver, it adds the prometheus config (name: prometheus/dd-autoconfigured), and then create it's own pipeline metrics/dd-autoconfigured/<dd exporter name> which contains the prometheus receiver and the datadog exporter.
For any prometheus receiver collecting collector health metrics, and sending these to Datadog, it will update the job name to datadog-agent. This ensures the health metrics are tagged by service:datadog-agent and differentiable from collector health metrics.
If api_key is unset, set to an empty string or set to a secret, the converter will fetch the api key from the agent configuration. It will also fetch the the site from the agent config if unset in collector.
It is possible to opt out of the converter by setting env var DD_OTELCOLLECTOR_CONVERTER_ENABLED or agent config otelcollector.converter.enabled to false (true by default). Please note that by doing so, you are removing functionality including flare collection from otel-agent, health metrics from collector, or infra level tagging on your telemetry data. If you want to opt out of some components, you can disable all and add the components that you require manually:
Please refer to the following example in order to manually set the pprof, health_check, zpages and datadog extensions: extensions.yaml. Please refer to the extensions README.md for additional information about the components:
- pprof: Enables collecting collector profiles at a defined endpoint.
- health_check: Enables an HTTP url that can be probed to check the status of the OpenTelemetry Collector.
- zpages: Enables an extension that serves zPages, an HTTP endpoint that provides live data for debugging different components
- ddflare: Enables otel-agent information to be collected in the datadog-agent flare.
- datadog: Enables collector configuration and build info to be viewed in both Datadog Infrastructure Monitoring and Fleet Automation.
The Prometheus receiver scrapes prometheus endpoints. This is used to collect the collectors internal health metrics, by adding a job that scrapes the service telemetry metrics endpoint (configurable via service::telemetry::metrics). Please refer to the following example in order to manually set the prometheus receiver: prometheus.yaml. Please refer to the receivers README.md for additional information about the component.
The infraattributes processor is used to add infra level tags collected by the datadog-agent to your telemetry data. Please refer to the following example in order to manually set the infraattributes processor: infraattributes.yaml. Please refer to the processors README.md for additional information about the component.