Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/datadog/datadog-agent
Main repository for Datadog Agent
https://github.com/datadog/datadog-agent
apm-agent apm-instrumentation datadog distributed-tracing go logging metrics monitoring observability open-telemetry otel profiling tracing
Last synced: 9 days ago
JSON representation
Main repository for Datadog Agent
- Host: GitHub
- URL: https://github.com/datadog/datadog-agent
- Owner: DataDog
- License: apache-2.0
- Created: 2016-01-19T17:40:41.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2024-04-13T23:05:54.000Z (7 months ago)
- Last Synced: 2024-04-14T03:37:05.591Z (7 months ago)
- Topics: apm-agent, apm-instrumentation, datadog, distributed-tracing, go, logging, metrics, monitoring, observability, open-telemetry, otel, profiling, tracing
- Language: Go
- Homepage: https://docs.datadoghq.com/
- Size: 685 MB
- Stars: 2,629
- Watchers: 510
- Forks: 1,138
- Open Issues: 1,298
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG-DCA.rst
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Support: SUPPORT.md
Awesome Lists containing this project
README
# Datadog Agent
[![CircleCI](https://circleci.com/gh/DataDog/datadog-agent/tree/main.svg?style=svg)](https://circleci.com/gh/DataDog/datadog-agent/tree/main)
[![Windows unit tests](https://github.com/DataDog/datadog-agent/actions/workflows/windows-unittests.yml/badge.svg)](https://github.com/DataDog/datadog-agent/actions/workflows/windows-unittests.yml)
[![Coverage status](https://codecov.io/github/DataDog/datadog-agent/coverage.svg?branch=main)](https://codecov.io/github/DataDog/datadog-agent?branch=main)
[![GoDoc](https://godoc.org/github.com/DataDog/datadog-agent?status.svg)](https://godoc.org/github.com/DataDog/datadog-agent)
[![Go Report Card](https://goreportcard.com/badge/github.com/DataDog/datadog-agent)](https://goreportcard.com/report/github.com/DataDog/datadog-agent)The present repository contains the source code of the Datadog Agent version 7 and version 6. Please refer to the [Agent user documentation](https://docs.datadoghq.com/agent/) 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](https://app.datadoghq.com/account/settings/agent/latest?platform=overview)
**Note:** the source code of Datadog Agent v5 is located in the
[dd-agent](https://github.com/DataDog/dd-agent) repository.## Documentation
The general documentation of the project, including instructions for installation
and development, is located under [the docs directory](docs) of the present repo.## Getting started
To build the Agent you need:
* [Go](https://golang.org/doc/install) 1.22 or later. You'll also need to set your `$GOPATH` and have `$GOPATH/bin` in your path.
* Python 3.11+ 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.txt`
This will also pull in [Invoke](http://www.pyinvoke.org) 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=` and/or `--python-home-3=`
(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.**Note:** You can enable auto completion for invoke tasks. Use the command below to add the appropriate line to your `.zshrc` file.
`echo "source <(inv --print-completion-script zsh)" >> ~/.zshrc`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:
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: `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).
4. Create a development `datadog.yaml` configuration file in `dev/dist/datadog.yaml`, containing a valid 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 `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/venv3Running `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/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](https://docs.datadoghq.com/tracing/trace_collection/) needs to be built and run separately.
Please refer to the [Agent Developer Guide](docs/dev/README.md) for more details. For instructions
on setting up a windows dev environment, refer to [Windows Dev Env](devenv).## Testing
Run unit tests using `invoke test`.
```
invoke test --targets=./pkg/aggregator
```You can also use `invoke linter.go` to run just the go linters.
```
invoke linter.go
```When testing code that depends on [rtloader](/rtloader), build and install it first.
```
invoke rtloader.make && invoke rtloader.install
invoke test --targets=./pkg/collector/python
```## 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.
### 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](./docs/dev/checks/jmxfetch.md)
## Contributing code
You'll find information and help on how to contribute code to this project under
[the `docs/dev` directory](docs/dev) of the present repo.## License
The Datadog agent user space components are licensed under the
[Apache License, Version 2.0](LICENSE). The BPF code is licensed
under the [General Public License, Version 2.0](pkg/ebpf/c/COPYING).