Heka 最简单例子
技术人员学习都是从简单例子开始的, Heka的应用也是从简单开始的。
需求:
监控一个日志文件的内容, 在标准输出显示出来。
操作步骤:
使用下载好或者编译好的 heka
已经编译好的 release 版本可以在下面地址下载: https://github.com/mozilla-services/heka/releases
注意:
需要把编译后产生的 lib 文件(dll文件) 放在 system32 目录下,否则会报下面错误:


准备一个待监控的log文件, 我这里是放在 D:\tmp\log 目录下的 auth.log 文件, 内容随便输入。
编写一个名叫 sanity_check.toml 的 toml 配置文件 ,内容如下, 具体配置含义,后面分析:
[LogstreamerInput]
log_directory = "D:\\tmp\\log"
file_match = 'auth\.log'
[PayloadEncoder]
append_newlines = false
[LogOutput]
message_matcher = "TRUE"
encoder = "PayloadEncoder"
这里我把这个文件保存在 D:\tmp\heka 目录下。
在 hekad.exe 目录下执行 命令:
D:\mycodes\golang\src\github.com\mozilla-services\heka\build\heka\bin>hekad.exe -config=D:\tmp\heka\sanity_check.toml
执行效果如下图:
当我们监控的文件发生变化时, 这里也是会实时读取出来的, 下面不同的时间也就标示了这点。

分析:
Heka 最重要组件为 hekad,一个适用于任何主机的轻量级守护程序, 我们这里就是对他进行配置。
Heka 使用的的 TOML格式的配置文件,一般依赖一个或者多个TOML格式的配置文件。 TOML是类似 INI 配置的语法,http://www.tuicool.com/articles/7JZRbq3
除了启动应用是,配置的配置文件的位置外,运行hekad有两个重要的目录, 这里这几个参数我们都没有配置,我们用的都是默认值:
base_dir (string, 默认‘/var/cache/hekad’ 或者 ‘c:\var\cache\hekad’):
base_dir是hekad运行的工作目录(存储hekad工作信息,如查询日志文件的seek位置等信息),运行hekad的用户需要对这个目录有写权限。
share_dir是hekad的静态资源,比如控制仪表盘(dashboard )的Html/js 源文件,以及各种Lua插件文件。运行hekad的用户需要对这个目录有读权限。
golang的GOMAXPROCS环境变量,用于控制几个CPU内核参与到运算。
最佳实践:Heka aggregator 机器(最好是CPU核数,或者核数减一,处理数据的Heka机则是1到2。)
[LogstreamerInput] 配置节
log_directory = "D:\\tmp\\log" 需要监控的目录
file_match = 'auth\.log' 需要监控的文件,
[LogOutput] 配置节
LogOutput 是标示只需要将数据写出到Heka进程的标准输出。
message_matcher = "TRUE" 标示我们这个输出应该捕获途径Heka管道的每一个消息。
encoder = "PayloadEncoder" 标示我们捕获的每个消息,都作为原始数据进行输出发送。
[PayloadEncoder] 配置节
append_newlines = false 标示,我们输出时,是否在每行后面补加换行符。
参考资料:
Heka logstreamer 说明文档
http://hekad.readthedocs.org/en/latest/pluginconfig/logstreamer.html#logstreamerplugin
Heka inputs 说明文档
http://hekad.readthedocs.org/en/latest/config/inputs/index.html
Heka getting started
https://hekad.readthedocs.org/en/latest/getting_started.html
Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具
http://www.csdn.net/article/2013-05-02/2815116-introduce-from-mozilla-heka-go
http://blog.mozilla.org/services/2013/04/30/introducing-heka/
PPT介绍
https://cdn.rawgit.com/gophercon/2014-talks/master/rob_miller_heka/index.html#/
Heka, 一个高可扩展的实时数据收集和处理工具
http://skoo.me/system/2014/04/02/hekad/
Heka插件开发
http://skoo.me/system/2014/04/30/heka-plugin-devel/
http://youngsterxyf.github.io/sphinx/work_note/operations/heka.html#id1
Heka 最简单例子的更多相关文章
- Hibernate4.2.4入门(一)——环境搭建和简单例子
一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- ko 简单例子
Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- jsonp的简单例子
jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
随机推荐
- PHP中implode()和explode()
1, implode()函数返回由数组元素组合成的字符串,函数语法:string implode(separator,array),separator参数可选,规定数组元素之间放置的内容,默认是空字符 ...
- 2016级算法第四次上机-B ModricWang的序列问题
1019 ModricWang的序列问题 思路 此题题意非常清晰,给定一个序列,求出最长上升子序列的长度.从数据规模来看,需要\(O(nlogn)\) 的算法. \(O(nlongn)\) 求最长上升 ...
- java操作html格式数据
近期在做数据抓取功能,抓取到的数据为html格式,需在后台进行转换后取值,为了避免使用字符串查找方式获取而使用Jsonp完美实现. 1. 引入Jsonp: <dependency> < ...
- python之类与对象(4)
5. 类的继承 继承可谓是重中之重,也是面向对象编程的核心内容之一.子类可以继承父类的属性以及方法.作为一名测试人员,学习了类之后,我们可以很好的把代码与数据分离开来,有了基本的封装思想.接下来我们将 ...
- leetcode 4 - binary search
注意: 1)需要保证nums1 的长度比 nums2 的长度小:(否则vector指针会越界) 2) 当分割线(partition)在首或尾时,用INT_MIN 和 INT_MAX 代替. 思路: ...
- POJ - 1821 单调队列优化DP + 部分笔记
题意:n个墙壁m个粉刷匠,每个墙壁至多能被刷一次,每个粉刷匠要么不刷,要么就粉刷包含第Si块的长度不超过Li的连续墙壁(中间可不刷),每一块被刷的墙壁都可获得Pi的利润,求最大利润 避免重复粉刷: 首 ...
- 浅析PHP反序列化漏洞之PHP常见魔术方法(一)
作为一个学习web安全的菜鸟,前段时间被人问到PHP反序列化相关的问题,以前的博客中是有这样一篇反序列化漏洞的利用文章的.但是好久过去了,好多的东西已经记得不是很清楚.所以这里尽可能写一篇详细点的文章 ...
- iis上部署本地数据库LocalDB的方法
1. iis应用程序池的标识设置为"ApplicationPoolIdentify"(比较安全) 2. 不要将数据库物理文件保存在网站的物理路径内,因为iis应用程序池的标识为Ap ...
- mysql入门与进阶
MySQL入门与进阶 需求:对一张表中的数据进行增删改查操作(CURD) C:create 创建 U:update 修改 R:read 读|检索 查询 D:delete 删除涉及技术:数据库 1.数据 ...
- zookeeper 数据节点的增删改查
1.连接服务端 [root@localhost bin]# ./zkCli.sh -server 127.0.0.1:2181 Connecting to 127.0.0.1:2181 2018-05 ...