api

package
v0.0.0-...-5c7ffcf Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NetworkModeAgent = "AGENT"
	NetworkModePod   = "POD"
)

Variables

This section is empty.

Functions

func BoolToFloat64

func BoolToFloat64(b bool) float64

func NsEnterHelpProcesResponse

func NsEnterHelpProcesResponse(respBytes []byte, accumulator Accumulator) error

Types

type Accumulator

type Accumulator interface {
	AddMetric(*model.Metric)
}

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

type MemoryAccumulator struct {
	Metrics []*model.Metric
}

func NewMemoryAccumulator

func NewMemoryAccumulator() *MemoryAccumulator

func (*MemoryAccumulator) AddMetric

func (ma *MemoryAccumulator) AddMetric(metric *model.Metric)

func (*MemoryAccumulator) PrintTo

func (ma *MemoryAccumulator) PrintTo(writer io.Writer) error

type Pipeline

type Pipeline interface {
	// Key returns the unique identifier of the pipeline instance
	Key() string
	Start() error
	Stop()
	SetupConsumer(st *SubTask) error
	Update(func(Pipeline))
	View(func(Pipeline))
}

type PipelineUpdateAware

type PipelineUpdateAware interface {
	UpdateFrom(Pipeline)
}

type SubTask

type SubTask struct {
	CT      *collecttask.CollectTask
	SqlTask *collectconfig.SQLTask
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL