Hermes frontend prometheus support #1692
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for prometheus metrics in
hermes-frontend
Prometheus support status
The downside of defining all metrics in one module is visible in this PR. If we want to register a gauge in
hermes-frontend
it has to be defined inhermes-commons
. If it is defined there thenhermes-commons
needs to have a knowledge about what is being metered (which state object).In case of this PR
hermes-commons
now containsProducerMetrics
which needs to bekafka-producer
aware - because it is responsible for creating metrics for it.The other example is
PersistentBufferMetrics
which is responsible for measuringChronicleMap
size. It must have a knowledge ofChronicleMap
(which is not it's dependency) or any of the interfaces which it implements (ConcurrentMap
,Map
):But this raises a question: should every map be accepted?
Perhaps the gauge should be defined flexibly as
then
hermes-commons
does not need to have the knowledge about state objects and it is responsbility of the caller to supply correct arguments