代码拉取完成,页面将自动刷新
OBAgent 是一个插件驱动的监控采集框架。要扩展 OBAgent 的功能,或者自定义数据的处理流程,您可以开发对应的插件。开发插件时,您只需要实现插件的基本接口和对应类型插件的接口即可。
OBAgent 的数据处理流程包括数据采集、处理和上报,需要用到的插件包含输入插件(Inputs)、处理插件(Process)、输出插件(OutPuts 和 Exporter)。插件详细信息,参考 外部插件 章节。
OBAgent 支持的插件类型见下表:
插件类型 | 功能描述 |
---|---|
输入插件(Input) | 收集各种时间序列性指标,包含各种系统信息和应用信息的插件。 |
处理插件(Process) | 串行进行数据处理。 |
输出插件(Output) | 仅适用于推模式。用来将 metrics 数据推送到远端。 |
输出插件(Exporter) | 仅适用于拉模式。通过 HTTP 服务暴露数据。用来为 metrics 做格式转换。 |
type Input interface {
Collect() ([]metric.Metric, error)
}
输入插件需要实现 Collect 方法采集数据。输入插件返回一组 metrics 和 error。
type Processor interface {
Process(metrics ...metric.Metric) ([]metric.Metric, error)
}
处理插件需要实现 Process 方法处理数据,输入参数是一组 metrics,输出一组 metrics 和 error。
type Exporter interface {
Export(metrics []metric.Metric) (*bytes.Buffer, error)
}
输出插件(Exporter)需要实现 Export 方法,输入参数是一组 metrcs,输出 byte buffer 和 error。
type Output interface {
Write(metrics []metric.Metric) error
}
输出插件(Output)需要实现 Write 方法,输入参数是一组 metrics,输出 error。
OBAgent 数据处理流程中流转的数据定义为统一的 Metric 接口。
type Metric interface {
Clone() Metric
SetName(name string)
GetName() string
SetTime(time time.Time)
GetTime() time.Time
SetMetricType(metricType Type)
GetMetricType() Type
Fields() map[string]interface{}
Tags() map[string]string
}
所有的 OBAgent 插件都必须实现以下的基本接口:
//Initializer 包含 Init 函数
type Initializer interface {
Init(config map[string]interface{}) error
}
//Closer 包含 Close 函数
type Closer interface {
Close() error
}
//Describer 包含 SampleConfig 和 Description
type Describer interface {
SampleConfig() string
Description() string
}
函数详情见下表:
函数名 | 说明 |
---|---|
Init | 初始化插件。 |
Close | 在插件退出时调用,用来关闭一些资源。 |
SampleConfig | 用来返回插件的配置样例。 |
Description | 用来返回插件的描述信息。 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。