diff options
Diffstat (limited to 'kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala index c7c480fd..345e5cad 100644 --- a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala +++ b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala @@ -6,6 +6,7 @@ import kamon.module.Module.Registry import java.lang.{StringBuilder => JavaStringBuilder} import com.typesafe.config.ConfigRenderOptions +import kamon.metric.MetricRegistry trait JsonMarshalling[T] { @@ -29,6 +30,7 @@ object JsonMarshalling { array.`object`() .value("name", m.name) .value("description", m.description) + .value("kind", m.kind) .value("enabled", m.enabled) .value("started", m.started) .end() @@ -62,4 +64,31 @@ object JsonMarshalling { .done() } } + + implicit object MetricRegistryStatusJsonMarshalling extends JsonMarshalling[MetricRegistry.Status] { + override def toJson(instance: MetricRegistry.Status, builder: JavaStringBuilder): Unit = { + val metricsObject = JsonWriter.on(builder) + .`object` + .array("metrics") + + instance.metrics.foreach(metric => { + metricsObject + .`object`() + .value("name", metric.name) + .value("type", metric.instrumentType.name) + .`object`("tags") + + metric.tags.foreach { case (tag, value) => metricsObject.value(tag, value) } + + metricsObject + .end() // tags + .end() // metric info + }) + + metricsObject + .end() // metrics array + .end() // object + .done() + } + } }
\ No newline at end of file |