HEKA-系统介绍
2017-08-14 09:29
381 查看
1. 系统介绍
日志收集服务golang
golnag/lua扩展
流水线作业
2. UParse系统说明
2.1系统结构
2.1 主要模块
pipeline-config核心调度模块,跟据配置文件启动相应的插件,启动流水线
input
从数据源读取数据,包括kafka_input,TCP_input等
decoder
将数据解析成特定,有json,nginx等
filter
对数据进行聚合,计算,过滤
encoder
对数据重新编码成特定格式
output
输出数据到外部存储或通道
router
根据数据某些字段对filter和output进行路由
2.3 主要特性
2.3.1系统数据传输单元
type PipelinePack struct{ message. Message //处理后的数据,一个类似于hanshmap的多级嵌套数据结构 MsgByte //原始数据, []byte } |
2.3.2 系统初始化加载方式
启动模式uparse -config xxx.toml
uparse -config config_dir
组件注册
系统初始化时,注册所有的插件到系统(input、output、filter、encoder、decoder),注册形式为 key:FactoryFunc
插件启动和调度
主goroutine根据配置文件管理类PipelineConfig启动各个插件
首先启动outout插件,然后是filter插件,然后启动router,为filter和output插件建立消息传递通道
2.3.3 插件运行模式
Input、Filter、Output都运行在自己的goroutine,保持高的并发性各个组件之间使用channel或者文件buffer通信
插件的生命周期由PluginRunners管理
插件与goroutine的紧密耦合保持了并发的完整
组件之间的关联
input与decoder的关系是,属于inout的一个组件,每个input只接收一种格式数据源;
input与filter之间通过router进行交互,多对多的对应关系;
filter与output之间也是使用router进行交互,多对多的关系;
encode和output之间也是从属关系, encode内嵌在output中,在数据输出之前按照encoder进行序列化
2.3.4 消息路由
消息decode完成后使用router将数据传输到相应的filter插件和output插件filter和output需要指定message matcher
方式:根据某些字段规则进行路由,规则由使用yacc语法解析,支持一下规则
1:Type == “test” && Severity == 6
2:Fields[MyBool] == TRUE
3: Type =~ /test/
message matcher运行在自己的goroutine,很快
2.3.5 SANDBOX-lua
插件可以使用lua实现lua加载模式为golang使用cgo调用lua脚本
lua可以动态加载,方便插件升级
lua属于性能比较快的脚本语言
lua的常用方式
2.3.6 消息路由缓冲队列
router提供了两种消息队列golang内部channel机制(内存buffer,线程安全)
使用文件作为缓冲buffer(磁盘buffer)
2.3.7 插件扩展
对所有的插件扩展开发提供了标准规范golang插件实现特定接口,然后注册到系统
typeInput interface { Run(ir InputRunner, h PluginHelper) (err error) Stop() } typeDecoder interface { Decode(pack *PipelinePack) (packs []*PipelinePack, err error) } typeFilter interface { Prepare(fr FilterRunner, h PluginHelper) (err error) ProcessMessage(pack *PipelinePack) (err error) CleanUp() } typeEncoder interface { Encode(pack *PipelinePack) (output []byte, err error) } typeOutput interface { Prepare( or OutputRunner, h PluginHelper) (err error) ProcessMessage(pack *PipelinePack) (err error) CleanUp() } |
lua插件开发规范
3. 系统类图
4 问题
相关文章推荐
- 基于rsync同步算法的文件同步系统JAVA实现(一)——项目介绍
- 汽车常识全面介绍 - 悬挂系统
- Java中系统属性Properties介绍 System.getProperty()参数大全-tomcat设置参数,java获取
- Java Socket传输数据的文件系统介绍
- 龙果开源支付系统介绍
- OSI(开放式通信系统互联参考模型)模型分层和协议简单介绍
- 重装系统前 病毒库的备份方法介绍
- 【高性能】Lustre分布式存储文件系统介绍和故障分析
- 关于大小端的简单介绍以及使用C写一个函数判断当前系统是大端存储还是小端存储
- Java的IO系统简明而经典的介绍
- 嵌入式Linux文件系统详细介绍
- 【htop、glances、dstat】介绍——Linux系统监控中的尖刀班
- 《MYSQL性能调优与架构设计》第四章--mysql权限系统介绍
- 转一篇比较详细介绍FatFs文件系统移植的文章
- 城市楼宇综合节能系统介绍
- 深入iOS系统底层之XCODE对汇编的支持介绍
- ZFS文件系统介绍和挂载
- JSP+Servlet培训班作业管理系统[17] -完结篇之功能点介绍
- Linux 查看磁盘分区、文件系统、磁盘的使用情况相关的命令和工具介绍
- 常用文件系统介绍