heka数据流处理工具
1、简介
Heka 是一个”瑞士军刀”级别的流式数据处理工具,由 Mozilla 开源。heka是一个高可扩展的处理工具,他的高可扩展不但体现在本身可以进行插件开发,而且还可以通过添加机器进行水平扩展。heka是go语言开发的,比较充分的运用的heka的并发机制,从我们对go语言特性了解来看,不用担心它的性能问题,即使如此我们也可以通过快速的水平扩展来满足业务的需求。
heka和logstash一样同样有input进行日志采集,output发送日志,中间同样提供了filter splitters decoders等功能。
功能如下:
加载解析日志文件。
接收 Statsd 类型的指标数据进行合并,上载至时间序列数据库,如 graphite 或 InfluxDB。
启动扩展进程来收集本地系统的操作数据。
实时分析、画图,并能够对经过 Heka 数据管道的数据进行异常检测。
通过像 AMQP 或 TCP等协议将数据从一处传输至另一处。
将处理后的结果数据存储至一个或多个持久化数据库。
2、组件
Heka 是一个基于插件的工具;将数据传给 heka、处理、输出都是通过插件来实现的;Heka 支持6种类型的插件:
2.1Inputs
Input 插件从外部获取数据,并将其传入 heka 管道;数据的来源可以是本地文件系统、远程服务器、socket等的结构或非结构化数据。此插件只能使用 Go 语言编写。
2.2Splitters
Splitter 将接收到的数据分隔成有效的记录,如使用换行分隔;只能使用 Go 语言编写。
2.3Decoders
Decoder 插件将接收到的数据解析成结构化数据。可使用 Go 来写或者 lua code。
2.4Filters
Filter 插件是Heka 的处理引擎。接收匹配规则的的数据;用来监控、聚集统计或处理数据。可以用 Go、或 lua。使用 Lua 开发,可以在不重启 heka 服务的前提下,将插件注入至运行时服务。
2.5Encoders
是 decoder 的反向处理工具;内嵌在 Output 插件中,相当于序列化。可以使用 Go 或lua 开发。
2.6Outputs
按照匹配规则将序列化后的数据输出到目标中。仅能使用Go编写。
3、核心进程
hekad 是核心进程,单个 hekad 进程可以配置很多插件,同时处理多种数据的收集、处理、传输工作。
-version 参数查看版本号。
-config=<config_path>。指定配置文件。默认位置为 /etc/hekad.toml,此配置可以指定目录,hekad 会解析读取目录下的所有配置文件。
4、安装
从 Heka 的 Github 发布页面(https://github.com/mozilla-services/heka/releases)下载相应的二进制包,如:heka-0_10_0-linux-amd64.tar.gz
4.1解压
[root@localhost ~]# tar -C /usr/local/ -xzvf heka-0_10_0-linux-amd64.tar.gz
4.2配置环境变量
[root@localhost opt]# vim /etc/profile
export HEKA_HOME=/usr/local/heka-0_10_0-linux-amd64
export PATH=$HEKA_HOME/bin:$PATH
5、示例
该示例将加载本地的一个日志文件,使用空白符及换行分隔,打印至标准输出,配置文件 test.toml 如下:
[root@localhost opt]# vim test.toml
[log-test-input]
type = "LogstreamerInput"
log_directory = "/root/work"
file_match = 'test\.log'
splitter = "log-test-splitter"[log-test-splitter]
type = "RegexSplitter"
delimiter = '\s+'
delimiter_eol = false[log-test-encoder]
append_newlines = true
type = "PayloadEncoder"
prefix_ts = false[log-test-output]
type = "LogOutput"
message_matcher = "TRUE"
encoder = "log-test-encoder"
创建日志文件 /root/work/test.log,然后启动 hekad 进程:
[root@localhost opt]# mkdir /root/work
[root@localhost opt]# touch /root/work/test.log
[root@localhost opt]# hekad -config test.toml
向日志中输入一些内容:
[root@localhost work]# echo -e "Hello world.\n This is a demo of heked." >> test.log
heked 的标准输出:
2020/09/14 22:45:30 Hello
2020/09/14 22:45:30 world.
2020/09/14 22:45:30 This
2020/09/14 22:45:30 is
2020/09/14 22:45:30 a
2020/09/14 22:45:30 demo
2020/09/14 22:45:30 of
2020/09/14 22:45:30 heked.
6、配置释义
Heka 的配置文件采用 TOML 格式,使用 [] 来区分一段段配置:
[log-test-input] 命名Input配置。
type = “LogstreamerInput”;配置段的类型,可以直接将此类型当作配置段的名称,就可以省略此配置。
log_directory = “/root/work”; 配置日志文件的目录。LogstreamerInput 会递归搜索目录及子目录下的日志文件。
file_match = ‘test.log’;配置匹配日志文件的正则表达式;使用单引号来配置,若使用双引号,则为:”test\.log”。
splitter = “log-test-splitter”;指定日志分隔器名称。
[log-test-splitter] 命名分隔器。
type = “RegexSplitter”;指定分隔器的类型为正则表达式分隔器:RegexSplitter。
delimiter = ‘\s+’;正则表达式分隔字符。
delimiter_eol = false;是否识别正则表达式 捕获组。
[log-test-encoder] 命名输出序列化工具。
append_newlines = true;配置是否输出自动增加新行。
type = “PayloadEncoder”;序列化插件类型。
prefix_ts = false;是否增加前缀时间戳。
[log-test-output] 命名输出插件。
type = “LogOutput”;输出插件类型。
message_matcher = “TRUE”;配置 输出插件对 heka 消息进行匹配的规则;TRUE为全部匹配。
encoder = “log-test-encoder”;指定输出的序列化工具。
例子中的 LogstreamerInput 会记录日志读取的游标,当使用 Ctrl-C 停止 hekad 后,再重新启动 hekad,将不会读取之前已经读取过的数据;默认情况下,Heka 会将此记录在目录 /var/cache/hekad/logstreamer/LogstreamerInput 下;如果删除了此目录,重新启动后,将会从头读取文件内容。
如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。群主还经营一家Orchis饰品店,喜欢的小伙伴欢迎????前来下单。
扫描二维码
获取更多精彩
运维猫公众号
有需要技术交流的小伙伴可以加我微信,期待与大家共同成长,本人微信:
扫描二维码
添加私人微信
运维猫博主
扫码加微信
最近有一些星友咨询我知识星球的事,我也想继续在星球上发布更优质的内容供大家学习和探讨。运维猫公众号平台致力于为大家提供免费的学习资源,知识星球主要致力于即将入坑或者已经入坑的运维行业的小伙伴。
点击阅读原文 查看更多精彩内容!!!
heka数据流处理工具相关推荐
- 面向大数据处理的数据流编程模型和工具综述
点击上方蓝字关注我们 面向大数据处理的数据流编程模型和工具综述 邹骁锋, 阳王东, 容学成, 李肯立, 李克勤 湖南大学信息科学与工程学院,湖南 长沙 410008 论文引用格式: 邹骁锋, 阳王东, ...
- 史上最全的 Linux Shell 文本处理工具集锦,快收藏!
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来自:大CC 链接:www.cnblogs.com/me15/p/3427319.html 本 ...
- 超全的 Linux Shell 文本处理工具集锦,快收藏
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 大CC 来源 | www.cnblogs.co ...
- angular之Rxjs异步数据流编程入门
Rxjs介绍 参考手册:https://www.npmjs.com/package/rxjs 中文手册:https://cn.rx.js.org/ RxJS 是 ReactiveX 编程理念的 Jav ...
- linux shell find depth,搞定 Linux Shell 文本处理工具,看完这篇集锦就够了
原标题:搞定 Linux Shell 文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕 ...
- Linux Shell 文本处理工具集锦
本文将介绍Linux下使用Shell处理文本时最常用的工具: find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk: 提供的例子和参数都是最常用和最为实用 ...
- cbrgen和setdest数据流生成
数据流生成工具cbrgen用来产生传输负载,可以产生cbr流和tcp流.cbrgen的使用方法是,首先切换到 ,使用方法如下: ns cbrgen.tcl [-type cbr|tcp] [-nn ...
- 第二十五期:搞定Linux Shell文本处理工具,看完这篇集锦就够了
Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习Shell脚本的过程中,还是能了解到很多Linux系统的内容. L ...
- 搞定Linux Shell文本处理工具,看完这篇集锦就够了(转)
Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习Shell脚本的过程中,还是能了解到很多Linux系统的内容. L ...
- 专题导读:面向大数据处理的数据流计算技术
点击上方蓝字关注我们 专题导读:面向大数据处理的数据流计算技术 数据流(data flow)是麻省理工学院(MIT)的Jack B.Dennis教授在20世纪70年代提出的一种计算机体系架构,这在当时 ...
最新文章
- 我开发的代码,如何申请版权_代码简介:我花了3个月时间申请开发人员职位。 这是我学到的。...
- [转]面向接口编程详解(一)——思想基础
- mysql binlog sql统计_mysql的binlog详解
- python画多边形_python – 使用matplotlib更有效地绘制多边形
- Cmake安装遇到问题
- 搜索互联网缓存页面 How to View the Cached Page of any URL or Website
- linux几种常见的文件内容查找和替换命令
- 中国甲状腺功能减退药行业市场供需与战略研究报告
- 大数据可视化技术挑战和措施
- Java动态数组的实现
- STRUTS1框架简介
- 【JZOJ5336】【NOIP2017提高A组模拟8.24】提米树
- 单片机学习笔记6--中断系统(基于百问网STM32F103系列教程)
- gls开发_广义最小二乘gls数学推导直觉
- CString - 详解
- 华严数字体系--说说不可说
- matlab 归一化功率谱,求大神指点如何画归一化功率谱的图像啊
- UCOSIII软件定时器
- 自动控制原理_卢京潮_线性系统的时域分析与校正_学习笔记
- 1157 最高分和最低分
热门文章
- 把EditPlus添加到右键快捷菜单
- KEYCODE 按键列表
- 错误请联系管理员文件 index.php,GS登录报错,提示【访问权限失败,请联系管理员处理】...
- 计算机无线键盘没反应,电脑无线键盘没反应怎么回事
- 戴尔微型计算机怎么换硬盘,教你如何给DELL台式电脑换硬盘
- 成功解决windows系统开机时,系统提示此windows副本不是正版
- infer的用法_infer运用实践
- Kubernetes Secrets 详解
- 硬件/操作系统/网络(九):了解常见linux服务器硬件配置
- 7-1 设计一个风扇Fan类 (20 分)JAVA PTA