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:
- Go 1.17 or later. You'll also need to set your
$GOPATHand have$GOPATH/binin your path. - Python 3.7+ along with development libraries for tooling. You will also need Python 2.7 if you are building the Agent with Python 2 support.
- Python dependencies. You may install these with
pip install -r requirements.txtThis will also pull in Invoke if not yet installed. - CMake version 3.12 or later and a C++ compiler
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 invoke agent.build
parameters --python-home-2=<venv_path> and/or --python-home-3=<venv_path>
(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
listed in requirements.txt.
Note: You may have previously installed invoke via brew on MacOS, or pip in
any other platform. We recommend you use the version pinned in the requirements
file for a smooth development/build experience.
Builds and tests are orchestrated with invoke, type invoke --list on a shell
to see the available tasks.
To start working on the Agent, you can build the main branch:
-
Checkout the repo:
git clone https://github.com/DataDog/datadog-agent.git $GOPATH/src/github.com/DataDog/datadog-agent. -
cd into the project folder:
cd $GOPATH/src/github.com/DataDog/datadog-agent. -
Install go tools:
invoke install-tools. -
Create a development
datadog.yamlconfiguration file indev/dist/datadog.yaml, containing a valid API key:api_key: <API_KEY> -
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 2for Python2 onlyinvoke agent.build --python-runtimes 3for Python3 onlyinvoke agent.build --python-runtimes 2,3for 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 \ --python-home-2=$GOPATH/src/github.com/DataDog/datadog-agent/venv2 \ --python-home-3=$GOPATH/src/github.com/DataDog/datadog-agent/venv3 .Running
invoke agent.build:- Discards any changes done in
bin/agent/dist. - Builds the Agent and writes the binary to
bin/agent/agent. - Copies files from
dev/disttobin/agent/dist. Seehttps://github.com/DataDog/datadog-agent/blob/main/dev/dist/README.mdfor 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 removeCMakeCache.txtfromrtloaderfolder withrm rtloader/CMakeCache.txt.
Please refer to the Agent Developer Guide for more details. For instructions on setting up a windows dev environment, refer to Windows Dev Env.
Run tests using invoke test. During development, add the --skip-linters option to skip straight to the tests.
invoke test --targets=./pkg/aggregator/... --skip-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 --skip-linters
You can run the agent with:
./bin/agent/agent run -c bin/agent/dist/datadog.yaml
The file bin/agent/dist/datadog.yaml is copied from dev/dist/datadog.yaml by invoke agent.build and must contain a valid api key.
You'll find information and help on how to contribute code to this project under
the docs/dev directory of the present repo.
The Datadog agent user space components are licensed under the Apache License, Version 2.0. The BPF code is licensed under the General Public License, Version 2.0.