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.12 or later. You'll also need to set your
$GOPATH
and have$GOPATH/bin
in your path. - Python 2.7 or 3.x along with development libraries.
- Python dependencies. You may install these with
pip install -r requirements.txt
This will also pull in Invoke if not yet installed. - CMake version 3.12 or later
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
parameter
--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 master
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 project's dependencies:
invoke deps
. Make sure that$GOPATH/bin
is in your$PATH
otherwise this step might fail. - Build the
rtloader
dependency withinvoke rtloader.build && invoke rtloader.install
. You will need CMake installed and a C++ compiler for this to work.rtloader
is in charge of loading and running Python. By defaultrtloader
will be built for Python2, but you can choose which versions of Python you want to support:invoke rtloader.build -p 2
for Python2 onlyinvoke rtloader.build -p 3
for Python3 onlyinvoke rtloader.build -p 2,3
for both Python2 and Python3
- Create a development
datadog.yaml
configuration file indev/dist/datadog.yaml
, containing a valid API key:api_key: <API_KEY>
- Build the agent with
invoke agent.build --build-exclude=systemd
. You can specify a custom Python location for the agent (useful when using virtualenvs):invoke agent.build --python-home-2=$GOPATH/src/github.com/DataDog/datadog-agent/venv2 --python-home-3=$GOPATH/src/github.com/DataDog/datadog-agent/venv3
. Runninginvoke 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/dist
tobin/agent/dist
. Seehttps://github.com/DataDog/datadog-agent/blob/master/dev/dist/README.md
for more information.
- Discards any changes done in
Please refer to the Agent Developer Guide for more details.
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.