准备edit

Packetbeat是用 Go 编写的,所以安装 Go 并了解其基础知识是理解本指南的先决条件。但是,如果您不是 Go 专家也不要担心。Go 是一种相对较新的语言,只有很少的人是专家。事实上,许多人通过为 Packetbeat 和 libbeat 做贡献来学习 Go,包括最初的 Packetbeat 作者。

您还需要充分理解要添加支持的线协议。对于标准协议或开源项目中使用的协议,您通常可以找到详细的规范和示例源代码。Wireshark 是一个非常有用的工具,可以帮助您理解它支持的协议的内部机制。

在某些情况下,您甚至可以使用现有的库来执行协议的实际解析和解码。如果特定协议具有具有足够宽松许可的 Go 实现,您可能可以使用它来解析和解码单个消息,而不是编写自己的解析器。

在开始之前,请阅读 为 Beats 做贡献

克隆和编译edit

在您 安装 Go 并设置 GOPATH 环境变量以指向您首选的工作空间位置后,您可以使用以下命令克隆 Packetbeat

$ mkdir -p ${GOPATH}/src/github.com/elastic
$ cd ${GOPATH}/src/github.com/elastic
$ git clone https://github.com/elastic/beats.git

注意:如果您有多个 go 路径,请使用 ${GOPATH%%:*}`代替 `${GOPATH}

然后,您可以使用以下命令编译它

$ cd beats
$ make

请注意,克隆的位置很重要。如果您更喜欢在 GOPATH 环境之外工作,您可以克隆到另一个目录,并只创建一个指向 $GOPATH/src/github.com/elastic/ 目录的符号链接。

分支和合并edit

我们建议您为为 Packetbeat 做贡献采用以下工作流程

  • 将 Beats 分支到您自己的 GitHub 帐户
  • $GOPATH/src/github.com/elastic/beats 文件夹中,将您的分支添加为新的远程。例如(将 tsg 替换为您的 GitHub 帐户)
$ git remote add tsg [email protected]:tsg/beats.git
  • 为您的工作创建一个新的分支
$ git checkout -b cool_new_protocol
  • 根据需要提交,然后使用以下命令推送到您的私有分支
$ git push --set-upstream tsg cool_new_protocol
  • 当您准备好提交 PR 时,只需从 GitHub Web 界面进行提交即可。随时尽早提交您的 PR。您仍然可以在创建 PR 后向分支添加提交。尽早提交 PR 使我们有更多时间提供反馈,并可能帮助您解决问题。