The present repository contains the source code of the Datadog Agent version 7 and version 6. Please refer to the Agent user documentation for information about differences between Agent v5, Agent v6 and Agent v7. Additionally, we provide a list of prepackaged binaries for an easy install process here
Note: the source code of Datadog Agent v5 is located in the dd-agent repository.
The general documentation of the project, including instructions for installation and development, is located under the docs directory of the present repo.
To build the Agent you need:
$GOPATH and have
$GOPATH/bin in your path.
pip install -r requirements.txt
This will also pull in Invoke if not yet installed.
Note: you may want to use a python virtual environment to avoid polluting your
system-wide python environment with the agent build/dev dependencies. You can
create a virtual environment using
virtualenv and then use the
(depending on the python versions you are using) to use the virtual environment's
interpreter and libraries. By default, this environment is only used for dev dependencies
Note: You may have previously installed
invoke via brew on MacOS, or
any other platform. We recommend you use the version pinned in the requirements
file for a smooth development/build experience.
Note: You can enable auto completion for invoke tasks. Use the command below to add the appropriate line to your
echo "source <(inv --print-completion-script zsh)" >> ~/.zshrc
Builds and tests are orchestrated with
invoke --list on a shell
to see the available tasks.
To start working on the Agent, you can build the
Checkout the repo:
git clone https://github.com/DataDog/datadog-agent.git $GOPATH/src/github.com/DataDog/datadog-agent.
cd into the project folder:
Install go tools:
invoke install-tools (if you have a timeout error, you might need to prepend the
GOPROXY=https://proxy.golang.org,https://goproxy.io,direct env var to the command).
Create a development
datadog.yaml configuration file in
dev/dist/datadog.yaml, containing a valid API key:
api_key: <API_KEY>. You can either start with an empty one or use the full one generated by the Agent build from Step 5 (located in
cmd/agent/dist/datadog.yaml after the build finishes).
Build the agent with
invoke agent.build --build-exclude=systemd.
By default, the Agent will be built to use Python 3 but you can select which Python version you want to use:
invoke agent.build --python-runtimes 2 for Python2 only
invoke agent.build --python-runtimes 3 for Python3 only
invoke agent.build --python-runtimes 2,3 for both Python2 and Python3
You can specify a custom Python location for the agent (useful when using virtualenvs):
invoke agent.build \
--python-runtimes 2,3 \
https://github.com/DataDog/datadog-agent/blob/main/dev/dist/README.md for more information.
If you built an older version of the agent, you may have the error
make: *** No targets specified and no makefile found. Stop.. To solve the issue, you should remove
rtloader folder with
Please note that the trace agent needs to be built and run separately.
Run unit tests using
invoke test --targets=./pkg/aggregator
You can also use
invoke lint-go to run just the go linters.
When testing code that depends on rtloader, build and install it first.
invoke rtloader.make && invoke rtloader.install
invoke test --targets=./pkg/collector/python
You can run the agent with:
./bin/agent/agent run -c bin/agent/dist/datadog.yaml
bin/agent/dist/datadog.yaml is copied from
invoke agent.build and must contain a valid api key.
In order to run a JMX based check locally, you must have:
jar copied to
java available on your
For detailed instructions, see JMX checks
You'll find information and help on how to contribute code to this project under
docs/dev directory of the present repo.