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

Add support for Prometheus metrics #432

Open
SuperQ opened this issue Apr 17, 2018 · 3 comments
Open

Add support for Prometheus metrics #432

SuperQ opened this issue Apr 17, 2018 · 3 comments

Comments

@SuperQ
Copy link

SuperQ commented Apr 17, 2018

It would be nice if the various services exposed a Prometheus /metrics endpoint. This would allow for easy monitoring and alerting, especially useful for Kubernetes users, who very often use Prometheus.

As the project is in Go, we have an efficient library for instrumenting code.

@rgooch
Copy link
Contributor

rgooch commented Apr 18, 2018

I'm not really keen on that. I consider the tricorder/Scotty ecosystem a better solution (it supports more than floats and has a better UI for humans to discover and explore the available metrics for an application), and it follows the vision of more integrations in the metrics space (like integrating with the health-agent for health checking during rollouts). Also, I don't want to add another code dependency and bloat out the system. Note also that the tricorder library creates a /metrics endpoint already.

What might be a good alternative is to add the ability to push metrics from Scotty to Prometheus. The advantage of this approach is that none of the Dominator ecosystem components need to be changed.

Please take a look:
https://github.com/Symantec/scotty
https://docs.google.com/document/d/e/2PACX-1vQPhkHYiLK7aKHLECa9EFtSCBSPK-obgGB8C66d72Kl-ej9NikRKYGsuFj1R9aDTlGiZA7OmXrVw8P3/pub

@SuperQ
Copy link
Author

SuperQ commented Apr 18, 2018

You may be interested in the OpenMetrics format that is being worked on. We are adding support for uint64 there, which covers a couple of use cases where float64 isn't sufficient.

@SuperQ
Copy link
Author

SuperQ commented Apr 18, 2018

You may also be interested in our TSDB library as it's more than 15x as memory and storage efficient than the TSDB proposed in the scotty design doc. The key trick is that it separates sample values from metric indexing. This allows each 1k series block to contain only samples and timestamps, in a double-delta encoded compressed format. This reduces the per-sample space requirements to less than 1.1 bytes per sample (float64+uint64 epoch ms).

There's a good talk on the design from PromCon last year:
https://promcon.io/2017-munich/talks/storing-16-bytes-at-scale/

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

No branches or pull requests

2 participants