---
title: Autodiscovery Auto-Configuration
description: >-
  Manage automatic configuration for popular containerized services using
  Autodiscovery auto-configuration templates
breadcrumbs: Docs > Containers > Containers Guides > Autodiscovery Auto-Configuration
---

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# Autodiscovery Auto-Configuration

When the Agent runs as a container, [Autodiscovery](https://docs.datadoghq.com/getting_started/containers/autodiscovery.md) tries to discover other containers based on default configuration files named `auto_conf.yaml`. You can find these files in the corresponding `conf.d/<INTEGRATION>.d/` folders for the following integrations:

| Integration                                                                                   | Auto-configuration file                                                                                                                                       |
| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Apache](https://docs.datadoghq.com/integrations/apache.md)                                   | [auto_conf.yaml](https://github.com/DataDog/integrations-core/tree/master/apache/datadog_checks/apache/data/auto_conf.yaml)                                   |
| [Cilium](https://docs.datadoghq.com/integrations/cilium.md)                                   | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/cilium/datadog_checks/cilium/data/auto_conf.yaml)                                   |
| [Consul](https://docs.datadoghq.com/integrations/consul.md)                                   | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/consul/datadog_checks/consul/data/auto_conf.yaml)                                   |
| [Coredns](https://docs.datadoghq.com/integrations/coredns.md)                                 | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/coredns/datadog_checks/coredns/data/auto_conf.yaml)                                 |
| [Couch](https://docs.datadoghq.com/integrations/couch.md)                                     | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/couch/datadog_checks/couch/data/auto_conf.yaml)                                     |
| [Couchbase](https://docs.datadoghq.com/integrations/couchbase.md)                             | [auto_conf.yaml](https://github.com/DataDog/integrations-core/tree/master/couchbase/datadog_checks/couchbase/data/auto_conf.yaml)                             |
| [Elastic](https://docs.datadoghq.com/integrations/elastic.md)                                 | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/elastic/datadog_checks/elastic/data/auto_conf.yaml)                                 |
| [Etcd](https://docs.datadoghq.com/integrations/etcd.md)                                       | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/etcd/datadog_checks/etcd/data/auto_conf.yaml)                                       |
| [External DNS](https://docs.datadoghq.com/integrations/external_dns.md)                       | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/external_dns/datadog_checks/external_dns/data/auto_conf.yaml)                       |
| [Istio](https://docs.datadoghq.com/integrations/istio.md)                                     | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/istio/datadog_checks/istio/data/auto_conf.yaml)                                     |
| [Kube APIserver](https://docs.datadoghq.com/agent/kubernetes.md)                              | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/kube_apiserver_metrics/datadog_checks/kube_apiserver_metrics/data/auto_conf.yaml)   |
| [Kube Controller Manager](https://docs.datadoghq.com/integrations/kube_controller_manager.md) | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/kube_controller_manager/datadog_checks/kube_controller_manager/data/auto_conf.yaml) |
| [KubeDNS](https://docs.datadoghq.com/agent/kubernetes.md)                                     | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/kube_dns/datadog_checks/kube_dns/data/auto_conf.yaml)                               |
| [Kube Scheduler](https://docs.datadoghq.com/integrations/kube_scheduler.md)                   | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/kube_scheduler/datadog_checks/kube_scheduler/data/auto_conf.yaml)                   |
| [Kubernetes State](https://docs.datadoghq.com/agent/kubernetes.md)                            | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/kubernetes_state/datadog_checks/kubernetes_state/data/auto_conf.yaml)               |
| [Kyototycoon](https://docs.datadoghq.com/integrations/kyototycoon.md)                         | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/kyototycoon/datadog_checks/kyototycoon/data/auto_conf.yaml)                         |
| [MemCached](https://docs.datadoghq.com/integrations/mcache.md)                                | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/mcache/datadog_checks/mcache/data/auto_conf.yaml)                                   |
| [Presto](https://docs.datadoghq.com/integrations/presto.md)                                   | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/presto/datadog_checks/presto/data/auto_conf.yaml)                                   |
| [RabbitMQ](https://docs.datadoghq.com/integrations/rabbitmq.md)                               | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/rabbitmq/datadog_checks/rabbitmq/data/auto_conf.yaml)                               |
| [Redis](https://docs.datadoghq.com/integrations/redisdb.md)                                   | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/redisdb/datadog_checks/redisdb/data/auto_conf.yaml)                                 |
| [Riak](https://docs.datadoghq.com/integrations/riak.md)                                       | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/riak/datadog_checks/riak/data/auto_conf.yaml)                                       |
| [Tomcat](https://docs.datadoghq.com/integrations/tomcat.md)                                   | [auto_conf.yaml](https://github.com/DataDog/integrations-core/blob/master/tomcat/datadog_checks/tomcat/data/auto_conf.yaml)                                   |

The `auto_conf.yaml` configuration files cover all required parameters to set up a specific integration, with their corresponding [Autodiscovery Templates Variables](https://docs.datadoghq.com/agent/guide/template_variables.md) in place to take into account the containerized environment.

## Override auto-configuration{% #override-auto-configuration %}

Each `auto_conf.yaml` file provides a default configuration. To override this on Kubernetes, you can add a custom configuration in [Kubernetes annotations](https://docs.datadoghq.com/containers/kubernetes/integrations.md?tab=annotations#configuration) or use the [`DatadogInstrumentation` custom resource](https://docs.datadoghq.com/containers/guide/configure-autodiscovery-with-the-datadoginstrumentation-crd.md). For Docker, use [Docker Labels](https://docs.datadoghq.com/containers/docker/integrations.md).

Kubernetes annotations take precedence over `DatadogInstrumentation` resources and `auto_conf.yaml` files. `DatadogInstrumentation` resources take precedence over `auto_conf.yaml` files, and `auto_conf.yaml` files take precedence over Autodiscovery configuration set in the Datadog Operator and Helm charts. To use Datadog Operator or Helm to configure Autodiscovery for an integration in the table on this page, you must disable auto-configuration.

## Disable auto-configuration{% #disable-auto-configuration %}

The following examples disable auto-configuration for the Redis and Istio integrations.

{% tab title="Datadog Operator" %}
In your `datadog-agent.yaml`, use `override.nodeAgent.containers.agent.env` to set the `DD_IGNORE_AUTOCONF` environment variable in the `agent` container.

```yaml
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>

  override:
    nodeAgent:
      containers: 
        agent:
          env:
            - name: DD_IGNORE_AUTOCONF
              value: "redisdb istio"
```

Then, apply the new configuration.
{% /tab %}

{% tab title="Helm" %}
Add `datadog.ignoreAutoconfig` to your `datadog-values.yaml`:

```yaml
datadog:
  #List of integration(s) to ignore auto_conf.yaml.
  ignoreAutoConfig:
    - redisdb
    - istio
```

{% /tab %}

{% tab title="Containerized Agent" %}
To disable auto configuration integration(s) with your containerized agent (manual DaemonSet, Docker, ECS), add the `DD_IGNORE_AUTOCONF` environment variable:

```yaml
DD_IGNORE_AUTOCONF="redisdb istio"
```

{% /tab %}

## Configuration discovery{% #configuration-discovery %}

Starting in Agent version 7.82, several integrations (for example, [Pulsar](https://github.com/DataDog/integrations-core/tree/master/pulsar/datadog_checks/pulsar/data/auto_conf.yaml)) ship `auto_conf.yaml` files that contain a `discovery` field and an empty `instances` list. In these cases, the Agent attempts to create a valid configuration for the integration at runtime by examining the service. Each integration defines its own discovery method. For example, an integration can probe exposed container ports for a metrics endpoint or use the container name to distinguish components that share the same image. If a valid configuration is found, the Agent schedules a check instance.

To avoid duplicate metrics, the Agent skips configuration discovery for an integration if there is:

- any instance of the same integration configured for the same container or at the host level
- any instance of a generic OpenMetrics or Prometheus check configured for the same container
- any host-level instance of a generic OpenMetrics or Prometheus check that emits metrics under the same root namespace as the integration

Additionally, starting in Agent version 7.83, all check instances created by this mechanism include the tag `dd_config_discovery:true` in their metrics. Use this tag to identify or exclude these metrics in queries.

To prevent configuration discovery for an integration, disable its auto-configuration.

## Further Reading{% #further-reading %}

Additional helpful documentation, links, and articles:

- [Configure integrations with Autodiscovery on Kubernetes](https://docs.datadoghq.com/containers/kubernetes/integrations.md)
- [Configure integrations with Autodiscovery on Docker](https://docs.datadoghq.com/containers/docker/integrations.md)
- [Container Discovery Management](https://docs.datadoghq.com/containers/guide/container-discovery-management.md)
