# Datadog Agent for Docker

## Basic Datadog Deployment on Docker Environments

Use the following steps to integrate Datadog agent with Docker container services.

1. Add the following `datadog service` entry in the existing `docker-compose.yaml`:

```yaml
datadog:
       build: datadog
       container_name: datadog-agent #replace with anything specific to environment.
       links:
     - <<service>> # Add appropriate service links
    environment:
     - DD_API_KEY=temp_api_key
     - DD_CONTAINER_EXCLUDE=name:datadog-agent # OPTIONAL To exclude datadog agent logs to be sent to Kloudfuse
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock
     - /proc/:/host/proc/:ro
     - /sys/fs/cgroup:/host/sys/fs/cgroup:ro
     - /var/lib/docker/containers:/var/lib/docker/containers:ro
```

2. Create a directory `datadog` to build the datadog agent image.

3. Create a `datadog.yaml` file in the `datadog` directory to configure the agent to send data to the Kloudfuse ingester.

```yaml
api_key: temp_api_key
site: datadoghq.com
​
dd_url: "http://<URL>/ingester" # Use http or https depending on whether HTTPS/TLS is configured on Kloudfuse
skip_ssl_validation: true # Skip this if you do not want to skip the SSL/TLS validation
​
​
logs_enabled: true
logs_config:
     logs_dd_url: "URL:80" # Use port 443 if HTTPS/TLS is enabled
     use_http: true
     logs_no_ssl: true # Set to false if HTTPS/TLS is enabled
     auto_multi_line_detection: false
     use_v2_api: false
     container_collect_all: true
​
apm_config:
     enabled: true
     apm_dd_url: "URL:80/ingester" # User port 443 if HTTPS/TLS is enabled
​
process_config:
     process_dd_url: "http://URL/ingester" # Use http or https depending on whether HTTPS/TLS is configured on Kloudfuse
     events_dd_url: "http://URL/ingester" # Use http or https depending on whether HTTPS/TLS is configured on Kloudfuse
     container_collection:
       enabled: false
metadata_providers:
  - name: host
    interval: 300
​
use_v2_api:
series: true
```

4. Create a `Dockerfile` in the `datadog` directory.

```console
FROM gcr.io/datadoghq/agent:7

ADD datadog.yaml /etc/datadog-agent/datadog.yaml
```

5. Add the necessary yaml files to the `conf.d` directory.

6. Build the datadog agent image.

```console
docker-compose build
```

7. Update your current deployment to use the Datadog agent container to send Metrics, Logs, and Events data to Kloudfuse.

```console
docker compose up -d
```

## Adding Custom Tags

Add custom tags to the agent for all metrics, logs, and events collected by the agent. Follow these steps.

1. Update the `environment` section of datadog in docker-compose.yml file to include following code.

```yaml
datadog:
       ...
       environment:
        ...
     - DD_TAG=custom_tag_name:custom_tag_value
```

2. The Kloudfuse helm `custom-values.yaml` file must list the custom tags.

```yaml
ingester:
     config:
       hostTagIncludes:
       ...
    - custom_tag_name (1)
    ...
```

|     |     |
| --- | --- |
| **1** | `custom_tag_name`: Add all custom tag names; otherwise, the system may overwrite existing configurations. |

3. Alternatively, if you don’t plan to maintain a long list of possible custom tags, set `allowAllHostTags` to `true`. This effectively adds all extracted custom tags to the allow list.

```yaml
ingester:
     config:
       allowAllHostTags: true (1)
```

|     |     |
| --- | --- |
| **1** | `allowAllHostTags`: Adds all custom tag names to the allow list; otherwise, the system may overwrite existing configurations.
