Try Introduction to Monitoring Kubernetes in the Learning Center
Learn without cost on real cloud compute capacity and a Datadog trial account. Start these hands-on labs to get up to speed with the metrics, logs, and APM traces that are specific to Kubernetes.
You can send traces over Unix Domain Socket (UDS), TCP (IP:Port), or Kubernetes service. Datadog recommends that you use UDS, but it is possible to use all three at the same time, if necessary.
When APM is enabled, the default configuration creates a directory on the host and mounts it within the Agent. The Agent then creates and listens on a socket file /var/run/datadog/apm/apm.socket. The application pods can then similarly mount this volume and write to this same socket. You can modify the path and socket with the features.apm.unixDomainSocketConfig.path configuration value.
After making your changes, apply the new configuration by using the following command:
To verify, ensure that datadog.apm.socketEnabled is set to true in your datadog-values.yaml.
datadog:apm:socketEnabled:true
The default configuration creates a directory on the host and mounts it within the Agent. The Agent then creates and listens on a socket file /var/run/datadog/apm.socket. The application pods can then similarly mount this volume and write to this same socket. You can modify the path and socket with the datadog.apm.hostSocketPath and datadog.apm.socketPath configuration values.
datadog:apm:# the following values are default:socketEnabled:truehostSocketPath:/var/run/datadog/socketPath:/var/run/datadog/apm.socket
To disable APM, set datadog.apm.socketEnabled to false.
After making your changes, upgrade your Datadog Helm chart using the following command:
Note: On minikube, you may receive an Unable to detect the kubelet URL automatically error. In this case, set datadog.kubelet.tlsVerify to false.
Configure your application pods to submit traces to Datadog Agent
The Datadog Admission Controller is a component of the Datadog Cluster Agent that simplifies your application pod configuration. Learn more by reading the Datadog Admission Controller documentation.
Use the Datadog Admission Controller to inject environment variables and mount the necessary volumes on new application pods, automatically configuring pod and Agent trace communication. Learn how to automatically configure your application to submit traces to Datadog Agent by reading the Injecting Libraries Using Admission Controller documentation.
If you are sending traces to the Agent by using UDS, mount the host directory the socket is in (that the Agent created) to the application container and specify the path to the socket with DD_TRACE_AGENT_URL:
Configure your application tracers to emit traces:
After configuring your Datadog Agent to collect traces and giving your application pods the configuration on where to send traces, install the Datadog tracer into your applications to emit the traces. Once this is done, the tracer sends the traces to the appropriate DD_TRACE_AGENT_URL endpoint.
If you are sending traces to the Agent by using TCP (<IP_ADDRESS>:8126) supply this IP address to your application pods—either automatically with the Datadog Admission Controller, or manually using the downward API to pull the host IP. The application container needs the DD_AGENT_HOST environment variable that points to status.hostIP:
Note: This configuration requires the Agent to be configured to accept traces over TCP
Configure your application tracers to emit traces:
After configuring your Datadog Agent to collect traces and giving your application pods the configuration on where to send traces, install the Datadog tracer into your applications to emit the traces. Once this is done, the tracer automatically sends the traces to the appropriate DD_AGENT_HOST endpoint.
Warning: The hostPort parameter opens a port on your host. Make sure your firewall only allows access from your applications or trusted sources. If your network plugin doesn’t support hostPorts, add hostNetwork: true in your Agent pod specifications. This shares the network namespace of your host with the Datadog Agent. This also means that all ports opened on the container are opened on the host. If a port is used both on the host and in your container, they conflict (since they share the same network namespace) and the pod does not start. Some Kubernetes installations do not allow this.
Update your datadog-values.yaml file with the following APM configuration:
datadog:apm:portEnabled:trueport:8126# default
After making your changes, upgrade your Datadog Helm chart using the following command:
Warning: The datadog.apm.portEnabled parameter opens a port on your host. Make sure your firewall only allows access from your applications or trusted sources. If your network plugin doesn’t support hostPorts, add hostNetwork: true in your Agent pod specifications. This shares the network namespace of your host with the Datadog Agent. This also means that all ports opened on the container are opened on the host. If a port is used both on the host and in your container, they conflict (since they share the same network namespace) and the pod does not start. Some Kubernetes installations do not allow this.
APM environment variables
Set additional APM environment variables under override.nodeAgent.containers.trace-agent.env:
Configure resources for the Agent to ignore. Format should be comma separated, regular expressions. For example: GET /ignore-me,(GET|POST) /and-also-me
DD_APM_LOG_FILE
Path to file where APM logs are written.
DD_APM_CONNECTION_LIMIT
Maximum connection limit for a 30 second time window. Default: 2000
DD_APM_ADDITONAL_ENDPOINTS
Send data to multiple endpoints and/or with multiple API keys. See Dual Shipping.
DD_APM_DEBUG_PORT
Port for the debug endpoints for the Trace Agent. Set to 0 to disable the server. Default: 5012.
DD_BIND_HOST
Set the StatsD and receiver hostname.
DD_DOGSTATSD_PORT
For tracing over TCP, set the DogStatsD port.
DD_ENV
Sets the global env for all data emitted by the Agent. If env is not present in your trace data, this variable is used.
DD_HOSTNAME
Manually set the hostname to use for metrics if autodetection fails, or when running the Datadog Cluster Agent.
DD_LOG_LEVEL
Set the logging level. Values: trace, debug, info, warn, error, critical, off
DD_PROXY_HTTPS
Set up the URL for the proxy to use.
Further Reading
Additional helpful documentation, links, and articles: