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)メソッドによって指定された の値を取得できます。init()たとえば、JMXRporter で見たように、インスタンス化されたメソッドから KafkaMetrics のリストを保持し、metricChange/metricRemovalそのMBean実装でgetAttributeが呼び出されると、対応するKafkaMetrics.value()関数を呼び出します。したがって、カスタマイズされたレポーターに対して、同様のパターンを適用できます。たとえば、保持されているすべてを定期的にポーリングしKafkaMetrics.value()、結果をエンドポイントにパイプします。

于 2016-11-17T17:58:02.670 に答える