构建集成的技巧
编辑构建集成的技巧编辑
本节提供了一组供开发者改进其正在开发的集成的技巧。它结合了提示、指南、建议和技巧。请将本节视为一个实时文档,它可能会在未来根据整个平台(Elastic 包注册表、Elastic Agent 和 Kibana)的业务或技术需求而不断演变。
elastic-package编辑
elastic-package 是一个用 Go 编写的命令行工具,用于开发 Elastic 包。它可以帮助您对包进行 lint、格式化、测试和构建。这是开发集成的官方构建工具。请参阅 入门 部分以快速了解并查看其功能。
如果您需要在正确的版本(与 CI 使用的版本相同)中使用 elastic-package 的修订版,该版本在 go.mod
中定义,请使用以下命令(在 Integrations 存储库中)
$ go build github.com/elastic/elastic-package $ ./elastic-package help
新的集成编辑
清单文件编辑
-
将初始版本设置为
0.1.0
。使用较低版本(如
0.0.1
)标记集成意味着它处于非常早期的阶段,并且很可能根本无法工作。它可能处于部分开发状态。 -
为集成选择一个或两个类别。
可用的类别列表在包注册表源代码中:https://github.com/elastic/package-registry/blob/1dd3e7c4956f7e34809bb87acae50b2a63cd7ad0/packages/package.go#L29-L55
-
确保 Kibana 的版本条件设置为
+^7.10.0+
而不是>=7.10.0
。否则,该包也会出现在 8.0.0 中,但我们今天不知道它是否真的与 >= 8.0.0 兼容。conditions: kibana.version: '^7.10.0'
-
设置正确的包所有者(Github 团队或个人帐户)
团队的良好候选者:
elastic/integrations
、elastic/security-service-integrations
相应地更新
.github/CODEOWNERS
文件。
所有集成编辑
开发编辑
-
当您开发集成并希望将更改传播到包注册表时,首先重新构建包
$ cd packages/apache $ elastic-package build
然后,重新构建并重新部署包注册表
在 Integrations 存储库中执行以下命令非常重要。
$ elastic-package stack up -v -d --services package-registry
解释:重新构建并重新启动包含包注册表的容器比使用挂载的卷快得多。
代码审阅者编辑
-
Ping "Team:Integrations"。
使用团队标签通知相关的团队成员有关即将到来的拉取请求。
清单文件编辑
-
配置选项的描述应尽可能简短。
请记住仅保留有关配置选项的有意义的信息。
好的候选者:对产品配置的引用、可接受的字符串值、解释。
不好的候选者:从 A、B、C、D、… X、Y、Z 数据集收集指标。
-
描述应该是人类可读的。
尝试改写类似这样的句子:收集 foo_Bar3 指标,改为收集 Foo Bar 指标。
-
描述应该易于理解。
简化句子,如果不需要,不要提供有关输入的信息。
不好的候选者:收集应用程序日志(日志输入)
好的候选者:收集应用程序日志、收集应用程序的标准日志
-
字母大小写对于屏幕截图描述很重要。
这些描述在 Kibana UI 中可视化。最好让它们保持简洁和一致。
不好的候选者:在 ec2 机器上运行 filebeat
好的候选者:Filebeat 在 AWS EC2 机器上运行
-
如果包依赖于某些功能或字段,而这些功能或字段仅在特定堆栈或 Beats 版本中可用,则应在包的
manifest.yml
中相应地调整kibana.version
条件。conditions: kibana.version: '^8.7.0'
具有上述条件的包版本仅在 Kibana 版本 >=8.7.0 中可用。
使用未发布版本的 Kibana 更改仪表板和可视化可能是不安全的,因为 Kibana 团队可能会对 Kibana 代码以及数据模型进行更改。无法保证您的更改在发布新的 Kibana 版本时不会被破坏。
CI编辑
-
在本地运行
elastic-package check
和elastic-package test
。如果您想验证您的集成是否按预期工作,您可以执行与 CI 相同的步骤
$ cd packages/apache $ elastic-package check -v $ elastic-package test -v
请记住,
elastic-package test
命令需要运行的实时集群和导出的环境变量。可以使用eval "$(elastic-package stack shellinit)"
设置环境变量。
字段编辑
-
删除空的字段文件。
如果您发现字段文件(例如
package-fields.yml
)不包含任何字段定义或仅定义根,请随时将其删除。不好的候选者
- name: mypackage.mydataset type: group