1

我很难找到有关如何访问 Kafka Streams 指标注册表中数据的文档,我想我可能正试图在圆孔中安装一个方形钉。我希望在以下方面得到一些建议:

目标

收集Kafka Streams 指标注册表中记录的指标并将这些值发送到任意端点

工作流程

这是我认为需要完成的事情,并且我已经完成了除最后一个步骤之外的所有步骤(因为度量注册表是私有的,所以这个步骤有问题)。但我可能会以错误的方式解决这个问题:

  • 定义一个实现MetricReporter接口的类。构建 Kafka 在metricChange方法中创建的指标列表(例如,每当调用此方法时,使用当前注册的指标更新哈希图)。
  • metric.reporters在配置属性中指定此类
  • 设置一个进程,轮询 Kafka Streams 指标注册表以获取当前数据,并将值发送到任意端点

无论如何,最后一步在 Kafka 0.10.0.1中似乎是不可能的,因为指标注册表没有公开。如果是正确的工作流程(听起来不是..),或者我误解了提取 Kafka Streams 指标的过程,有人可以告诉我吗?

4

2 回答 2

2

尽管未公开度量注册表,但您仍然可以KafkaMetric通过其KafkaMetric.value()/KafkaMetric.value(timestamp)方法获取给定的值。例如,正如您在 JMXRporter 中观察到的,它从实例化init()metricChange/metricRemoval方法中保留 KafkaMetrics 列表,然后在其MBean实现中,当getAttribute被调用时,它将调用其相应的KafkaMetrics.value()函数。因此,对于您的自定义报告器,您可以应用类似的模式,例如,定期轮询所有保留KafkaMetrics.value()的数据,然后将结果通过管道传输到您的端点。

于 2016-11-17T17:58:02.670 回答
0

org.apache.kafka.common.metrics 中的 MetricReporter 接口已经使您能够管理报告器中的所有 Kafka 流指标。所以不需要kafka内部注册表。

于 2017-08-22T23:35:24.163 回答