aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/status
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/status')
-rw-r--r--kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala29
-rw-r--r--kamon-core/src/main/scala/kamon/status/Status.scala36
-rw-r--r--kamon-core/src/main/scala/kamon/status/StatusPageServer.scala2
3 files changed, 46 insertions, 21 deletions
diff --git a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala
index 345e5cad..5a3f22dc 100644
--- a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala
+++ b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala
@@ -1,12 +1,10 @@
package kamon.status
import com.grack.nanojson.JsonWriter
-import kamon.module.Module
-import kamon.module.Module.Registry
import java.lang.{StringBuilder => JavaStringBuilder}
import com.typesafe.config.ConfigRenderOptions
-import kamon.metric.MetricRegistry
+import kamon.module.Module
trait JsonMarshalling[T] {
@@ -20,8 +18,15 @@ trait JsonMarshalling[T] {
object JsonMarshalling {
- implicit object ModuleRegistryStatusJsonMarshalling extends JsonMarshalling[Module.Registry.Status] {
- override def toJson(instance: Registry.Status, builder: JavaStringBuilder): Unit = {
+ implicit object ModuleRegistryStatusJsonMarshalling extends JsonMarshalling[Status.ModuleRegistry] {
+ override def toJson(instance: Status.ModuleRegistry, builder: JavaStringBuilder): Unit = {
+ def moduleKindString(moduleKind: Module.Kind): String = moduleKind match {
+ case Module.Kind.Combined => "combined"
+ case Module.Kind.Metric => "metric"
+ case Module.Kind.Span => "span"
+ case Module.Kind.Plain => "plain"
+ }
+
val array = JsonWriter.on(builder)
.`object`()
.array("modules")
@@ -30,9 +35,9 @@ object JsonMarshalling {
array.`object`()
.value("name", m.name)
.value("description", m.description)
- .value("kind", m.kind)
- .value("enabled", m.enabled)
- .value("started", m.started)
+ .value("kind", moduleKindString(m.kind))
+ .value("isProgrammaticallyRegistered", m.isProgrammaticallyRegistered)
+ .value("isStarted", m.isStarted)
.end()
})
@@ -40,8 +45,8 @@ object JsonMarshalling {
}
}
- implicit object BaseInfoJsonMarshalling extends JsonMarshalling[Status.BaseInfo] {
- override def toJson(instance: Status.BaseInfo, builder: JavaStringBuilder): Unit = {
+ implicit object BaseInfoJsonMarshalling extends JsonMarshalling[Status.Settings] {
+ override def toJson(instance: Status.Settings, builder: JavaStringBuilder): Unit = {
val baseConfigJson = JsonWriter.on(builder)
.`object`()
.value("version", instance.version)
@@ -65,8 +70,8 @@ object JsonMarshalling {
}
}
- implicit object MetricRegistryStatusJsonMarshalling extends JsonMarshalling[MetricRegistry.Status] {
- override def toJson(instance: MetricRegistry.Status, builder: JavaStringBuilder): Unit = {
+ implicit object MetricRegistryStatusJsonMarshalling extends JsonMarshalling[Status.MetricRegistry] {
+ override def toJson(instance: Status.MetricRegistry, builder: JavaStringBuilder): Unit = {
val metricsObject = JsonWriter.on(builder)
.`object`
.array("metrics")
diff --git a/kamon-core/src/main/scala/kamon/status/Status.scala b/kamon-core/src/main/scala/kamon/status/Status.scala
index 0d141ed0..dc059277 100644
--- a/kamon-core/src/main/scala/kamon/status/Status.scala
+++ b/kamon-core/src/main/scala/kamon/status/Status.scala
@@ -1,26 +1,27 @@
package kamon.status
import com.typesafe.config.Config
+import kamon.metric.InstrumentFactory.InstrumentType
import kamon.metric.MetricRegistry
import kamon.{Configuration, Environment, Kamon}
-import kamon.module.Module
-
+import kamon.module.ModuleRegistry
+import kamon.module.Module.{Kind => ModuleKind}
/**
* Allows accessing of component's status APIs without exposing any other internal API from those components.
*/
-class Status(_moduleRegistry: Module.Registry, _metricRegistry: MetricRegistry, configuration: Configuration) {
+class Status(_moduleRegistry: ModuleRegistry, _metricRegistry: MetricRegistry, configuration: Configuration) {
- def baseInfo(): Status.BaseInfo =
- Status.BaseInfo(BuildInfo.version, Kamon.environment, configuration.config())
+ def settings(): Status.Settings =
+ Status.Settings(BuildInfo.version, Kamon.environment, configuration.config())
/**
* Information about what modules have been detected in the classpath and their current status.
*/
- def moduleRegistry(): Module.Registry.Status =
+ def moduleRegistry(): Status.ModuleRegistry =
_moduleRegistry.status()
- def metricRegistry(): MetricRegistry.Status =
+ def metricRegistry(): Status.MetricRegistry =
_metricRegistry.status()
}
@@ -28,13 +29,32 @@ class Status(_moduleRegistry: Module.Registry, _metricRegistry: MetricRegistry,
object Status {
- case class BaseInfo(
+ case class Settings(
version: String,
environment: Environment,
config: Config
)
+ case class ModuleRegistry(
+ modules: Seq[Module]
+ )
+
+ case class Module(
+ name: String,
+ description: String,
+ kind: ModuleKind,
+ isProgrammaticallyRegistered: Boolean,
+ isStarted: Boolean
+ )
+ case class MetricRegistry(
+ metrics: Seq[Metric]
+ )
+ case class Metric(
+ name: String,
+ tags: Map[String, String],
+ instrumentType: InstrumentType
+ )
}
diff --git a/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala b/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala
index 7a124c1b..35273f39 100644
--- a/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala
+++ b/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala
@@ -17,7 +17,7 @@ class StatusPageServer(hostname: String, port: Int, resourceLoader: ClassLoader,
// Serve the current status data on Json.
session.getUri() match {
- case "/status/config" => json(status.baseInfo())
+ case "/status/settings" => json(status.settings())
case "/status/modules" => json(status.moduleRegistry())
case "/status/metrics" => json(status.metricRegistry())
case _ => NotFound