如何开发扩展Input插件
了解如何开发Input插件前你需要先了解Input 插件接口,目前的Input 插件分为2类,分别为MetricInput 与ServiceInput,分别为MetricInput可以由全局控制采集频率,适合Metric指标拉取等情况,ServiceInput 更适合接收外部输入情况,比如接收SkyWalking的Trace 数据推送。
MetricInput 接口定义
Init:插件初始化接口,主要供插件做一些参数检查,并为其提供上下文对象 Context。 返回值的第一个参数表示调用周期(毫秒),插件系统会以该值作为数据获取周期。如果返回 0 的话,插件系统会使用全局的数据获取周期。 返回值的第二个参数表示初始化中发生的错误,一旦发生错误该插件实例将被忽略,插件系统不会向获取数据。
Description:插件自描述接口。
Collect: MetricInput 最关键的接口,插件系统通过此接口从插件实例中获取数据。插件系统会周期性地调用此接口,将数据收集到传入 Collector 中。
MetricInput 开发
MetricInput 的开发分为以下步骤:
创建Issue,描述开发插件功能,会有社区同学参与讨论插件开发的可行性,如果社区review 通过,请参考步骤2继续进行。
使用 make lint 检查代码规范。
提交Pull Request。
ServiceInput 接口定义
Init/Description:同 MetricInput 接口,但是 Init 的一个返回值对于 ServiceInput 没有意义,因为它不会被周期性调用。
Start:由于 ServiceInput 的定位是常驻型输入,所以插件系统为此类型的插件实例都创建了独立的 goroutine,在 goroutine 中调用此接口来开始数据收集。Collector 的作用依旧是充当插件实例和插件系统之间的数据管道。
Stop:提供终止插件的能力。插件必须正确地实现此接口,以避免 hang 住插件系统导致 Logtail 也无法正确退出。
ServiceInput 开发
ServiceInput 的开发分为以下步骤:
创建Issue,描述开发插件功能,会有社区同学参与讨论插件开发的可行性,如果社区review 通过,请参考步骤2继续进行。
使用 make lint 检查代码规范。
提交Pull Request。
Last updated