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数据流处理工具相关推荐

  1. 面向大数据处理的数据流编程模型和工具综述

    点击上方蓝字关注我们 面向大数据处理的数据流编程模型和工具综述 邹骁锋, 阳王东, 容学成, 李肯立, 李克勤 湖南大学信息科学与工程学院,湖南 长沙 410008 论文引用格式: 邹骁锋, 阳王东, ...

  2. 史上最全的 Linux Shell 文本处理工具集锦,快收藏!

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来自:大CC 链接:www.cnblogs.com/me15/p/3427319.html 本 ...

  3. 超全的 Linux Shell 文本处理工具集锦,快收藏

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 大CC 来源 | www.cnblogs.co ...

  4. angular之Rxjs异步数据流编程入门

    Rxjs介绍 参考手册:https://www.npmjs.com/package/rxjs 中文手册:https://cn.rx.js.org/ RxJS 是 ReactiveX 编程理念的 Jav ...

  5. linux shell find depth,搞定 Linux Shell 文本处理工具,看完这篇集锦就够了

    原标题:搞定 Linux Shell 文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕 ...

  6. Linux Shell 文本处理工具集锦

    本文将介绍Linux下使用Shell处理文本时最常用的工具: find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk: 提供的例子和参数都是最常用和最为实用 ...

  7. cbrgen和setdest数据流生成

    数据流生成工具cbrgen用来产生传输负载,可以产生cbr流和tcp流.cbrgen的使用方法是,首先切换到 ,使用方法如下: ns cbrgen.tcl  [-type cbr|tcp]  [-nn ...

  8. 第二十五期:搞定Linux Shell文本处理工具,看完这篇集锦就够了

    Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习Shell脚本的过程中,还是能了解到很多Linux系统的内容. L ...

  9. 搞定Linux Shell文本处理工具,看完这篇集锦就够了(转)

    Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习Shell脚本的过程中,还是能了解到很多Linux系统的内容. L ...

  10. 专题导读:面向大数据处理的数据流计算技术

    点击上方蓝字关注我们 专题导读:面向大数据处理的数据流计算技术 数据流(data flow)是麻省理工学院(MIT)的Jack B.Dennis教授在20世纪70年代提出的一种计算机体系架构,这在当时 ...

最新文章

  1. 我开发的代码,如何申请版权_代码简介:我花了3个月时间申请开发人员职位。 这是我学到的。...
  2. [转]面向接口编程详解(一)——思想基础
  3. mysql binlog sql统计_mysql的binlog详解
  4. python画多边形_python – 使用matplotlib更有效地绘制多边形
  5. Cmake安装遇到问题
  6. 搜索互联网缓存页面 How to View the Cached Page of any URL or Website
  7. linux几种常见的文件内容查找和替换命令
  8. 中国甲状腺功能减退药行业市场供需与战略研究报告
  9. 大数据可视化技术挑战和措施
  10. Java动态数组的实现
  11. STRUTS1框架简介
  12. 【JZOJ5336】【NOIP2017提高A组模拟8.24】提米树
  13. 单片机学习笔记6--中断系统(基于百问网STM32F103系列教程)
  14. gls开发_广义最小二乘gls数学推导直觉
  15. CString - 详解
  16. 华严数字体系--说说不可说
  17. matlab 归一化功率谱,求大神指点如何画归一化功率谱的图像啊
  18. UCOSIII软件定时器
  19. 自动控制原理_卢京潮_线性系统的时域分析与校正_学习笔记
  20. 1157 最高分和最低分

热门文章

  1. 把EditPlus添加到右键快捷菜单
  2. KEYCODE 按键列表
  3. 错误请联系管理员文件 index.php,GS登录报错,提示【访问权限失败,请联系管理员处理】...
  4. 计算机无线键盘没反应,电脑无线键盘没反应怎么回事
  5. 戴尔微型计算机怎么换硬盘,教你如何给DELL台式电脑换硬盘
  6. 成功解决windows系统开机时,系统提示此windows副本不是正版
  7. infer的用法_infer运用实践
  8. Kubernetes Secrets 详解
  9. 硬件/操作系统/网络(九):了解常见linux服务器硬件配置
  10. 7-1 设计一个风扇Fan类 (20 分)JAVA PTA