近日Mozilla Service团队首次发布了 Heka测试版(v0.2b1),Heka是一款拥有数据收集、分析、监视和报表的工具。其主要组件为 hekad,一个适用于任何主机的轻量级守护程序,其主任务是:
- 通过读取和解析日志文件收集数据,监视服务器状况,和(或)使用任何协议(syslog、statsd、http、heka等)接收客户端网络连接。
- 将采集到的数据转换成标准的内部表示,把元数据封装成Heka系统其它组件可以有效处理的形式。
- 使用一组路由规则评估消息内容和原数据,并为每一个消息分配相应的处理过滤器和外部端点。
- 飞速地处理消息内容,用以执行聚合、滑窗(sliding-window)事件处理和监控、非结构化数据到结构化数据的形成(举个例子:将日志输入文档解析到数字统计数据或者更加友好的数据结构)并将新的消息以报表的形式输出。
- 将接收到或者是内部生成的消息数据发送到外部位置:数据可能被写入一个数据库、一个时间序列数据库或者一个网络服务,包括上行的一个hekad实例做更深的处理和(或)聚合。
Heka使用Go语言编写,在α测试中已被证明其非常适合构建数据管道,并让数据管道同时占有快速和灵活两方面的优势;在α测中,一个单hekad实例可以支撑(接收和路由)起每秒10GB的消息数据。Mozilla Service团队借鉴并延伸了 Logstash的想法,将Heka打造成基于插件的系统。开发者可以通过构建定制的Input、Decoder、Filter(比如数据处理)以及Output插件,进行快速和简洁的功能扩展。
所有4个类型的插件都可以用Go来实现,但是管理这些插件需要修改配置文件并重启系统,比如:添加新的插件,甚至是重新编译hekad binary。Heka还通过允许“Sandboxed Filters”提供了另一种选择,这样你就可以使用Lua来代替Go。这样一来,在一个运行中的Heka实例添加或者删除功能就不需要修改配置及重启服务器。Heka同样还提供了一些Lua API,Sandbox Filters可以使用这些API管理时间序列的环形缓冲区,并生成曲线图报告,这些报告将呈现在Heka的仪表盘上:
(点击查看大图)
开源相关
Heka是项新的技术,虽然已在Mozilla内部广泛使用,但仍稍显粗糙。就像Mozilla每个产品一样,Heka同样开源。了解更多详情可阅读相关资源:
- Heka v0.2 binaries
- Intro to HekaHTML presentation slides
- Heka project documentation
- hekad daemon documentation
- Heka github project
- Heka-build github project
- Services devmailing list (for developer support)
- IRC: #heka channel on irc.mozilla.org
- Heka python client
- Heka node.js client
原文链接: Introducing Heka (编译/仲浩 审校/王旭东)