Comments (8)
I think #26 addresses this?
from go-metrics.
@dpiddy partially. Although Histogram.Max() is still broken in that branch.
from go-metrics.
This is indeed very similar to #26 and I'm still very torn. I think it's poor form for us to throw away accurate min/max data in order to agree with a purposefully inaccurate (optimized for size) sample.
@paulhammond pointed out that we could just do both. What do you guys (and @albanpeignier) think of exposing the Sample
behind the histogram and adding Min()
, Max()
, and so on to the Sample
interface?
from go-metrics.
I think there needs to be a way to get these stats on an interval basis. I just started playing with go-metrics along with go-datadog and seeing max for a metric only go up (modulo process restarts) is not ideal. Same with count.
Some ideas:
- Expose the
Sample
as you said - Make the current methods sample/snapshot-based and add corresponding
AllTime*()
methods - Make the source of the current methods tweakable per histogram, either from all-time data or a current snapshot
PS: go-metrics is really nice, thanks!
from go-metrics.
@rcrowley You really need to move it to the Snapshot to be consistent with other values you may read.
from go-metrics.
To clarify ... IMO reporting should work like this ...
<-tick
s := histogam.Snapshot()
s.Min()
s.Max()
s.p99()
etc...
send data...
then let s get garbage collected.
This nicely de-couples the Histogram / Samples / Snapshots.
If you don't do this ... additional samples can (and will) be added to the Sample between reading min/max/p99, etc, skewing results. The snapshot doesn't need to be thread safe either, so wouldn't require any mutexes.
I don't think this sacrifices anything and actually gives me accurate Min/Max/etc data given the snapshot in time of the histogram data.
Again, FWIW @codahale's metrics does it this way and IMO it's the "right way" (tm). ;-)
from go-metrics.
Every time you @-mention me, I get re-subscribed to this issue. I love you all, but I don't have anything to add to the discussion. :)
from go-metrics.
Closed by #32.
from go-metrics.
Related Issues (20)
- How do I stop logging metrics? HOT 1
- Support for arbitrary times of now
- Feature request: Write metrics to a local file as csv format.
- Remove deprecation message.
- CaptureDebugGCStats panics HOT 1
- lock on global rand causes latency spike
- Improve documentation
- Use runtime.SetFinalizer on registration to avoid the need to Unregister meters or timers
- ExpDecaySample.Update - problem with rand.Float64() divider
- Locks missing on Registry's Each and GetAll functions => concurrent reads/writes in registry map
- Unregistering depleted exponential decay/EWMA counters
- [Question] Count by range of timer metrics?
- How to print metrics in console HOT 1
- Do we expect `StandardEWMA.Tick` to be called concurrently? HOT 2
- Difference with official Prometheus library github.com/prometheus/prometheus HOT 1
- OpenTelemetry exporter HOT 2
- Is this project still maintained? HOT 2
- msg := <-claim.Messages msg == nil
- Can this project be released under standard MIT license?
- PRs wanted?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-metrics.