技术人员学习都是从简单例子开始的, 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 (string, 默认‘/usr/share/heka’ 或者 ‘c:\usr\share\heka’):
share_dir是hekad的静态资源,比如控制仪表盘(dashboard )的Html/js 源文件,以及各种Lua插件文件。运行hekad的用户需要对这个目录有读权限。
maxprocs (int, 默认 1):
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

http://blog.mozilla.org/services/category/heka/

Heka 最简单例子的更多相关文章

  1. Hibernate4.2.4入门(一)——环境搭建和简单例子

    一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...

  2. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  3. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  4. ko 简单例子

    Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...

  5. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  6. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  7. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  8. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  9. jsonp的简单例子

    jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

随机推荐

  1. [Flex] 组件Tree系列 —— 阻止用户点击选中Tree中分支节点

    mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述:阻止用户点击选中Tree中分支节点 ...

  2. 【随记】WPF中xaml输入中文乱码问题解决

    在Visual Studio中开发WPF应用程序时,在XMAL文档编写界面输入中文时变为乱码.可能的原因之一是VS中安装了VAssistX插件,导致编码冲突,使中文输入乱码.解决方法是在VAssist ...

  3. [redis] 数据特性简单实验

    位图 由bit位组成的数组,实际的底层数组类型是字符串,而字符串的本质是二进制大对象,所以将其视作位图,位图存储的是boolean指,一定程度上可以减少存储空间. -- 设置位图指定偏移量的比特位的值 ...

  4. spring IOC的实现原理

    姓名:陈中娇     班级:软件151 1. IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应 ...

  5. QRCode简介(收藏)

      一.什么是二维码:二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常 ...

  6. C#根据工作经验来谈谈面向对象

    C#面向对象的三大特性:封装.继承.多态. 这是一种特性,更是官方给我们的学习语法,但是我们根据过去的经验来思考一下, 到底什么是面向对象? 面向对象在我们实际开发中到底起着什么作用? 我们什么时候要 ...

  7. laravel5.5打印sql语句

    额.其实laravel很不方便的地方就是sql写错之后不是很好调试. 上方法. //DB::connection()->enableQueryLog(); // 开启QueryLog//$rep ...

  8. 【测试的艺术】+测试分析&测试计划+模板

    一.项目概述 1.1.项目背景 #就是说一下为什么要做这个项目 1.2.项目目标 #这个项目最终要达到的目标是什么 二.项目整体分析 #项目分为哪些部分?各部分之间的关联是什么?各部分的目标是什么? ...

  9. 【Excel】数据字典制作

    以下是设计的一种新的数据字典!!! 在Excle中新建2个sheet页,分别是:[主页]与[数据字典] 1.主页内容 E5对应的公式如下:=HYPERLINK("#'数据字典'!C" ...

  10. Java 继承学习

    Java 继承 继承实现: 在Java中,如果实现继承的,需要使用Java关键字——extends : 被继承的类叫做超类,继承超类的类叫子类.(一个子类亦可以是另一个类的超类) class 子类 e ...