Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collect Apache Kafka consumer metrics #1226

Merged
merged 19 commits into from
Nov 15, 2021

Conversation

DerSchwilk
Copy link
Contributor

Collect Apache Kafka consumer metrics via Alpakka and expose them to Prometheus via Kamon metrics.

Implements KafkaConsumerMetricsRegistry as singleton for collecting the Apache Kafka consumer metrics.
Some minor code styling refactorings.
Adjust ClientActorPropsFactory to be a singleton, since it doesn't have any state.

Signed-off-by: David Schwilk <david.schwilk@bosch.io>
Adds Kamon gauges for kafka consumer metrics. The kamon gauges report the metric values as double. Thus also added double gauge API to Gauge. Remembers new consumers for metric reporting init, since the consumerControl is not ready from the get-go and produces NullPointerException if the metrics are accessed directly after instantiation.

Signed-off-by: David Schwilk <david.schwilk@bosch.io>
Signed-off-by: David Schwilk <david.schwilk@bosch.io>
Signed-off-by: David Schwilk <david.schwilk@bosch.io>
Signed-off-by: David Schwilk <david.schwilk@bosch.io>
@thjaeckle thjaeckle added this to the 2.2.0 milestone Nov 10, 2021
Yannic92 and others added 11 commits November 11, 2021 16:53
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
* Passing the KafkaConsumerMetricsRegistry to the KafkaConsumerStreamFactory
  since it is used for all kinds of streams.
* Using a unique identifier per stream to make sure that each stream
  has its own metrics available. Before we only could distinguish between
  qos 0 and qos 1 per connection.
* Remove concept of Remember registration and just register immediately
* Handle NullpointerException which seems to be a bug in kafka streams

Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
…her successfully or execptionally

* This makes the registration more stable/consistent because it's less likely
  that a developer forgets to de-register or makes de-register wrong
  (see previous commit)

Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
In effort to fix immutability test failures:
"The 'this' reference is passed outwith the constructor."

Signed-off-by: David Schwilk <david.schwilk@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
…or instead

* This avoids manual thread handling

Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
@Yannic92 Yannic92 merged commit 0156a19 into eclipse-ditto:master Nov 15, 2021
@Yannic92 Yannic92 deleted the feature/kafka-metrics branch November 15, 2021 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants