贡献 Beats

编辑

如果您有想贡献的错误修复或新功能,请首先在 论坛 上创建一个主题。可能有人已经在处理这个问题,或者在您实施更改之前应该了解一些特殊问题。

我们很乐意与贡献者合作,以使他们的代码被接受。解决问题的方法有很多,在编写太多代码之前找到最佳方法非常重要。提交代码后,请查看 Elastic 贡献者计划,您可以在其中因贡献而获得积分和奖励。

贡献到任何 Elastic 代码库的过程都是类似的。

贡献步骤

编辑
  1. 请确保您已签署我们的 贡献者许可协议。我们并没有要求您将版权转让给我们,而是授予我们无限制分发您代码的权利。我们要求所有贡献者这样做,以向我们的用户保证代码的来源和持续存在。您只需要签署一次 CLA。
  2. 发送拉取请求!将您的更改推送到您的代码库分支,并使用我们的 拉取请求指南 提交拉取请求。新的 PR 将提交到主分支。Beats 核心团队将在必要时回滚您的 PR。

在拉取请求中,描述您的更改内容,并提及与拉取请求相关的任何错误/问题。请还向 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 目标(对于 makemage),以及代码库根目录中的主 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 对。例如,linuxlinux/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 的更改,请在此处关注开发者更改日志 此处