项目作者: DataDog

项目描述 :
Datadog Agent
高级语言: Go
项目地址: git://github.com/DataDog/datadog-agent.git
创建时间: 2016-01-19T17:40:41Z
项目社区:https://github.com/DataDog/datadog-agent

开源协议:Other

下载


Datadog Agent

Windows unit tests
Coverage status
GoDoc
Go Report Card

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.

Documentation

The general documentation of the project, including instructions for installation
and development, is located under the docs directory of the present repo.

Getting started

To build the Agent you need:

  • Go 1.23. You’ll also need to set your $GOPATH and have $GOPATH/bin in your path.
  • Python 3.12 along with development libraries for tooling.
  • Python dependencies. You may install these with pip install dda.
  • CMake version 3.15 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 dda inv agent.build
parameters --python-home-3=<venv_path> 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 pip in
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 .zshrc file.
echo "source <(dda inv --print-completion-script zsh)" >> ~/.zshrc

Builds and tests are orchestrated with invoke, type dda inv --list on a shell
to see the available tasks.

To start working on the Agent, you can build the main branch:

  1. Checkout the repo: git clone https://github.com/DataDog/datadog-agent.git $GOPATH/src/github.com/DataDog/datadog-agent.
  2. cd into the project folder: cd $GOPATH/src/github.com/DataDog/datadog-agent.
  3. Install go tools: dda inv 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).
  4. 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).
  5. Build the agent with dda inv agent.build --build-exclude=systemd.

    You can specify a custom Python location for the agent (useful when using
    virtualenvs):

    1. dda inv agent.build \
    2. --python-home-3=$GOPATH/src/github.com/DataDog/datadog-agent/venv3

    Running dda inv 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 to bin/agent/dist. See 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 CMakeCache.txt from rtloader folder with rm rtloader/CMakeCache.txt.

      Please note that the trace agent needs to be built and run separately.

Please refer to the Agent Developer Guide for more details. For instructions
on setting up a windows dev environment, refer to Windows Dev Env.

Testing

Run unit tests using dda inv test.

  1. dda inv test --targets=./pkg/aggregator

You can also use dda inv linter.go to run just the go linters.

  1. dda inv linter.go

When testing code that depends on rtloader, build and install it first.

  1. dda inv rtloader.make && dda inv rtloader.install
  2. dda inv test --targets=./pkg/collector/python

Run

You can run the agent with:

  1. ./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 dda inv agent.build and must contain a valid api key.

Run a JMX check

In order to run a JMX based check locally, you must have:

  1. A copy of a JMXFetch jar copied to dev/dist/jmx/jmxfetch.jar
  2. java available on your $PATH

For detailed instructions, see JMX checks

Contributing code

You’ll find information and help on how to contribute code to this project under
the docs/dev directory of the present repo.

License

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.