agent

package module
v1.7.1 Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2023 License: MIT Imports: 26 Imported by: 0

README

libagent

libagent license Go Report Card go-mod

agent封装类库,用于快速开发agent

开发方式

请查看example-agent

已支持功能

  1. 与agent-server创建websocket连接并进行握手分配agent id

  2. 标准化日志输出

    • 支持stdout和日志文件双目标输出
    • 支持DEBUG、WARNING、INFO、ERROR级别的标准格式日志输出
    • 支持日志文件的滚动存储
  3. 支持json、yaml或kv格式的配置文件,以下是一个kv格式配置文件示例

     id = example-01
     server = 127.0.0.1:13081
     # log
     log.target = stdout
     #log.target = stdout,file
     #log.dir = ./logs
     #log.size = 10M
     #log.rotate = 7
     # monitor
     monitor.enabled = true
     monitor.interval = 10s
     # limit
     limit.cpu_quota = 100
     limit.memory_limit = 1G
     limit.disk_limit = [{"dev":"8:0","read_bytes":"1M","write_bytes":"1M","read_iops":4000,"write_iops":4000}]
    
  4. 支持通过cgroupsruntime库进行agent的资源限制,可通过配置文件中的limit相关选项进行配置

  5. 支持agent的自监控数据上报,可通过配置文件中的monitor相关选项进行配置

  6. 支持断线重连功能

  7. 支持系统服务注册

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterService

func RegisterService(app App) error

RegisterService 注册系统服务

func Restart

func Restart(app App) error

Restart 重启agent

func Run

func Run(app App) error

Run 运行agent

func Start

func Start(app App) error

Start 启动agent

func Status

func Status(app App) (service.Status, error)

Status 获取服务状态

func Stop

func Stop(app App) error

Stop 停止agent

func UnregisterService

func UnregisterService(app App) error

UnregisterService 卸载系统服务

Types

type App

type App interface {
	// 获取当前agent名称
	AgentName() string
	// 获取当前agent版本号
	Version() string
	// 获取配置文件路径
	ConfDir() string
	// 获取libagent所需配置
	// 该对象必须是一个相对全局作用域的变量,在后续执行过程中该变量将会被更新
	Configure() *conf.Configure

	// 重置配置文件时的回调函数,在以下情况下会回调
	//   - 连接成功后服务端分配了新的agent id
	OnRewriteConfigure() error
	// 连接成功后的回调函数
	OnConnect()
	// 断开连接时的回调函数
	OnDisconnect()
	// 触发上报监控信息时的回调函数,该回调一般被用来上报一些自定义监控数据
	OnReportMonitor()
	// 收到数据包时的回调函数
	OnMessage(*anet.Msg) error

	// 返回数据包时的回调函数,该函数必须是一个循环,
	// 且在有数据需要返回时将其放入第二个参数中的队列内
	LoopWrite(context.Context, chan *anet.Msg) error
}

App app 接口,每一个agent必须实现以下接口

type DummyApp

type DummyApp struct {
	// contains filtered or unexported fields
}

DummyApp 用于系统服务注册的空App

func NewDummyApp

func NewDummyApp(name, confDir string) *DummyApp

NewDummyApp 创建一个dummy的APP用于系统服务注册等

func (*DummyApp) AgentName

func (dm *DummyApp) AgentName() string

AgentName agent名称

func (*DummyApp) ConfDir

func (dm *DummyApp) ConfDir() string

ConfDir 配置文件路径

func (*DummyApp) Configure

func (dm *DummyApp) Configure() *conf.Configure

Configure 获取Configure对象

func (*DummyApp) LoopWrite

func (dm *DummyApp) LoopWrite(context.Context, chan *anet.Msg) error

LoopWrite 发送数据的回调接口

func (*DummyApp) OnConnect

func (dm *DummyApp) OnConnect()

OnConnect 连接成功时的回调接口

func (*DummyApp) OnDisconnect

func (dm *DummyApp) OnDisconnect()

OnDisconnect 连接断开时的回调接口

func (*DummyApp) OnMessage

func (dm *DummyApp) OnMessage(*anet.Msg) error

OnMessage 收到数据时的回调接口

func (*DummyApp) OnReportMonitor

func (dm *DummyApp) OnReportMonitor()

OnReportMonitor 上报监控数据时的回调接口

func (*DummyApp) OnRewriteConfigure

func (dm *DummyApp) OnRewriteConfigure() error

OnRewriteConfigure 重写配置文件回调接口

func (*DummyApp) Version

func (dm *DummyApp) Version() string

Version 版本号(unset)

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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