Datadog Agent
本仓库包含了 Datadog Agent 版本 7 和版本 6 的源代码。有关 Agent v5、Agent v6 和 Agent v7 之间差异的更多信息,请参阅 Agent 用户文档。
此外,我们还提供了预打包的二进制文件列表,方便安装,可以在这里查看。
注意:Datadog Agent v5 的源代码位于 dd-agent 仓库中。
文档
本项目的一般文档,包括安装和开发指南,位于当前仓库的 docs 目录 中。
快速开始
要构建 Datadog Agent,您需要:
- Go 1.23 或更高版本。您还需要设置
$GOPATH
并确保$GOPATH/bin
在您的路径中。 - Python 3.11+,以及开发工具所需的库。如果您要构建支持 Python 2 的 Agent,还需要 Python 2.7。
- Python 依赖项。可以通过
pip install -r requirements.txt
安装这些依赖项。此命令还会安装 Invoke(如果尚未安装)。 - CMake 版本 3.12 或更高版本,并且需要一个 C++ 编译器。
注意:建议您使用 Python 虚拟环境,以避免将 Agent 构建/开发依赖项污染全局的 Python 环境。您可以使用 virtualenv
创建虚拟环境,然后使用 invoke agent.build
参数 --python-home-3=<venv_path>
来使用虚拟环境中的解释器和库。默认情况下,该环境仅用于 requirements.txt
中列出的开发依赖项。
注意:如果您之前已经通过 brew 在 MacOS 上安装了 invoke
,或者在其他平台通过 pip
安装了 invoke
,我们建议您使用 requirements
文件中指定的版本,以获得顺利的开发/构建体验。
注意:您可以启用 invoke 任务的自动补全功能。使用以下命令将适当的行添加到您的 .zshrc
文件中:
echo "source <(inv --print-completion-script zsh)" >> ~/.zshrc
构建和测试是通过 invoke
协调的,您可以在 shell 中输入 invoke --list
查看可用任务。
要开始开发 Agent,您可以构建 main
分支:
- 克隆仓库:
git clone https://github.com/DataDog/datadog-agent.git $GOPATH/src/github.com/DataDog/datadog-agent
。 - 进入项目文件夹:
cd $GOPATH/src/github.com/DataDog/datadog-agent
。 - 安装 Go 工具:
invoke install-tools
(如果遇到超时错误,您可能需要在命令前加上GOPROXY=https://proxy.golang.org,https://goproxy.io,direct
环境变量)。 - 创建一个开发
datadog.yaml
配置文件,位于dev/dist/datadog.yaml
,并包含一个有效的 API 密钥:api_key: <API_KEY>
。您可以从一个空的文件开始,或者使用步骤 5 中 Agent 构建后生成的完整文件(位于构建完成后的cmd/agent/dist/datadog.yaml
)。 - 使用
invoke agent.build --build-exclude=systemd
构建 Agent。
您可以为 Agent 指定自定义的 Python 位置(在使用虚拟环境时很有用):
invoke agent.build \
--python-home-3=$GOPATH/src/github.com/DataDog/datadog-agent/venv3
运行 invoke agent.build
时:
- 丢弃
bin/agent/dist
中的任何更改。 - 构建 Agent,并将二进制文件写入
bin/agent/agent
。 - 将文件从
dev/dist
复制到bin/agent/dist
。有关更多信息,请参见 dev/dist 目录中的 README。
如果您构建的是较早版本的 Agent,可能会遇到错误 make: *** No targets specified and no makefile found. Stop.
。为解决此问题,您应删除 rtloader
文件夹中的 CMakeCache.txt
,使用 rm rtloader/CMakeCache.txt
。
请注意,追踪代理 需要单独构建和运行。
更多详细信息,请参阅 Agent 开发者指南。关于 Windows 开发环境的设置,请参见 Windows 开发环境。
测试
使用 invoke test
运行单元测试:
invoke test --targets=./pkg/aggregator
您还可以使用 invoke linter.go
只运行 Go linters:
invoke linter.go
测试依赖于 rtloader 的代码时,先构建并安装 rtloader:
invoke rtloader.make && invoke rtloader.install
invoke test --targets=./pkg/collector/python
运行
您可以使用以下命令运行 Agent:
./bin/agent/agent run -c bin/agent/dist/datadog.yaml
文件 bin/agent/dist/datadog.yaml
是通过 invoke agent.build
从 dev/dist/datadog.yaml
复制过来的,并且必须包含有效的 API 密钥。
运行 JMX 检查
为了在本地运行基于 JMX 的检查,您必须具备以下条件:
- 将 JMXFetch
jar
文件复制到dev/dist/jmx/jmxfetch.jar
- 确保
java
可在您的$PATH
中找到
有关详细说明,请参见 JMX 检查。
贡献代码
关于如何为本项目贡献代码的信息,请查看本仓库中的 docs/dev 目录。
许可证
Datadog Agent 用户空间组件采用 Apache License, Version 2.0 许可证。BPF 代码采用 General Public License, Version 2.0 许可证。
参考资料
https://github.com/DataDog/datadog-agent