aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric/TickSnapshot.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric/TickSnapshot.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/TickSnapshot.scala68
1 files changed, 61 insertions, 7 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/TickSnapshot.scala b/kamon-core/src/main/scala/kamon/metric/TickSnapshot.scala
index b7cc349e..e8587ffe 100644
--- a/kamon-core/src/main/scala/kamon/metric/TickSnapshot.scala
+++ b/kamon-core/src/main/scala/kamon/metric/TickSnapshot.scala
@@ -1,18 +1,72 @@
package kamon.metric
-import java.time.Instant
-import kamon.metric.instrument.{DistributionSnapshot, SingleValueSnapshot}
+import kamon.util.MeasurementUnit
-case class Interval(from: Instant, to: Instant)
+case class Interval(from: Long, to: Long)
case class MetricsSnapshot(
- histograms: Seq[DistributionSnapshot],
- minMaxCounters: Seq[DistributionSnapshot],
- gauges: Seq[SingleValueSnapshot],
- counters: Seq[SingleValueSnapshot]
+ histograms: Seq[MetricDistribution],
+ minMaxCounters: Seq[MetricDistribution],
+ gauges: Seq[MetricValue],
+ counters: Seq[MetricValue]
)
case class TickSnapshot(interval: Interval, metrics: MetricsSnapshot)
+
+/**
+ * Snapshot for instruments that internally track a single value. Meant to be used for counters and gauges.
+ *
+ */
+case class MetricValue(name: String, tags: Map[String, String], measurementUnit: MeasurementUnit, value: Long)
+
+/**
+ * Snapshot for instruments that internally the distribution of values in a defined dynamic range. Meant to be used
+ * with histograms and min max counters.
+ */
+case class MetricDistribution(name: String, tags: Map[String, String], measurementUnit: MeasurementUnit,
+ dynamicRange: DynamicRange, distribution: Distribution)
+
+
+trait Distribution {
+ def buckets: Seq[Bucket]
+ def bucketsIterator: Iterator[Bucket]
+
+ def min: Long
+ def max: Long
+ def sum: Long
+ def count: Long
+ def percentile(p: Double): Percentile
+
+ def percentiles: Seq[Percentile]
+ def percentilesIterator: Iterator[Percentile]
+}
+
+trait Bucket {
+ def value: Long
+ def frequency: Long
+}
+
+trait Percentile {
+ def quantile: Double
+ def value: Long
+ def countUnderQuantile: Long
+}
+
+
+trait DistributionSnapshotInstrument {
+ private[kamon] def snapshot(): MetricDistribution
+}
+
+trait SingleValueSnapshotInstrument {
+ private[kamon] def snapshot(): MetricValue
+}
+
+trait SnapshotableHistogram extends Histogram with DistributionSnapshotInstrument
+trait SnapshotableMinMaxCounter extends MinMaxCounter with DistributionSnapshotInstrument
+trait SnapshotableCounter extends Counter with SingleValueSnapshotInstrument
+trait SnapshotableGauge extends Gauge with SingleValueSnapshotInstrument
+
+