开源插件开发引导
了解 LoongCollector 插件
LoongCollector 插件的实现原理、整体架构、系统设计等介绍,请参考插件系统。
原生插件开发流程(C++语言)
LoongCollector 原生插件的开发主要有以下步骤:
- 创建Issue,描述开发插件功能,会有社区同学参与讨论插件开发的可行性,如果社区review 通过,请参考步骤2继续进行。
- 开发对应插件,可以参考以下文档:
- 进行单元测试或 E2E 测试,请参考 单元测试 与 E2E测试。
- 提交Pull Request。
扩展插件开发流程(go语言)
LoongCollector 插件的开发主要有以下步骤:
- 创建Issue,描述开发插件功能,会有社区同学参与讨论插件开发的可行性,如果社区review 通过,请参考步骤2继续进行。
- 实现相应接口。
- 通过init函数注册插件。
- 将插件加入插件引用配置文件的
common配置节;若仅运行于指定系统,请添加到linux或windows。构建时会根据该文件生成plugins/all/all.go(含all_linux.go/all_windows.go),请勿手改生成文件;改完后执行make all(或你常用的构建目标)以重新生成并完成链接。 - 进行单元测试或 E2E 测试,请参考 单元测试 与 E2E测试。
- 使用 make lint 检查代码规范。
- 提交Pull Request。
在开发时,Logger 接口和自监控指标接口或许能对您有所帮助。此外,可以使用纯插件模式启动 LoongCollector,用于对插件进行轻量级测试。
Go 侧插件注册表与 Add*Creator 定义见仓库 pkg/pipeline/plugin.go;各插件类型的 V1 / V2 扩展接口见同目录下的 input.go、processor.go、aggregator.go、flusher.go(旧文档仅描述 V1 时,请以源码为准)。
更详细的开发细节,请参考:
- 如何开发扩展Input插件
- 如何开发扩展Processor插件
- 如何开发扩展Aggregator插件
- 如何开发扩展Flusher插件
- 如何开发扩展Extension插件
- 插件配置项基本原则
- 如何开发外部私有插件
- 如何自定义构建产物中默认包含的插件
文档撰写流程
开发完成后,可以参考如何生成插件文档生成插件的使用文档,也可以手动编写插件文档。
文档的编写主要有如下步骤: