monitor

package
v0.0.0-...-36277ca Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2021 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EndTag = "_END_" // 终止标志
)

内置标签

View Source
const (
	EnhanceTag = "enhance"
)

Variables

This section is empty.

Functions

func Render

func Render(d []byte, eventBuilder func() EventResult) (*data.AnalyseData, error)

func RenderHandler

func RenderHandler(event EventResult, eventBuilder func() EventResult) func(data []byte) (*data.AnalyseData, error)

Types

type Builder

type Builder interface {
	// Build 创建模块
	Build() *Monitor
	// Merge 合并模块, moduleList 中的元素不为空
	Merge(moduleList []Builder) []Builder
}

Builder 模块构造器

type EventResult

type EventResult interface {
	// 数据渲染
	Render() *data.AnalyseData
}

EventResult 事件结果接口,实现中的类型大小在编译时必须是已知的

type Monitor

type Monitor struct {
	// Resolver 解析
	Resolver

	// Name 返回模块的名称
	Name string
	// Source 返回注入的 ebpf 源码
	Source string
	// Events 返回要注册的事件
	Events []*ebpf.Event
	// IsEnd 是否标记为最后
	IsEnd bool
	// CanMerge 是否可以与其他 Module 合并
	CanMerge bool
	// LazyInit 延迟初始化
	LazyInit func(mm *Monitor, param ebpf.PreParam) bool
	// Module 获取 `ebpf.Module`
	Module func() *ebpf.Module
}

Monitor 模块抽象接口

type PerfMonitor

type PerfMonitor struct {
	*Monitor
	// contains filtered or unexported fields
}

PerfResolveMm BaseMonitorModule 的高级抽象,封装 table 和 resolve 的处理

func NewPerfMonitor

func NewPerfMonitor(m *Monitor) *PerfMonitor

NewPerfMonitor 创建 Perf 模块

func (*PerfMonitor) Build

func (p *PerfMonitor) Build() *Monitor

Build 返回实际的模块

func (*PerfMonitor) IsEnd

func (p *PerfMonitor) IsEnd() bool

IsEnd 模块是否被设置为终止模块

func (*PerfMonitor) Merge

func (p *PerfMonitor) Merge(moduleList []Builder) []Builder

Merge 合并模块

func (*PerfMonitor) RegisterOnceTable

func (p *PerfMonitor) RegisterOnceTable(name string, handler TableHandler)

RegisterOnceTable 注册 table,仅执行一次操作

func (*PerfMonitor) RegisterTable

func (p *PerfMonitor) RegisterTable(name string, loop bool, handler TableHandler) chan<- []byte

RegisterTable 注册 table, 若 loop 为 true,返回对应的 chan,否则返回 nil

func (*PerfMonitor) Resolve

func (p *PerfMonitor) Resolve(ctx context.Context, m *bpf.Module, ch chan<- *data.AnalyseData)

Resolve 模块的解析策略

func (*PerfMonitor) SetMark

func (p *PerfMonitor) SetMark(name string, mk string) *PerfMonitor

SetMark 设置标记

type Resolver

type Resolver interface {
	// Resolve 解析、发送处理结果
	Resolve(ctx context.Context, m *bpf.Module, ch chan<- *data.AnalyseData)
}

Resolver 模块解析

type TableCtx

type TableCtx struct {
	Name    string
	Monitor Monitor
	// contains filtered or unexported fields
}

TableCtx table context

func (TableCtx) IterOperator

func (t TableCtx) IterOperator(op func(string))

type TableHandler

type TableHandler func(data []byte) (*data.AnalyseData, error)

type Type

type Type uint
const (
	NormalType Type = iota
	FinallyType
	IgnoredType
)

func InitMonitor

func InitMonitor(mm *Monitor, param ebpf.PreParam) Type

InitMonitor 初始化 Module, 返回创建的 Name、是否标记为 end,是否跳过此 Module

Jump to

Keyboard shortcuts

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