-
Notifications
You must be signed in to change notification settings - Fork 476
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
evaluate telemetry library #1040
Comments
I propose the alternative of https://github.com/uber-go/tally, which provides
|
As a side issue, it is inconvenient to have |
I'm not quite sure what you mean by The interface that the telemetry package exposes is modeled after the go-metrics interface because that was the simplest thing to do and it seemed likely that such an interface could map easily onto other libraries in the even that we decided to switch it out. It was specifically meant to act as a layer of indirection over whatever metrics library we want to use |
I am referring to prometheus, statsd, etc... + any future things that may be added. Sure they aren't really plugins, but I feel like they are nearly there so I frequently accidentally refer to them like that.
That's not quite all it is doing though. Instead it is also making decisions on when APIs actually get called and with what precise data, units, etc. For instance:
there is a great deal of configuration hidden away that is making decisions for every metrics sink. IMO whatever indirection layer we have should solely be calling the individual sinks and giving them the required data, not performing other operations that should be on the implementation's side. Related would be the idea of when multiple metrics implementations are in use, and perhaps each one would like a separate config. |
The sink logic is fairly specific to go-metrics, I don't know if we'd even keep any of it if we move away. The interface I was referring to is our own telemetry.Metrics. So long as that interface is stable then swapping out shouldn't be too involved. The MeasureSince method on that interface is commented:
While go-metrics does this for us today, moving away from go-metrics might mean taking some of that logic in and doing it ourselves. I don't think we should look at the sinks as anything permanent. The fact that they are tightly coupled to go-metrics is an implementation detail internal to the telemetry package, and they are tightly coupled because they are themselves an artifact of how go-metrics works. |
We have not heard any significant issues related to our metrics framework, and this issue hasn't had any activity for over two years. Closing due to staleness. |
Currently telemetry package used is https://github.com/armon/go-metrics, which provides telemetry via prometheus, statsd, dogstatsd, and inmem. I propose getting off of this library either entirely or partially in favor of another.
-- Use of
goto
statements-- Prometheus impl is broken
--- Using labels causes Prometheus sink to panic hashicorp/go-metrics#78
--- When scraping prometheus endpoint, found that errors occur such as
Overall it may be more effective to transition to a different library.
The text was updated successfully, but these errors were encountered: