Documentation
¶
Index ¶
- Constants
- type BucketDO
- type BucketInfo
- type ChangeListener
- type CollectConfig
- type CollectTarget
- func (t *CollectTarget) GetApp() string
- func (t *CollectTarget) GetHostname() string
- func (t *CollectTarget) GetIP() string
- func (t *CollectTarget) GetNamespace() string
- func (t *CollectTarget) GetPodName() string
- func (t *CollectTarget) GetTenant() string
- func (t *CollectTarget) IsTypeLocalhost() bool
- func (t *CollectTarget) IsTypePod() bool
- type CollectTask
- type CollectTaskDO
- type CommonResources
- type Delta
- type IManager
- type Manager
- func (m *Manager) AddHttpFuncs()
- func (m *Manager) AddStaticTasks(tasks ...*CollectTask)
- func (m *Manager) CheckTask(configKey, configVersion, targetKey, targetVersion string) int
- func (m *Manager) GetAll() []*CollectTask
- func (m *Manager) InitLoad()
- func (m *Manager) Listen(listener ChangeListener)
- func (m *Manager) MaybeSyncOnce()
- func (m *Manager) RemoveListen(listener ChangeListener)
- func (m *Manager) StartListen()
- func (m *Manager) Stop()
- type One
- type Storage
Constants ¶
View Source
const ( TargetLocalhost = "localhost" TargetPod = "pod" TargetSlsShard = "sls_shard" TargetNone = "none" TargetContainer = "container" // ext TargetObNodeTenant = "ob_node_tenant" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BucketDO ¶
type BucketDO struct {
ID int64 `gorm:"primarykey"`
GmtCreate time.Time
GmtModified time.Time
Name string `gorm:"unique;"`
State string `gorm:"not null;"`
}
存储方案1: 使用sqlite存储, 每个 CollectTaskDO 对应一条记录, columns 大概有 bucket,task_key,config_key,target_key,data(是个二进制) 存储方案2: 使用boltdb存储, 每个buckets自己一个bucket(boltdb的概念), 以 task_key 作为 boltdb 的 key, 整个对象序列化后作为 bolt db 的 value; 但bolt年代比较久远了,不太活泼, 起码得用bbolt代替 存储方案3: 使用一般的持久化kv存储, 比如 badgerdb, 但它没有boltdb的bucket的概念(类似namespace), 因此所有buckets的数据是存在一起的
type BucketInfo ¶
type BucketInfo struct {
// contains filtered or unexported fields
}
type ChangeListener ¶
type ChangeListener interface {
// OnUpdate apply config delta to listener
OnUpdate(*Delta)
}
type CollectConfig ¶
type CollectConfig struct {
Key string `json:"key"`
Type string `json:"type"`
// 需要有一个版本号之类的东西, key相同的通过version判断新旧, 不用判断新旧, 只要版本不一样就直接替换
Version string `json:"version"`
// 站在reg的角度, 它就是给agent发 "一坨配置", 就是一堆二进制格式的数据
// 怎么去解释这些数据是业务上的事情, 产品层与agent需要约定好内容格式
Content []byte `json:"-"`
// ContentObj is for internal usage
ContentObj interface{} `json:"contentObj"`
}
描述一个采集配置
type CollectTarget ¶
type CollectTarget struct {
Key string `json:"key"`
// localhost 其实现在只有 localhost/pod
Type string `json:"type"`
Version string `json:"version"`
// Meta的内容根据type解释
Meta map[string]string `json:"meta"`
}
采集目标
func (*CollectTarget) GetApp ¶
func (t *CollectTarget) GetApp() string
func (*CollectTarget) GetHostname ¶
func (t *CollectTarget) GetHostname() string
func (*CollectTarget) GetIP ¶
func (t *CollectTarget) GetIP() string
func (*CollectTarget) GetNamespace ¶
func (t *CollectTarget) GetNamespace() string
func (*CollectTarget) GetPodName ¶
func (t *CollectTarget) GetPodName() string
func (*CollectTarget) GetTenant ¶
func (t *CollectTarget) GetTenant() string
func (*CollectTarget) IsTypeLocalhost ¶
func (t *CollectTarget) IsTypeLocalhost() bool
func (*CollectTarget) IsTypePod ¶
func (t *CollectTarget) IsTypePod() bool
type CollectTask ¶
type CollectTask struct {
// collect task key
Key string `json:"key"`
// collect task version
Version string `json:"version"`
// collect config
Config *CollectConfig `json:"config"`
// collect target
Target *CollectTarget `json:"target"`
}
CollectTask = CollectConfig + CollectTarget
func (*CollectTask) IsDifferentWith ¶
func (t *CollectTask) IsDifferentWith(o *CollectTask) bool
type CollectTaskDO ¶
type CommonResources ¶
type CommonResources struct {
Configs map[string]*CollectConfig
Targets map[string]*CollectTarget
}
type Delta ¶
type Delta struct {
// 一次增量更新的uuid
Uuid string
Add []*CollectTask
Del []*CollectTask
}
type IManager ¶
type IManager interface {
GetAll() []*CollectTask
Listen(listener ChangeListener)
RemoveListen(listener ChangeListener)
}
管理采集配置 1. 本地缓存 2. 从Registry缓存
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func NewManager ¶
依赖 regsitry 服务 建议提供一个 AgentMetaService 供获取信息
func (*Manager) AddHttpFuncs ¶
func (m *Manager) AddHttpFuncs()
func (*Manager) AddStaticTasks ¶
func (m *Manager) AddStaticTasks(tasks ...*CollectTask)
func (*Manager) GetAll ¶
func (m *Manager) GetAll() []*CollectTask
func (*Manager) MaybeSyncOnce ¶
func (m *Manager) MaybeSyncOnce()
func (*Manager) RemoveListen ¶
func (m *Manager) RemoveListen(listener ChangeListener)
func (*Manager) StartListen ¶
func (m *Manager) StartListen()
type One ¶
type One struct {
One *CollectTask
}
func (*One) GetAll ¶
func (f *One) GetAll() []*CollectTask
func (*One) Listen ¶
func (f *One) Listen(listener ChangeListener)
func (*One) RemoveListen ¶
func (f *One) RemoveListen(listener ChangeListener)
type Storage ¶
type Storage struct {
// contains filtered or unexported fields
}
Collect Task Storage
func NewStorage ¶
func (*Storage) ApplyDelta ¶
func (*Storage) Set ¶
func (s *Storage) Set(bucket *BucketInfo) error
Click to show internal directories.
Click to hide internal directories.