如何开发扩展Flusher插件
Flusher 插件与外部系统进行交互,将数据发送到外部,以下将从接口定义与案例2方面指导如何开发 Flusher 插件
Flusher 接口定义
- Init: 插件初始化接口,对于Flusher 主要作用是创建外部资源链接
- Description: 插件描述
- IsReady:插件系统在调用 Flush 前会调用该接口检查当前 flusher 是否仍能够处理更多数据,如果答案为否的话,它会等待一段时间再重试。
- Flush 接口是插件系统向 flusher 插件实例提交数据的入口,用于将数据输出到外部系统。为了映射到日志服务的概念中,我们增加了三个string 参数,它代表这个 flusher 实例所属的project/logstore/config。
- SetUrgent: 标识iLogtail 即将退出,将系统状态传递给具体Flusher 插件,可以供Flusher 插件自动适应系统状态,比如加快输出速率等。(SetUrgent调用发生在其他类型插件的Stop之前,当前尚无有意义的实现)
- Stop:停止Flusher 插件,比如断开与外部系统交互的链接
Flusher 开发
Flusher 的开发分为以下步骤:
- 创建Issue,描述开发插件功能,会有社区同学参与讨论插件开发的可行性,如果社区review 通过,请参考步骤2继续进行。
- 实现 Flusher 接口,这里我们使用样例模式进行介绍,详细样例请查看flusher/stdout
- 通过init将插件注册到Flushers,Flusher插件的注册名(即json配置中的plugin_type)必须以”flusher_“开头,详细样例请查看flusher/stdout。
,你可以使用 example.json 试验此插件功能。 - 将插件加入插件引用配置文件的
common
配置节, 如果仅运行于指定系统,请添加到linux
或windows
配置节. - 进行单测或者E2E测试,请参考如何使用单测 与 如何使用E2E测试.
- 使用
make lint
检查代码规范。 - 提交Pull Request。