Agent Architecture

Agent architecture

Agent 6 and 7 are composed of a main process responsible for collecting infrastructure metrics and logs, and receiving DogStatsD metrics. The main components to this process are:

  • The Collector, which runs checks and collects metrics.
  • The Forwarder, which sends payloads to Datadog.

Two optional processes are spawned by the Agent if enabled in the datadog.yaml configuration file:

  • The APM Agent is a process that collects traces. It is enabled by default.
  • The Process Agent is a process that collects live process information. By default, the Process Agent only collects available containers, otherwise it is disabled.

On Windows the services are listed as:

ServiceDescription
DatadogAgentDatadog Agent
datadog-trace-agentDatadog Trace Agent
datadog-process-agentDatadog Process Agent

By default the Agent binds three ports on Linux and four ports on Windows and macOS:

PortDescription
5000Exposes runtime metrics about the Agent.
5001Used by the Agent CLI and GUI to send commands and pull information from the running Agent.
5002Serves the GUI server on Windows and macOS.
8125Used for the DogStatsD server to receive external metrics.

For information on configuring the ports, see Network Traffic.

Collector

The collector gathers all standard metrics every 15 seconds. Agent 6 embeds a Python 2.7 interpreter to run integrations and custom checks.

Forwarder

The Agent forwarder sends metrics over HTTPS to Datadog. Buffering prevents network splits from affecting metrics reporting. Metrics are buffered in memory until a limit in size or number of outstanding send requests is reached. Afterward, the oldest metrics are discarded to keep the forwarder’s memory footprint manageable. Logs are sent to Datadog over an SSL-encrypted TCP connection.

DogStatsD

In Agent 6, DogStatsD is a Golang implementation of Etsy’s StatsD metric aggregation daemon. DogStatsD receives and rolls up arbitrary metrics over UDP or a UNIX socket, allowing custom code to be instrumented without adding latency. Learn more about DogStatsD.

Further reading

Additional helpful documentation, links, and articles:

PREVIEWING: may/unit-testing