# hippo-data-acquisition **Repository Path**: jani/hippo-data-acquisition ## Basic Information - **Project Name**: hippo-data-acquisition - **Description**: 一个基于go开发的数据采集器。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-10 - **Last Updated**: 2024-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hippo-data-acquisition #### 介绍 河马数据采集器采用go语言开发,通过定时器触发每个输入插件进行数据采集,采集的数据依次通过私有处理器,再到公共处理,最终由输出插件输出。 输入和输出通过协程+管道方式进行连接,通过并行与并发方式提高性能。 #### 软件架构 #### 目录结构 ``` agent:agent目录 commons:公共封装目录(例如:工具类) config:配置目录(包含配置模型) inputs:输入插件目录 input_collection:输入插件接口、集合目录 plugins:每个独立插件的目录(需实现插件接口) register:插件注册目录 main outputs:输出插件目录 output_collection:输出插件接口、集合目录 plugins:每个独立插件的目录(需实现插件接口) register:插件注册目录 processor:处理器插件目录 processors_collection:处理器插件接口、集合目录 plugins:每个独立插件的目录(需实现插件接口) register:插件注册目录 ``` #### 安装教程 1. go开发环境 2. 导入程序 3. 通过main/hippo_data_acquisition运行 #### 打包教程 1. cd main 2. go build #### 输入插件开发 1. 在plugins下创建一个插件目录,例如:cpu,然后创建一个cpu.go文件。 2. 在cpu.go中添加一个结构体,例如: ``` type Cpu struct { // 需要输入参数的可以这定义 } ``` 3. 实现输入插件接口 ``` // InputPlugin 输入插件接口 type InputPlugin interface { // InitPlugin 初始化参数 InitPlugin(config config.InputConfig) // PrepareCron 准备定时器 PrepareCron() // BeforeExeDataAcquisition 执行数据采集前 BeforeExeDataAcquisition() // ExeDataAcquisition 执行数据采集 ExeDataAcquisition(dataQueue queue.Queue) // AfterExeDataAcquisition 执行数据采集后 AfterExeDataAcquisition() } // CPU的接口实现 func (c *Cpu) InitPlugin(config config.InputConfig) { } func (c *Cpu) PrepareCron() { } func (c *Cpu) BeforeExeDataAcquisition() { } func (c *Cpu) ExeDataAcquisition(dataQueue queue.Queue) { fields := make(map[string]interface{}) cpuInfos, percents := GetCPUPercent() fields["cpuInfos"] = cpuInfos fields["percents"] = percents tags := make(map[string]string) dataQueue.PushData(fields, tags) } func (c *Cpu) AfterExeDataAcquisition() { } ``` 3. 通过init函数注册 ``` func init() { input_collection.Add("cpu", &Cpu{}) } ``` 4. 在register.go中引入插件 ``` import ( _ "hippo-data-acquisition/inputs/plugins/cpu" ) ``` 5. 在config/config.json中配置插件 ``` { "inputName": "cpu", //插件名与init函数中注册的名字相同 "tag": { //插件的自定义标签 }, "params": { //插件的参数 "spec": "*/5 * * * * *" //如果添加spec参数则定时器按该表达式进行,否则使用全局的表达式 }, "processors": [ //私有表达式配置 ] } ``` #### 输出插件开发 大致做法同输入插件 #### 处理器插件开发 大致做法同输入插件 #### 快照