Heka

3.6实时统计图表

虽然Graphite和InfluxDB提供了显示它们接收统计数据图形的机制,但Heka也能够直接提供这些数据的图形。这些图形将实时更新,因为数据流经Heka,没有数据存储驱动图形的延迟。以下配置片段显示如何完成此操作:

3.5编译器插件

我们已经简要介绍了原始数据如何转换为Heka的路由器,过滤器和输出能够处理的标准消息格式。类似地在输出方式上,必须从标准消息格式中提取数据,并将其序列化为目的地所需的任何格式。这通常通过使用编码器插件来实现,编码器插件将Heka消息作为输入,并生成为输出插件可通过线路发送的输出原始字节。CarbonOutput不指定编码器,因为它假设Graphite数据将在消息有效负载中,StatAccumInput将其置于其中,但大多数输出需要指定一个编码器,因为它们知道接收的数据流如何生成消息。
在以上的InfluxDB示例中,你可以看到我们已经定义的statmetric_influx_encoder,SandboxEncoder的一个类型。“Sandbox”插件的核心逻辑在Lua中实现并在沙箱中运行。Heka支持SandboxDecoder,SandboxFilter,和SandboxEncoder插件。在这种情况下,我们使用Heka提供的SandboxEncoder实现,它知道如何从heka.statmetric消息字段中提取数据,并使用该数据以InfluxDB识别的格式生成JSON(详见StatMetricInfluxDBEncoder)。.

3.4转发汇总统计数据

单独收集统计信息实际上不能提供太多价值,我们希望能够查看已收集的数据。Statsd服务器通常用于聚合入站统计信息,然后周期性地将合计数量传送到上游时间序列数据库,通常为Graphite,尽管InfluxDB正在迅速普及。对于Heka来说替换一个独立的statsd服务器,需要能够做同样的事情。
要了解这将如何工作,我们需要回顾一下,看看Heka如何处理消息路由。首先,数据通过输入插件进入Heka管道。然后,它需要从其原始格式转换为Heka知道如何使用的消息对象。通常这是使用解码器插件,虽然在上面的statsd示例,而StatAccumInput本身周期性地生成statmetric消息。
要了解如何工作,我们需要回顾一下,看看Heka如何处理消息路由。首先,数据通过输入插件进入Heka管道。然后,它需要从其原始格式转换为Heka能够识别如何使用的消息对象。通常这是使用解码器插件,虽然在上面的statsd示例,而StatAccumInput本身周期性地生成statmetric消息。

3.3接收Statsd数据

一旦我们配置了Heka的全局设置,就可以开始插件设置。我们要解决的第一件事是让Heka设置为接受来自statsd客户端的数据。这涉及两个不同的插件,一个接受网络连接并解析接收到统计数据的StatsdInput,以及一个StatAccumulatorInput,它将接受StatsdInput收集的数据,执行必要的聚合,并定期生成的‘statmetric’消息包含聚合数据。
这些插件的配置相当简单:

3.2全局配置

如上所述,Heka是用TOML配置文件来进行配置。TOML配置的大部分包括Heka某个插件的相关信息,但是一部分标注hekad允许配置一些Heka的全局配置选项。在许多情况下大多数这些选项的默认值就够了,你的配置根本不需要hekad部分。然而有些选项值需要注意:

页面

Subscribe to RSS - Heka