Documentation ¶
Index ¶
- Constants
- func BoolToFloat64(b bool) float64
- func NsEnterHelpProcesResponse(respBytes []byte, accumulator Accumulator) error
- type Accumulator
- type CollectContext
- type Input
- type InputExt
- type InputExtNsEnter
- type InputWithPrefix
- type MemoryAccumulator
- type Pipeline
- type PipelineUpdateAware
- type SubTask
Constants ¶
View Source
const ( NetworkModeAgent = "AGENT" NetworkModePod = "POD" )
Variables ¶
This section is empty.
Functions ¶
func BoolToFloat64 ¶
func NsEnterHelpProcesResponse ¶
func NsEnterHelpProcesResponse(respBytes []byte, accumulator Accumulator) error
Types ¶
type Accumulator ¶
func WithPrefix ¶
func WithPrefix(a Accumulator, prefix string) Accumulator
type CollectContext ¶
type CollectContext struct {
AlignedTimestamp int64
}
type Input ¶
type Input interface { InputWithPrefix // Collect metrics once Collect(Accumulator) error }
所有新设计的插件必须非常简单, 不包含我们的业务语义, 就像 telegraf.MySQL 插件一样可以被我直接拿来运行 上层我们必须要再包装一个插件, 是含有我们业务语义的.
type InputExt ¶
type InputExt interface { UpdateFrom(interface{}) DebugInfo() map[string]interface{} }
type InputExtNsEnter ¶
type InputExtNsEnter interface { // 执行该插件的网络模式, 目前应该返回 "POD" NetworkMode() string // 产出请求参数 // 入参: 状态, actionType, 请求体, 超时时间, 错误 // 状态: 一般为nil, 可用于 ProcessResponse 关联状态 // actionType: 将会传递给 helper 程序的 actionType SerializeRequest() (interface{}, string, []byte, time.Duration, error) // 处理请求 // 入参: 请求体 ExecuteRequest([]byte) ([]byte, error) // 处理响应 // 入参: 状态, 响应体, 错误, 结果收集器 ProcessResponse(interface{}, []byte, error, Accumulator) error // GenerateErrorMetrics generates error metrics when fail to execute commands in container GenerateErrorMetrics(a Accumulator) }
TODO 改个名字, 底层不一定用 nsenter 去实现, 也可能用 exec API, 只要能实现了就行 如果某个插件依赖 nsenter 那么它需要实现该接口 执行流程 [由实例去实现] 调用 SerializeRequest, 实例将要传递的入参序列化成 []byte [由实例去实现] nsneter 切换到指定ns, 然后执行 helper bin, 内部会 new 出相同的 input 实例, 然后调用其 ExecuteRequest 方法 [由实例去实现] 实现 ExecuteRequest 方法, 入参是上一步返回的 []byte [由流程去实现] 流程调用 ProcessResponse, 入参上一步的返回的 []byte 这样做的好处是, 插件自身只是要处理数据的序列化, 不需要处理 nsenter 的调用流程
type InputWithPrefix ¶
type InputWithPrefix interface { // GetDefaultPrefix returns default prefix for metrics generated by this input // The raw metrics returned do not need to be prefixed. GetDefaultPrefix() string }
type MemoryAccumulator ¶
func NewMemoryAccumulator ¶
func NewMemoryAccumulator() *MemoryAccumulator
func (*MemoryAccumulator) AddMetric ¶
func (ma *MemoryAccumulator) AddMetric(metric *model.Metric)
type PipelineUpdateAware ¶
type PipelineUpdateAware interface {
UpdateFrom(Pipeline)
}
type SubTask ¶
type SubTask struct { CT *collecttask.CollectTask SqlTask *collectconfig.SQLTask }
Click to show internal directories.
Click to hide internal directories.