aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/Metric.scala3
-rw-r--r--kamon-core/src/main/scala/kamon/metric/MetricRegistry.scala17
2 files changed, 20 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/Metric.scala b/kamon-core/src/main/scala/kamon/metric/Metric.scala
index a66d1229..f5ce7b45 100644
--- a/kamon-core/src/main/scala/kamon/metric/Metric.scala
+++ b/kamon-core/src/main/scala/kamon/metric/Metric.scala
@@ -85,6 +85,9 @@ private[kamon] abstract sealed class BaseMetric[T, S](val instrumentType: Instru
private[kamon] def snapshot(): Seq[S] =
instruments.values.map(createSnapshot).toSeq
+ private[kamon] def incarnations(): Seq[Map[String, String]] =
+ instruments.keys.toSeq
+
protected def createInstrument(tags: Tags): T
protected def createSnapshot(instrument: T): S
diff --git a/kamon-core/src/main/scala/kamon/metric/MetricRegistry.scala b/kamon-core/src/main/scala/kamon/metric/MetricRegistry.scala
index cc111d95..11c5653f 100644
--- a/kamon-core/src/main/scala/kamon/metric/MetricRegistry.scala
+++ b/kamon-core/src/main/scala/kamon/metric/MetricRegistry.scala
@@ -88,6 +88,23 @@ class MetricRegistry(initialConfig: Config, scheduler: ScheduledExecutorService)
metric.asInstanceOf[T]
}
+
+ private[kamon] def status(): MetricRegistry.Status = {
+ var metricInfos = Seq.empty[MetricRegistry.MetricInfo]
+ metrics.foreach {
+ case (metricName, metric) =>
+ metric.incarnations().foreach(incarnation => {
+ metricInfos = metricInfos :+ MetricRegistry.MetricInfo(metricName, incarnation, metric.instrumentType)
+ })
+ }
+
+ MetricRegistry.Status(metricInfos)
+ }
+}
+
+object MetricRegistry {
+ case class Status(metrics: Seq[MetricInfo])
+ case class MetricInfo(name: String, tags: Map[String, String], instrumentType: InstrumentType)
}
trait MetricsSnapshotGenerator {