datadog-agent

module
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2020 License: Apache-2.0

README

Datadog Agent

CircleCI Build status 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.13 or later. You'll also need to set your $GOPATH and have $GOPATH/bin in your path.
  • Python 2.7 or 3.7+ 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 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 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:

  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 project's dependencies: invoke deps. Make sure that $GOPATH/bin is in your $PATH otherwise this step might fail.
  4. Create a development datadog.yaml configuration file in dev/dist/datadog.yaml, containing a valid API key: api_key: <API_KEY>
  5. 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 --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/dist to bin/agent/dist. See https://github.com/DataDog/datadog-agent/blob/master/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 refer to the Agent Developer Guide for more details. For instructions on setting up a windows dev environment, refer to Windows Dev Env.

Run

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.

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.

Directories

Path Synopsis
cmd
agent
The Datadog Agent faithfully collects events and metrics and brings them to Datadog on your behalf.
The Datadog Agent faithfully collects events and metrics and brings them to Datadog on your behalf.
agent/api
Package api implements the agent IPC api.
Package api implements the agent IPC api.
agent/api/agent
Package agent implements the api endpoints for the `/agent` prefix.
Package agent implements the api endpoints for the `/agent` prefix.
agent/api/check
Package check implements the api endpoints for the `/check` prefix.
Package check implements the api endpoints for the `/check` prefix.
agent/api/pb
Package pb is a reverse proxy.
Package pb is a reverse proxy.
agent/app
Package app implements the Agent main loop, orchestrating all the components and providing the command line interface.
Package app implements the Agent main loop, orchestrating all the components and providing the command line interface.
agent/app/standalone
Package standalone provides utility functions for Agent CLI commands that set up a new in-process Agent runtime (ex: check, jmx commands), as opposed to CLI commands that query a running Agent's IPC API.
Package standalone provides utility functions for Agent CLI commands that set up a new in-process Agent runtime (ex: check, jmx commands), as opposed to CLI commands that query a running Agent's IPC API.
agent/clcrunnerapi
Package clcrunnerapi implements the clc runner IPC api.
Package clcrunnerapi implements the clc runner IPC api.
agent/clcrunnerapi/v1
Package v1 implements the api endpoints for the `/api/v1` prefix.
Package v1 implements the api endpoints for the `/api/v1` prefix.
agent/common
Package common provides a set of common symbols needed by different packages, to avoid circular dependencies.
Package common provides a set of common symbols needed by different packages, to avoid circular dependencies.
cluster-agent/api
Package api implements the agent IPC api.
Package api implements the agent IPC api.
cluster-agent/api/agent
Package agent implements the api endpoints for the `/agent` prefix.
Package agent implements the api endpoints for the `/agent` prefix.
security-agent/api
Package api implements the agent IPC api.
Package api implements the agent IPC api.
security-agent/api/agent
Package agent implements the api endpoints for the `/agent` prefix.
Package agent implements the api endpoints for the `/agent` prefix.
comp
core/config Module
core/log Module
core/secrets Module
core/status Module
def Module
internal
pkg
collector/check/defaults
Package defaults provides common defaults used in agent checks
Package defaults provides common defaults used in agent checks
collector/corechecks/cluster
Package cluster provides core checks for cluster level checks, used by the Datadog Cluster Agent.
Package cluster provides core checks for cluster level checks, used by the Datadog Cluster Agent.
collector/corechecks/containers
Package containers provides core checks for containers and orchestrators
Package containers provides core checks for containers and orchestrators
collector/corechecks/net
Package net provides core checks for networking
Package net provides core checks for networking
collector/corechecks/systemd
Package systemd provides core checks for systemd
Package systemd provides core checks for systemd
collector/metadata
Package metadata implements specific Metadata Collectors for the Agent.
Package metadata implements specific Metadata Collectors for the Agent.
compliance
Package compliance defines common interfaces and types for Compliance Agent
Package compliance defines common interfaces and types for Compliance Agent
compliance/agent
Package agent implements the Compliance Agent entrypoint
Package agent implements the Compliance Agent entrypoint
compliance/checks
Package checks implements Compliance Agent checks
Package checks implements Compliance Agent checks
logs/pb
Package pb is a generated protocol buffer package.
Package pb is a generated protocol buffer package.
metadata/ecs
Package ecs provides functionalities to collect ECS metadata
Package ecs provides functionalities to collect ECS metadata
metadata/externalhost
Package externalhost implements the External Host Tags metadata provider.
Package externalhost implements the External Host Tags metadata provider.
trace/event
Package event contains functionality related to APM event extraction from traces.
Package event contains functionality related to APM event extraction from traces.
trace/metrics
Package metrics exposes utilities for setting up and using a sub-set of Datadog's dogstatsd client.
Package metrics exposes utilities for setting up and using a sub-set of Datadog's dogstatsd client.
trace/metrics/timing
Package timing is used to aggregate timing calls within hotpaths to avoid using repeated statsd calls.
Package timing is used to aggregate timing calls within hotpaths to avoid using repeated statsd calls.
trace/obfuscate
Package obfuscate implements quantizing and obfuscating of tags and resources for a set of spans matching a certain criteria.
Package obfuscate implements quantizing and obfuscating of tags and resources for a set of spans matching a certain criteria.
trace/pb
Package pb contains the data structures used by the trace agent to communicate with tracers and the Datadog API.
Package pb contains the data structures used by the trace agent to communicate with tracers and the Datadog API.
trace/sampler
Package sampler contains all the logic of the agent-side trace sampling Currently implementation is based on the scoring of the "signature" of each trace Based on the score, we get a sample rate to apply to the given trace Current score implementation is super-simple, it is a counter with polynomial decay per signature.
Package sampler contains all the logic of the agent-side trace sampling Currently implementation is based on the scoring of the "signature" of each trace Based on the score, we get a sample rate to apply to the given trace Current score implementation is super-simple, it is a counter with polynomial decay per signature.
trace/stats/quantile
Package quantile implements "Space-Efficient Online Computation of Quantile Summaries" (Greenwald, Khanna 2001): http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf This implementation is backed by a skiplist to make inserting elements into the summary faster.
Package quantile implements "Space-Efficient Online Computation of Quantile Summaries" (Greenwald, Khanna 2001): http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf This implementation is backed by a skiplist to make inserting elements into the summary faster.
trace/test
Package test provides utilities for running integration tests on the trace agent.
Package test provides utilities for running integration tests on the trace agent.
trace/test/testutil
Package testutil provides easy ways to generate some random or deterministic data that can be use for tests or benchmarks.
Package testutil provides easy ways to generate some random or deterministic data that can be use for tests or benchmarks.
trace/traceutil
Package traceutil contains functions for extracting and processing traces.
Package traceutil contains functions for extracting and processing traces.
util/containers/providers/windows
Package windows We need a file in this package as it's referenced by a file built on windows
Package windows We need a file in this package as it's referenced by a file built on windows
util/ecs
Package ecs provides metadata collection when the Agent runs on the ECS platform
Package ecs provides metadata collection when the Agent runs on the ECS platform
util/ecs/metadata
Package metadata provides clients for Metadata APIs exposed by the ECS agent.
Package metadata provides clients for Metadata APIs exposed by the ECS agent.
util/executable
Package executable provides information on the executable that started the process
Package executable provides information on the executable that started the process
util/hostname/validate
Package validate provides hostname validation helpers
Package validate provides hostname validation helpers
api Module
conf Module
config/env Module
config/logs Module
config/model Module
config/remote Module
config/setup Module
config/utils Module
gohai Module
logs/sds Module
logs/sources Module
obfuscate Module
otlp/model Module
proto Module
security/secl Module
tagger/types Module
tagset Module
trace Module
trace/export Module
util/backoff Module
util/buf Module
util/cgroups Module
util/fxutil Module
util/grpc Module
util/optional Module
util/pointer Module
util/scrubber Module
util/sort Module
util/system Module
util/uuid Module
rtloader
test
fakeintake Module
new-e2e Module
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL