Specific endpoint for prometheus exporter health checking #435
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.
Problem:
A service that installs a prometheus metrics exporter will return all metrics data on any request, regardless of the endpoint requested. This presents an issue when doing health checks using a service networking solution such as Consul, which performs requests on short intervals and spreads the response status + body across all server nodes. Since the response body contains all metrics collected and will probably change from one check to the next, the issue is that this behavior will generate a high network traffic, resulting in delays, elevated costs, and so on.
Solution:
For health checking, the response could be as simple as a successful status code with a short body content. I've implemented this for the path "/health", while maintaining the previous behavior for all other cases.
If necessary, this solution could be adjusted to allow configuration of the health path on
PrometheusBuilder
struct initialization, and it could also be disabled in case the current behavior is desired, but I think this minor change would make significant difference for now.