贡献 Beats
编辑贡献 Beats
编辑如果您有想贡献的错误修复或新功能,请首先在 论坛 上创建一个主题。可能有人已经在处理这个问题,或者在您实施更改之前应该了解一些特殊问题。
我们很乐意与贡献者合作,以使他们的代码被接受。解决问题的方法有很多,在编写太多代码之前找到最佳方法非常重要。提交代码后,请查看 Elastic 贡献者计划,您可以在其中因贡献而获得积分和奖励。
贡献到任何 Elastic 代码库的过程都是类似的。
贡献步骤
编辑在拉取请求中,描述您的更改内容,并提及与拉取请求相关的任何错误/问题。请还向 CHANGELOG.next.asciidoc 添加更改日志条目。
设置您的开发环境
编辑Beats 是 Go 程序,因此请安装 Go 的 1.22.9 版本,该版本用于 Beats 开发。
在 安装 Go 后,设置 GOPATH 环境变量以指向您的工作区位置,并确保 $GOPATH/bin
在您的 PATH 中。
安装适当的 Go 版本以与 Beats 一起工作的一种确定性方法是使用 GVM Go 版本管理器。Mac 用户的示例如下:
gvm use 1.22.9 eval $(gvm 1.22.9)
然后您可以克隆 Beats git 仓库
mkdir -p ${GOPATH}/src/github.com/elastic git clone https://github.com/elastic/beats ${GOPATH}/src/github.com/elastic/beats
如果您有多个 go 路径,请使用 ${GOPATH%%:*}
代替 ${GOPATH}
。
Beats 开发人员主要使用 Mage 进行开发。您可以使用 make 目标安装 mage
make mage
然后您可以使用 Mage 编译特定的 Beat。例如,对于 Filebeat
cd beats/filebeat mage build
您可以使用以下命令列出所有可用的 mage 目标:
mage -l
某些 Beats 可能需要额外的开发需求,在这种情况下,您会在 Beat 目录中找到一个 CONTRIBUTING.md 文件。
我们在 beats 代码库中使用 EditorConfig 文件来标准化不同的编辑器如何处理我们文件中的空格、行尾和其他编码样式。大多数流行的编辑器都有 EditorConfig 插件,我们强烈建议您安装它。
更新脚本
编辑Beats 使用基于 Python、make 和 mage 的各种脚本生成配置文件和文档。请确保使用 .python-version 文件中列出的 Python 版本。
更新生成文件的首要命令是:
make update
每个 Beat 都有自己的 update
目标(对于 make
和 mage
),以及代码库根目录中的主 update
。如果 PR 添加或删除了依赖项,请在根 beats
目录中运行 make update
。
另一个命令正确格式化 go 源文件并添加版权标头
make fmt
在提交 PR 之前应运行这两个命令。您可以使用 make help
查看所有可用的 make 目标。
这些命令具有以下依赖项:
Python venv 模块包含在 Python 3 的标准库中。在 Debian/Ubuntu 系统上,它还需要安装 python3-venv
包,其中包含额外的支持脚本。
sudo apt-get install python3-venv
选择构建目标
编辑Beats 使用 make release
目标构建。默认情况下,make 将从有限数量的预设构建目标中进行选择:
- darwin/amd64
- darwin/arm64
- linux/amd64
- windows/amd64
您可以使用 PLATFORMS
环境变量更改构建目标。使用 PLATFORMS
变量设置的目标可以是 GOOS 值,也可以是 GOOS/arch 对。例如,linux
和 linux/amd64
都是有效的目标。您可以选择多个目标,并且 PLATFORMS
列表用空格分隔,例如 darwin windows
将在所有受支持的 darwin 和 windows 架构上构建。此外,您可以通过在给定目标前添加 +
或 -
来添加或删除构建目标列表。例如:+bsd
或 -darwin
。
您可以使用 go tool dist list
找到受支持的构建目标的完整列表。
代码风格检查
编辑Beats 使用 golangci-lint。您可以针对您的更改运行预配置的代码风格检查器:
mage llc
llc
代表 Lint Last Change
,它包含在最后一次提交(如果您在 main
分支上)或在您的功能分支和 main
分支之间的差异中更改的所有 Go 文件。
预计有时会要求贡献者修复与他们的贡献无关的代码风格检查器问题,因为代码风格检查器是在某些文件的更改之后引入的。
您还可以针对单个包运行代码风格检查器,例如 filbeat 命令包:
golangci-lint run ./filebeat/cmd/...
测试
编辑您可以使用以下命令运行整个测试套件:
make testsuite
运行测试套件具有以下要求:
- Python >= 3.7
- Docker >= 1.12
- Docker-compose >= 1.11
有关更多详细信息,请参阅 测试 指南。
文档
编辑每个 Beat 的主要文档位于 <beatname>/docs
下,并基于 AsciiDoc。Beats 文档还广泛使用条件语句和内容重用,以确保一致性和准确性。在贡献文档之前,请阅读以下资源:
依赖项
编辑为了创建 Beats,我们依赖于 Golang 库和其他外部工具。
其他依赖项
编辑除了 Go 库之外,我们还使用开发工具为输入和处理器生成解析器。
运行 go generate
需要以下软件包:
Auditbeat
编辑- FlatBuffers >= 1.9
Filebeat
编辑- Graphviz >= 2.43.0
- Ragel >= 6.10
更改日志
编辑要随时了解针对社区开发者的官方 Beats 的更改,请在此处关注开发者更改日志 此处。