diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2019-02-11 23:16:54 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2019-02-12 02:49:23 +0100 |
commit | 7152517f2586a5b40726365a756087ddddc099ca (patch) | |
tree | 26b4d9a1768dd0460a4cedb9fc4fde27750936a4 | |
parent | 4ce838b1af6257625b27ea38d55947912cba00c9 (diff) | |
download | Kamon-7152517f2586a5b40726365a756087ddddc099ca.tar.gz Kamon-7152517f2586a5b40726365a756087ddddc099ca.tar.bz2 Kamon-7152517f2586a5b40726365a756087ddddc099ca.zip |
self-review changes and use a thread pool for the embedded status page
server
-rw-r--r-- | kamon-core-tests/src/test/scala/kamon/KamonLifecycleSpec.scala | 2 | ||||
-rw-r--r-- | kamon-core/src/main/resources/reference.conf | 8 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/Kamon.scala | 66 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/StatusPage.scala | 22 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/module/ModuleRegistry.scala | 38 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala | 8 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/status/Status.scala | 15 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/status/StatusPageServer.scala | 83 | ||||
-rw-r--r-- | kamon-status/src/api/StatusApi.ts | 6 | ||||
-rw-r--r-- | kamon-status/src/assets/logo.svg | 171 | ||||
-rw-r--r-- | kamon-status/src/components/ModuleList.vue | 2 | ||||
-rw-r--r-- | kamon-status/src/components/ModuleStatusCard.vue | 2 | ||||
-rw-r--r-- | kamon-status/src/components/OverviewCard.vue | 2 | ||||
-rw-r--r-- | kamon-status/src/views/Overview.vue | 4 | ||||
-rw-r--r-- | kamon-status/vue.config.js | 2 |
15 files changed, 161 insertions, 270 deletions
diff --git a/kamon-core-tests/src/test/scala/kamon/KamonLifecycleSpec.scala b/kamon-core-tests/src/test/scala/kamon/KamonLifecycleSpec.scala index 9ee07694..c0f5b50e 100644 --- a/kamon-core-tests/src/test/scala/kamon/KamonLifecycleSpec.scala +++ b/kamon-core-tests/src/test/scala/kamon/KamonLifecycleSpec.scala @@ -60,7 +60,7 @@ object KamonWithRunningReporter extends App { object KamonWithTemporaryReporter extends App { Kamon.registerModule("dummy metric reporter", new DummyMetricReporter()) - Kamon.registerModule("dummy span repoter", new DummySpanReporter()) + Kamon.registerModule("dummy span reporter", new DummySpanReporter()) Thread.sleep(5000) Kamon.stopAllReporters() diff --git a/kamon-core/src/main/resources/reference.conf b/kamon-core/src/main/resources/reference.conf index 37491c79..7a5576bc 100644 --- a/kamon-core/src/main/resources/reference.conf +++ b/kamon-core/src/main/resources/reference.conf @@ -27,14 +27,14 @@ kamon { status { - # When enabled, Kamon will start an embedded web server to publish the status mini-site that contains basic - # status and debugging information. + # When enabled Kamon will start an embedded web server to publish the status page mini-site, which contains basic + # system information that can be used for debugging and troubleshooting issues with Kamon. enabled = true - # Controls the hostname and port in which the status mini-site HTTP server will be listening. + # Controls the hostname and port on which the status page embedded server will be listening. listen { hostname = "0.0.0.0" - port = 9912 + port = 5266 } } diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 284c7553..cfeea19e 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -15,10 +15,6 @@ package kamon -import com.typesafe.config.{Config, ConfigFactory, ConfigRenderOptions} -import kamon.metric.PeriodSnapshot -import kamon.trace.Span - object Kamon extends ClassLoading with Configuration with Utilities @@ -36,64 +32,6 @@ object Kamon extends ClassLoading _environment onReconfigure(newConfig => { - _environment = Environment.fromConfig(config) - }) -} - - -object QuickTest extends App { - val manualConfig = - """ - |kamon.modules { - | kamon-zipkin { - | enabled = false - | description = "Module that sends data to particular places" - | kind = metric - | class = kamon.MyCustomMetricDude - | } - |} - | - |kamon.environment.tags { - | one = test - |} - """.stripMargin - - val newConfig = ConfigFactory.parseString(manualConfig).withFallback(Kamon.config()) - Kamon.reconfigure(newConfig) - - - - Kamon.loadModules() - Kamon.registerModule("my-module", new kamon.module.MetricReporter { - override def reportPeriodSnapshot(snapshot: PeriodSnapshot): Unit = {} - override def start(): Unit = {} - override def stop(): Unit = {} - override def reconfigure(newConfig: Config): Unit = {} - }) - - Kamon.registerModule("my-module-for-spans", new kamon.module.SpanReporter { - override def reportSpans(spans: Seq[Span.FinishedSpan]): Unit = {} - override def start(): Unit = {} - override def stop(): Unit = {} - override def reconfigure(newConfig: Config): Unit = {} + _environment = Environment.fromConfig(newConfig) }) - - - Kamon.histogram("test").refine("actor_class" -> "com.kamon.something.MyActor", "system" -> "HRMS").record(10) - Kamon.rangeSampler("test-rs").refine("actor_class" -> "com.kamon.something.MyActor", "system" -> "HRMS").increment(34) - Kamon.counter("test-counter").refine("tagcito" -> "value").increment(42) - - //println("JSON CONFIG: " + Kamon.config().root().render(ConfigRenderOptions.concise().setFormatted(true).setJson(true))) - - - Thread.sleep(100000000) - - -} - -class MyCustomMetricDude extends kamon.module.MetricReporter { - override def reportPeriodSnapshot(snapshot: PeriodSnapshot): Unit = {} - override def start(): Unit = {} - override def stop(): Unit = {} - override def reconfigure(newConfig: Config): Unit = {} -} +}
\ No newline at end of file diff --git a/kamon-core/src/main/scala/kamon/StatusPage.scala b/kamon-core/src/main/scala/kamon/StatusPage.scala index e5c8ef52..1ac60c1b 100644 --- a/kamon-core/src/main/scala/kamon/StatusPage.scala +++ b/kamon-core/src/main/scala/kamon/StatusPage.scala @@ -1,9 +1,13 @@ package kamon import com.typesafe.config.Config -import kamon.status.{StatusPageServer, Status} +import kamon.status.{Status, StatusPageServer} +import org.slf4j.LoggerFactory + +import scala.util.{Failure, Success, Try} trait StatusPage { self: Configuration with ClassLoading with ModuleLoading with Metrics with Configuration => + private val _log = LoggerFactory.getLogger(classOf[StatusPage]) @volatile private var _statusPageServer: Option[StatusPageServer] = None private val _status = new Status(self._moduleRegistry, self._metricsRegistry, self) @@ -47,10 +51,20 @@ trait StatusPage { self: Configuration with ClassLoading with ModuleLoading with } private def startServer(hostname: String, port: Int, resourceLoader: ClassLoader): Unit = { - val server = new StatusPageServer(hostname, port, resourceLoader, _status) - server.start() + Try { + + val server = new StatusPageServer(hostname, port, resourceLoader, _status) + server.start() + server - _statusPageServer = Some(server) + } match { + case Success(server) => + _log.info(s"Status page started on http://$hostname:$port/") + _statusPageServer = Some(server) + + case Failure(t) => + _log.error("Failed to start the status page embedded server", t) + } } private def stopServer(): Unit = { diff --git a/kamon-core/src/main/scala/kamon/module/ModuleRegistry.scala b/kamon-core/src/main/scala/kamon/module/ModuleRegistry.scala index 81b94f29..d45cd80f 100644 --- a/kamon-core/src/main/scala/kamon/module/ModuleRegistry.scala +++ b/kamon-core/src/main/scala/kamon/module/ModuleRegistry.scala @@ -76,7 +76,7 @@ class ModuleRegistry(classLoading: ClassLoading, configuration: Configuration, c * configured modules state. */ def load(config: Config): Unit = synchronized { - val configuredModules = readModuleSettings(config) + val configuredModules = readModuleSettings(config, true) val automaticallyRegisteredModules = _registeredModules.filterNot { case (_, module) => module.programmaticallyAdded } // Start, reconfigure and stop modules that are still present but disabled. @@ -233,7 +233,7 @@ class ModuleRegistry(classLoading: ClassLoading, configuration: Configuration, c _spanReporterModules.values } - private def readModuleSettings(config: Config): Seq[Module.Settings] = { + private def readModuleSettings(config: Config, emitConfigurationWarnings: Boolean): Seq[Module.Settings] = { val moduleConfigs = config.getConfig("kamon.modules").configurations val moduleSettings = moduleConfigs.map { case (moduleName, moduleConfig) => @@ -253,11 +253,18 @@ class ModuleRegistry(classLoading: ClassLoading, configuration: Configuration, c }) - moduleSettings.failed.foreach { t => - _logger.warn(s"Failed to read configuration for module [$moduleName]", t) + if(emitConfigurationWarnings) { + moduleSettings.failed.foreach { t => + _logger.warn(s"Failed to read configuration for module [$moduleName]", t) - if(moduleConfig.hasPath("requires-aspectj") || moduleConfig.hasPath("auto-start") || moduleConfig.hasPath("extension-class")) { - _logger.warn(s"Module [$moduleName] contains legacy configuration settings, please ensure that no legacy configuration") + val hasLegacySettings = + moduleConfig.hasPath("requires-aspectj") || + moduleConfig.hasPath("auto-start") || + moduleConfig.hasPath("extension-class") + + if (hasLegacySettings) { + _logger.warn(s"Module [$moduleName] contains legacy configuration settings, please ensure that no legacy configuration") + } } } @@ -281,7 +288,10 @@ class ModuleRegistry(classLoading: ClassLoading, configuration: Configuration, c Module.Settings(name, description, moduleClazz, inferredModuleKind, true) } - moduleSettings.failed.foreach(t => _logger.error(s"Failed to load legacy reporter module [${moduleClass}]", t)) + if(emitConfigurationWarnings) { + moduleSettings.failed.foreach(t => _logger.error(s"Failed to load legacy reporter module [${moduleClass}]", t)) + } + moduleSettings }) .filter(_.isSuccess) @@ -291,11 +301,13 @@ class ModuleRegistry(classLoading: ClassLoading, configuration: Configuration, c val (repeatedLegacyModules, uniqueLegacyModules) = legacyModuleSettings .partition(lm => moduleSettings.find(_.clazz.getName == lm.clazz.getName).nonEmpty) - repeatedLegacyModules.foreach(m => - _logger.warn(s"Module [${m.name}] is configured twice, please remove it from the deprecated kamon.reporters setting.")) + if(emitConfigurationWarnings) { + repeatedLegacyModules.foreach(m => + _logger.warn(s"Module [${m.name}] is configured twice, please remove it from the deprecated kamon.reporters setting.")) - uniqueLegacyModules.foreach(m => - _logger.warn(s"Module [${m.name}] is configured in the deprecated kamon.reporters setting, please consider moving it to kamon.modules.")) + uniqueLegacyModules.foreach(m => + _logger.warn(s"Module [${m.name}] is configured in the deprecated kamon.reporters setting, please consider moving it to kamon.modules.")) + } moduleSettings ++ uniqueLegacyModules @@ -334,7 +346,7 @@ class ModuleRegistry(classLoading: ClassLoading, configuration: Configuration, c * Returns the current status of this module registry. */ private[kamon] def status(): Status.ModuleRegistry = { - val automaticallyAddedModules = readModuleSettings(configuration.config()).map(moduleSettings => { + val automaticallyAddedModules = readModuleSettings(configuration.config(), false).map(moduleSettings => { val isActive = _registeredModules.get(moduleSettings.name).nonEmpty Status.Module( @@ -342,7 +354,7 @@ class ModuleRegistry(classLoading: ClassLoading, configuration: Configuration, c moduleSettings.description, moduleSettings.clazz.getCanonicalName, moduleSettings.kind, - isProgrammaticallyRegistered = false, + programmaticallyRegistered = false, moduleSettings.enabled, isActive) }) diff --git a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala index 2291648c..5ab0eb9f 100644 --- a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala +++ b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala @@ -39,9 +39,9 @@ object JsonMarshalling { .value("description", m.description) .value("clazz", m.clazz) .value("kind", moduleKindString(m.kind)) - .value("isProgrammaticallyRegistered", m.isProgrammaticallyRegistered) - .value("enabled", m.isEnabled) - .value("started", m.isStarted) + .value("programmaticallyRegistered", m.programmaticallyRegistered) + .value("enabled", m.enabled) + .value("started", m.started) .end() }) @@ -107,7 +107,7 @@ object JsonMarshalling { override def toJson(instance: Status.Instrumentation, builder: JavaStringBuilder): Unit = { val instrumentationObject = JsonWriter.on(builder) .`object`() - .value("isActive", instance.isIActive) + .value("active", instance.active) .`object`("modules") instance.modules.asScala.foreach { diff --git a/kamon-core/src/main/scala/kamon/status/Status.scala b/kamon-core/src/main/scala/kamon/status/Status.scala index 956e3594..ef5bb8eb 100644 --- a/kamon-core/src/main/scala/kamon/status/Status.scala +++ b/kamon-core/src/main/scala/kamon/status/Status.scala @@ -9,7 +9,8 @@ import kamon.module.Module.{Kind => ModuleKind} import java.util.{Collections, List => JavaList, Map => JavaMap} /** - * Exposes Kamon components' status information. This is meant to be used for informational and debugging purposes. + * Exposes Kamon components' status information. This is meant to be used for informational and debugging purposes and + * by no means should replace the use of reporters to extract information from Kamon. */ class Status(_moduleRegistry: ModuleRegistry, _metricRegistry: MetricRegistry, configuration: Configuration) { @@ -20,8 +21,8 @@ class Status(_moduleRegistry: ModuleRegistry, _metricRegistry: MetricRegistry, c Status.Settings(BuildInfo.version, Kamon.environment, configuration.config()) /** - * Status of the module registry. Describes what modules have been detected in the classpath and their current - * statuses. + * Status of the module registry. Describes what modules have been detected and registered, either from the classpath + * or programatically and their current status. */ def moduleRegistry(): Status.ModuleRegistry = _moduleRegistry.status() @@ -72,9 +73,9 @@ object Status { description: String, clazz: String, kind: ModuleKind, - isProgrammaticallyRegistered: Boolean, - isEnabled: Boolean, - isStarted: Boolean + programmaticallyRegistered: Boolean, + enabled: Boolean, + started: Boolean ) case class MetricRegistry( @@ -94,7 +95,7 @@ object Status { * outside Kamon. */ private[kamon] case class Instrumentation( - isIActive: Boolean, + active: Boolean, modules: JavaMap[String, String], errors: JavaMap[String, JavaList[Throwable]] ) diff --git a/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala b/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala index 2784b87a..b2c7ff74 100644 --- a/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala +++ b/kamon-core/src/main/scala/kamon/status/StatusPageServer.scala @@ -1,15 +1,19 @@ package kamon.status +import java.io.InputStream + import fi.iki.elonen.NanoHTTPD -import fi.iki.elonen.NanoHTTPD.Response import fi.iki.elonen.NanoHTTPD.Response.{Status => StatusCode} +import java.util.Collections +import java.util.concurrent.{ExecutorService, Executors} + +import scala.collection.JavaConverters.asScalaBufferConverter class StatusPageServer(hostname: String, port: Int, resourceLoader: ClassLoader, status: Status) extends NanoHTTPD(hostname, port) { private val RootResourceDirectory = "status" - private val ResourceExtensionRegex = ".*\\.([a-zA-Z]*)".r - + private val ResourceExtensionRegex = ".*\\.([a-zA-Z0-9]*)".r override def serve(session: NanoHTTPD.IHTTPSession): NanoHTTPD.Response = { if(session.getMethod() == NanoHTTPD.Method.GET) { @@ -25,44 +29,85 @@ class StatusPageServer(hostname: String, port: Int, resourceLoader: ClassLoader, } } else { + // Serve resources from the status page folder. - val resource = if (session.getUri() == "/") "/index.html" else session.getUri() - val resourcePath = RootResourceDirectory + resource + val requestedResource = if (session.getUri() == "/") "/index.html" else session.getUri() + val resourcePath = RootResourceDirectory + requestedResource val resourceStream = resourceLoader.getResourceAsStream(resourcePath) - if (resourceStream == null) NotFound else { - NanoHTTPD.newChunkedResponse(StatusCode.OK, mimeType(resource), resourceStream) - } + if (resourceStream == null) NotFound else resource(requestedResource, resourceStream) } } else NotAllowed } + override def start(): Unit = { + setAsyncRunner(new ThreadPoolRunner(Executors.newFixedThreadPool(2))) + start(NanoHTTPD.SOCKET_READ_TIMEOUT, false) + } + private def mimeType(resource: String): String = { val ResourceExtensionRegex(resourceExtension) = resource resourceExtension match { - case "css" => "text/css" - case "js" => "application/javascript" - case "ico" => "image/x-icon" - case "svg" => "image/svg+xml" - case "html" => "text/html" - case _ => "text/plain" + case "css" => "text/css" + case "js" => "application/javascript" + case "ico" => "image/x-icon" + case "svg" => "image/svg+xml" + case "html" => "text/html" + case "woff2" => "font/woff2" + case _ => "text/plain" } } - private def json[T : JsonMarshalling](instance: T): Response = { + private def json[T](instance: T)(implicit marshalling: JsonMarshalling[T]) = { val builder = new java.lang.StringBuilder() - implicitly[JsonMarshalling[T]].toJson(instance, builder) - NanoHTTPD.newFixedLengthResponse(StatusCode.OK, "application/json", builder.toString()) + marshalling.toJson(instance, builder) + + val response = NanoHTTPD.newFixedLengthResponse(StatusCode.OK, "application/json", builder.toString()) + response.closeConnection(true) + response + } + + private def resource(name: String, stream: InputStream) = { + val response = NanoHTTPD.newChunkedResponse(StatusCode.OK, mimeType(name), stream) + response.closeConnection(true) + response } private val NotAllowed = NanoHTTPD.newFixedLengthResponse( StatusCode.METHOD_NOT_ALLOWED, NanoHTTPD.MIME_PLAINTEXT, - "Only GET requests are allowed.") + "Only GET requests are allowed." + ) private val NotFound = NanoHTTPD.newFixedLengthResponse( StatusCode.NOT_FOUND, NanoHTTPD.MIME_PLAINTEXT, - "The requested resource was not found.") + "The requested resource was not found." + ) + + // Closing the connections will ensure that the thread pool will not be exhausted by keep alive + // connections from the browsers. + NotAllowed.closeConnection(true) + NotFound.closeConnection(true) + + + /** + * AsyncRunner that uses a thread pool for handling requests rather than spawning a new thread for each request (as + * the default runner does). + */ + private class ThreadPoolRunner(executorService: ExecutorService) extends NanoHTTPD.AsyncRunner { + final private val _openRequests = Collections.synchronizedList(new java.util.LinkedList[NanoHTTPD#ClientHandler]()) + + override def closeAll(): Unit = + _openRequests.asScala.foreach(_.close()) + + override def closed(clientHandler: NanoHTTPD#ClientHandler): Unit = + _openRequests.remove(clientHandler) + + override def exec(clientHandler: NanoHTTPD#ClientHandler): Unit = { + executorService.submit(clientHandler) + _openRequests.add(clientHandler) + } + } }
\ No newline at end of file diff --git a/kamon-status/src/api/StatusApi.ts b/kamon-status/src/api/StatusApi.ts index 231c5eca..ee596b8d 100644 --- a/kamon-status/src/api/StatusApi.ts +++ b/kamon-status/src/api/StatusApi.ts @@ -26,7 +26,7 @@ export interface Module { description: string clazz: string kind: ModuleKind - isProgrammaticallyRegistered: boolean + programmaticallyRegistered: boolean enabled: boolean started: boolean } @@ -56,7 +56,7 @@ export interface InstrumentationModule { } export interface Instrumentation { - isActive: boolean + active: boolean modules: InstrumentationModule[] errors: { [key: string]: string[]} } @@ -112,7 +112,7 @@ export class StatusApi { public static instrumentationStatus(): Promise<Instrumentation> { return axios.get('/status/instrumentation').then(response => { const instrumentation: Instrumentation = { - isActive: response.data.isActive as boolean, + active: response.data.active as boolean, modules: [], errors: {} } diff --git a/kamon-status/src/assets/logo.svg b/kamon-status/src/assets/logo.svg index 96b29425..d351c48a 100644 --- a/kamon-status/src/assets/logo.svg +++ b/kamon-status/src/assets/logo.svg @@ -1,145 +1,26 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 1529.6959 283.96277" - xml:space="preserve" - sodipodi:docname="logo.svg" - inkscape:version="0.92.3 (2405546, 2018-03-11)" - width="1529.6959" - height="283.96277"><metadata - id="metadata923"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs921" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="2560" - inkscape:window-height="1415" - id="namedview919" - showgrid="false" - inkscape:zoom="0.98958333" - inkscape:cx="1158.9481" - inkscape:cy="121.48356" - inkscape:window-x="1920" - inkscape:window-y="0" - inkscape:window-maximized="0" - inkscape:current-layer="text950" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" /> -<style - type="text/css" - id="style900"> - .st0{fill:#3A493E;} - .st1{fill:#B3B3B3;} - .st2{fill:url(#XMLID_15_);} - .st3{fill:#14C441;} -</style> - -<g - transform="matrix(0.99986889,0,0,0.99986889,0.18871224,0)" - id="XMLID_903_-5" - style="display:inline;fill:#616161;fill-opacity:1"><path - style="fill:#616161;fill-opacity:1" - d="m 388.3,82.3 v 62.3 l 34.9,-40 h 34 l -38.9,41.7 39.3,66.7 h -34 l -20,-37 c -3.6,-6.4 -7.2,-9.6 -10.8,-9.6 -3,0.6 -4.5,2.6 -4.5,5.5 v 41 H 360 V 68.4 h 14.7 c 7.5,0 13.6,6.4 13.6,13.9 z" - class="st0" - id="XMLID_914_-7" - inkscape:connector-curvature="0" /><path - style="fill:#616161;fill-opacity:1" - d="m 492.9,129.9 h -28.3 c 3.4,-20.8 18.1,-31 44,-31 31,0 46.8,10.2 47.4,31 v 38.3 c 0,31 -18.7,44.8 -49.1,47 -27,2.1 -45.7,-10.4 -45.7,-35.3 0.6,-27 20.2,-34.2 48.7,-37 12.1,-1.5 18.3,-5.1 18.3,-11.3 -0.6,-6.4 -6.6,-9.6 -18.3,-9.6 -10,0 -15.5,2.5 -17,7.9 z m 35.7,36.9 v -10.4 c -6.6,2.8 -14.2,5.1 -22.5,6.8 -11.3,2.1 -17,7.4 -17,15.7 0.6,8.9 5.3,13.2 14.2,13.2 15.7,0 25.3,-9.3 25.3,-25.3 z" - class="st0" - id="XMLID_911_-4" - inkscape:connector-curvature="0" /><path - style="fill:#616161;fill-opacity:1" - d="M 598.3,141.1 V 213 h -28.7 v -66.1 c 0,-32.1 16.2,-48 48.2,-48 14.5,0 25.5,3.2 33.6,9.6 8.1,-6.2 19.1,-9.1 33.6,-9.1 32.1,0 48,15.9 47.8,48 v 66.1 h -14.7 c -9.3,-0.6 -14,-5.1 -14,-14 v -57.8 c -0.6,-11.7 -7,-17.4 -19.6,-17.4 -12.5,0 -18.9,5.7 -19.1,17.4 V 213 H 637 v -71.8 c -0.6,-11.7 -7,-17.4 -19.6,-17.4 -12.6,0 -18.9,5.6 -19.1,17.3 z" - class="st0" - id="XMLID_909_-1" - inkscape:connector-curvature="0" /><path - style="fill:#616161;fill-opacity:1" - d="m 850.6,157.3 c 0,38.7 -17.2,58.2 -51.2,58.2 -34,0 -51,-19.6 -51,-58.2 0,-39.1 17,-58.4 51,-58.4 34,0 51.2,19.3 51.2,58.4 z m -73.6,0 c 0.2,21.9 7.6,32.9 22.1,32.9 14.5,0 21.7,-11.5 21.9,-33.8 0,-21.9 -7.2,-32.7 -21.7,-32.7 -14.8,0 -22.3,11.3 -22.3,33.6 z" - class="st0" - id="XMLID_906_-8" - inkscape:connector-curvature="0" /><path - style="fill:#616161;fill-opacity:1" - d="m 945.5,213 c -9.3,-0.6 -14,-5.1 -14,-14 v -57.8 c -0.6,-11.7 -7,-17.4 -19.6,-17.4 -12.6,0 -18.9,5.7 -19.1,17.4 V 213 h -28.7 v -66.1 c 0,-32.1 16.2,-48 48.2,-48 32.1,0 47.8,15.9 47.6,48 V 213 Z" - class="st0" - id="XMLID_904_-5" - inkscape:connector-curvature="0" /></g><g - transform="matrix(0.99986889,0,0,0.99986889,0.18871224,0)" - style="display:inline" - id="XMLID_899_-9"><path - style="fill:#dadada;fill-opacity:1" - d="m 153.7,244 36.5,38 c 1.2,1.2 3.1,2 5,2 h 89.5 c 5.2,0 8.3,-4.7 5.2,-8.1 l -83,-102.5 c -1.8,-2 -5.2,-1.9 -6.9,0.1 L 153.4,238 c -1.6,1.8 -1.4,4.2 0.3,6 z" - class="st1" - id="XMLID_902_-7" - inkscape:connector-curvature="0" /><linearGradient - xlink:href="#XMLID_15_-2" - y2="-214.94597" - x2="63.891499" - y1="198.12531" - x1="63.891499" - gradientUnits="userSpaceOnUse" - id="linearGradient936"><stop - id="stop1003-5" - style="stop-color:#145643" - offset="0" /><stop - id="stop1005-3" - style="stop-color:#14C441" - offset="1" /></linearGradient><path - style="fill:#199053;fill-opacity:1" - d="M 77,12.8 C 69.8,4.7 60.2,0 50.1,0 32.8,0 17.5,13.6 12.7,33.4 5.9,62 1.8,91.2 0.5,120.6 v 0 l 9.8,13.4 c 17.5,24.1 47.9,25.2 66.7,4.5 2.8,-2.3 5.4,-4.9 7.8,-7.8 L 127.4,79.2 C 127.3,79.2 79.5,15 77,12.8 Z" - class="st2" - id="XMLID_901_-8" - inkscape:connector-curvature="0" /><path - d="m 284.6,0 h -73.3 c -12.9,0 -24.8,5.9 -31.7,15.7 l -52.4,63.5 -42.6,51.5 c -2.4,2.9 -5,5.4 -7.8,7.8 C 58,159.2 27.6,158.1 10.1,134 L 0.3,120.6 v 0 0 0 c -1.4,30.8 0.2,61.7 4.9,92.2 0,0.1 0,0.1 0,0.2 0.4,2.3 0.7,4.7 1.1,7 0.1,0.4 0.1,0.8 0.2,1.2 0.3,2 0.7,4.1 1.1,6.1 0.1,0.5 0.2,1 0.3,1.5 0.4,2 0.8,3.9 1.2,5.9 0.1,0.5 0.2,0.9 0.3,1.4 0.5,2.2 0.9,4.4 1.4,6.6 0,0.2 0.1,0.4 0.1,0.5 4.9,22.3 20.9,38.4 39.9,40.5 0.2,0 0.3,0.1 0.5,0.1 1.3,0.1 2.5,0.2 3.8,0.2 0,0 0.1,0 0.1,0 v 0 c 32.3,0 50.7,-18.2 59.9,-30.8 L 291.7,11.8 C 295.4,6.7 291.4,0 284.6,0 Z" - class="st3" - id="XMLID_900_-8" - inkscape:connector-curvature="0" - style="fill:#34cc5b;fill-opacity:1" /><g - aria-label="STATUS" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.62699127px;line-height:125%;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:2.96567488px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="text950"><path - d="m 1039.2985,138.07737 q -6.3722,0 -10.4952,2.62381 -4.1232,2.6238 -4.1232,7.99636 0,5.24764 4.1232,8.12133 4.123,2.74875 17.4919,5.99726 13.494,3.24854 20.2409,9.12086 6.8719,5.87234 6.8719,17.36714 0,11.36984 -8.6211,18.49161 -8.6209,7.12177 -22.6147,7.12177 -20.4909,0 -36.3588,-14.11859 l 9.2459,-11.11996 q 13.2442,11.49479 27.4877,11.49479 7.1219,0 11.245,-2.99864 4.248,-3.12358 4.248,-8.12133 0,-5.12266 -3.9981,-7.87142 -3.8733,-2.8737 -13.494,-5.12268 -9.6207,-2.37392 -14.6184,-4.24807 -4.9978,-1.9991 -8.8711,-5.12267 -7.7466,-5.87235 -7.7466,-17.99184 0,-12.11952 8.7461,-18.61657 8.8711,-6.62198 21.8654,-6.62198 8.3711,0 16.6174,2.74875 8.2462,2.74874 14.2435,7.74648 l -7.8714,11.11996 q -3.8733,-3.49842 -10.4952,-5.74741 -6.6221,-2.24896 -13.1191,-2.24896 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.62699127px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3;stroke-width:3.12358332px" - id="path952" - inkscape:connector-curvature="0" /><path - d="m 1119.4196,140.07645 v 73.84152 h -14.7434 v -73.84152 h -26.4878 v -13.49387 h 67.7192 v 13.49387 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.62699127px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3;stroke-width:3.12358332px" - id="path954" - inkscape:connector-curvature="0" /><path - d="m 1160.1512,194.05197 -8.7461,19.866 h -15.7429 l 38.4825,-87.33539 h 15.7429 l 38.4826,87.33539 h -15.7427 l -8.7462,-19.866 z m 37.7329,-13.61882 -15.8679,-35.98368 -15.8677,35.98368 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.62699127px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3;stroke-width:3.12358332px" - id="path956" - inkscape:connector-curvature="0" /><path - d="m 1258.5795,140.07645 v 73.84152 h -14.7433 v -73.84152 h -26.488 v -13.49387 h 67.7193 v 13.49387 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.62699127px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3;stroke-width:3.12358332px" - id="path958" - inkscape:connector-curvature="0" /><path - d="m 1315.2932,193.92703 q 5.9972,6.99683 16.2426,6.99683 10.2455,0 16.2426,-6.99683 5.9973,-6.99684 5.9973,-18.99139 v -48.35306 h 14.7434 v 48.97779 q 0,18.86643 -10.3703,29.11179 -10.3704,10.12039 -26.613,10.12039 -16.2426,0 -26.6129,-10.12039 -10.3703,-10.24536 -10.3703,-29.11179 v -48.97779 h 14.7433 v 48.35306 q 0,11.99455 5.9973,18.99139 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.62699127px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3;stroke-width:3.12358332px" - id="path960" - inkscape:connector-curvature="0" /><path - d="m 1407.7291,138.07737 q -6.3721,0 -10.4954,2.62381 -4.1231,2.6238 -4.1231,7.99636 0,5.24764 4.1231,8.12133 4.1233,2.74875 17.4922,5.99726 13.4938,3.24854 20.2408,9.12086 6.8718,5.87234 6.8718,17.36714 0,11.36984 -8.621,18.49161 -8.6211,7.12177 -22.6148,7.12177 -20.4906,0 -36.3584,-14.11859 l 9.2457,-11.11996 q 13.2439,11.49479 27.4876,11.49479 7.1218,0 11.2448,-2.99864 4.2481,-3.12358 4.2481,-8.12133 0,-5.12266 -3.9981,-7.87142 -3.8733,-2.8737 -13.4941,-5.12268 -9.6204,-2.37392 -14.6182,-4.24807 -4.9978,-1.9991 -8.8709,-5.12267 -7.7466,-5.87235 -7.7466,-17.99184 0,-12.11952 8.7461,-18.61657 8.8709,-6.62198 21.865,-6.62198 8.3713,0 16.6174,2.74875 8.2464,2.74874 14.2437,7.74648 l -7.8714,11.11996 q -3.8734,-3.49842 -10.4954,-5.74741 -6.6218,-2.24896 -13.1189,-2.24896 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.62699127px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3;stroke-width:3.12358332px" - id="path962" - inkscape:connector-curvature="0" /></g></g></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" width="1529.7" height="283.96"> + <g id="XMLID_903_-5" fill="#616161" transform="matrix(.99987 0 0 .99987 .19 0)"> + <path id="XMLID_914_-7" d="M388.3 82.3v62.3l34.9-40h34l-38.9 41.7 39.3 66.7h-34l-20-37c-3.6-6.4-7.2-9.6-10.8-9.6-3 .6-4.5 2.6-4.5 5.5v41H360V68.4h14.7c7.5 0 13.6 6.4 13.6 13.9z" class="st0"/> + <path id="XMLID_911_-4" d="M492.9 129.9h-28.3c3.4-20.8 18.1-31 44-31 31 0 46.8 10.2 47.4 31v38.3c0 31-18.7 44.8-49.1 47-27 2.1-45.7-10.4-45.7-35.3.6-27 20.2-34.2 48.7-37 12.1-1.5 18.3-5.1 18.3-11.3-.6-6.4-6.6-9.6-18.3-9.6-10 0-15.5 2.5-17 7.9zm35.7 36.9v-10.4c-6.6 2.8-14.2 5.1-22.5 6.8-11.3 2.1-17 7.4-17 15.7.6 8.9 5.3 13.2 14.2 13.2 15.7 0 25.3-9.3 25.3-25.3z" class="st0"/> + <path id="XMLID_909_-1" d="M598.3 141.1V213h-28.7v-66.1c0-32.1 16.2-48 48.2-48 14.5 0 25.5 3.2 33.6 9.6 8.1-6.2 19.1-9.1 33.6-9.1 32.1 0 48 15.9 47.8 48v66.1h-14.7c-9.3-.6-14-5.1-14-14v-57.8c-.6-11.7-7-17.4-19.6-17.4-12.5 0-18.9 5.7-19.1 17.4V213H637v-71.8c-.6-11.7-7-17.4-19.6-17.4-12.6 0-18.9 5.6-19.1 17.3z" class="st0"/> + <path id="XMLID_906_-8" d="M850.6 157.3c0 38.7-17.2 58.2-51.2 58.2s-51-19.6-51-58.2c0-39.1 17-58.4 51-58.4s51.2 19.3 51.2 58.4zm-73.6 0c.2 21.9 7.6 32.9 22.1 32.9 14.5 0 21.7-11.5 21.9-33.8 0-21.9-7.2-32.7-21.7-32.7-14.8 0-22.3 11.3-22.3 33.6z" class="st0"/> + <path id="XMLID_904_-5" d="M945.5 213c-9.3-.6-14-5.1-14-14v-57.8c-.6-11.7-7-17.4-19.6-17.4-12.6 0-18.9 5.7-19.1 17.4V213h-28.7v-66.1c0-32.1 16.2-48 48.2-48 32.1 0 47.8 15.9 47.6 48V213z" class="st0"/> + </g> + <g id="XMLID_899_-9" transform="matrix(.99987 0 0 .99987 .19 0)"> + <path id="XMLID_902_-7" fill="#dadada" d="M153.7 244l36.5 38c1.2 1.2 3.1 2 5 2h89.5c5.2 0 8.3-4.7 5.2-8.1l-83-102.5c-1.8-2-5.2-1.9-6.9.1L153.4 238c-1.6 1.8-1.4 4.2.3 6z"/> + <linearGradient id="linearGradient936" x1="63.89" x2="63.89" y1="198.13" y2="-214.95" gradientUnits="userSpaceOnUse" xlink:href="#XMLID_15_-2"> + <stop id="stop1003-5" offset="0" stop-color="#145643"/> + <stop id="stop1005-3" offset="1" stop-color="#14c441"/> + </linearGradient> + <path id="XMLID_901_-8" fill="#199053" d="M77 12.8C69.8 4.7 60.2 0 50.1 0 32.8 0 17.5 13.6 12.7 33.4 5.9 62 1.8 91.2.5 120.6l9.8 13.4c17.5 24.1 47.9 25.2 66.7 4.5 2.8-2.3 5.4-4.9 7.8-7.8l42.6-51.5c-.1 0-47.9-64.2-50.4-66.4z"/> + <path id="XMLID_900_-8" fill="#34cc5b" d="M284.6 0h-73.3c-12.9 0-24.8 5.9-31.7 15.7l-52.4 63.5-42.6 51.5c-2.4 2.9-5 5.4-7.8 7.8-18.8 20.7-49.2 19.6-66.7-4.5L.3 120.6c-1.4 30.8.2 61.7 4.9 92.2v.2c.4 2.3.7 4.7 1.1 7 .1.4.1.8.2 1.2a130.15 130.15 0 0 0 1.4 7.6l1.2 5.9.3 1.4c.5 2.2.9 4.4 1.4 6.6 0 .2.1.4.1.5 4.9 22.3 20.9 38.4 39.9 40.5.2 0 .3.1.5.1 1.3.1 2.5.2 3.8.2h.1c32.3 0 50.7-18.2 59.9-30.8L291.7 11.8c3.7-5.1-.3-11.8-7.1-11.8z"/> + <g aria-label="STATUS" style="line-height:125%;-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" id="text950" fill="#b3b3b3" stroke-width="3.12" font-family="Montserrat" font-size="118.63" font-weight="400" letter-spacing="0" word-spacing="0"> + <path d="M1039.3 138.08q-6.37 0-10.5 2.62-4.12 2.62-4.12 8 0 5.25 4.12 8.12 4.13 2.75 17.5 6 13.49 3.24 20.24 9.12 6.87 5.87 6.87 17.36 0 11.37-8.62 18.5-8.62 7.12-22.62 7.12-20.49 0-36.36-14.12l9.25-11.12q13.24 11.5 27.49 11.5 7.12 0 11.24-3 4.25-3.13 4.25-8.13 0-5.12-4-7.87-3.87-2.87-13.5-5.12-9.61-2.37-14.61-4.25-5-2-8.87-5.12-7.75-5.87-7.75-18 0-12.11 8.75-18.6 8.87-6.63 21.86-6.63 8.37 0 16.62 2.75 8.25 2.75 14.24 7.74l-7.87 11.12q-3.87-3.5-10.5-5.74-6.61-2.25-13.11-2.25z" style="-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" id="path952"/> + <path d="M1119.42 140.08v73.84h-14.74v-73.84h-26.5v-13.5h67.73v13.5z" style="-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" id="path954"/> + <path d="M1160.15 194.05l-8.74 19.87h-15.75l38.48-87.34h15.75l38.48 87.34h-15.74l-8.75-19.87zm37.73-13.62l-15.86-35.98-15.87 35.98z" style="-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" id="path956"/> + <path d="M1258.58 140.08v73.84h-14.74v-73.84h-26.5v-13.5h67.73v13.5z" style="-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" id="path958"/> + <path d="M1315.3 193.93q5.99 7 16.24 7 10.24 0 16.24-7 6-7 6-19v-48.35h14.74v48.98q0 18.87-10.37 29.11-10.37 10.12-26.61 10.12-16.25 0-26.62-10.12-10.37-10.24-10.37-29.11v-48.98h14.75v48.36q0 11.99 6 18.99z" style="-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" id="path960"/> + <path d="M1407.73 138.08q-6.37 0-10.5 2.62-4.12 2.62-4.12 8 0 5.25 4.12 8.12 4.13 2.75 17.5 6 13.49 3.24 20.24 9.12 6.87 5.87 6.87 17.36 0 11.37-8.62 18.5-8.62 7.12-22.62 7.12-20.49 0-36.36-14.12l9.25-11.12q13.24 11.5 27.49 11.5 7.12 0 11.24-3 4.25-3.13 4.25-8.13 0-5.12-4-7.87-3.87-2.87-13.5-5.12-9.61-2.37-14.61-4.25-5-2-8.87-5.12-7.75-5.87-7.75-18 0-12.11 8.75-18.6 8.87-6.63 21.86-6.63 8.37 0 16.62 2.75 8.25 2.75 14.24 7.74l-7.87 11.12q-3.87-3.5-10.5-5.74-6.61-2.25-13.11-2.25z" style="-inkscape-font-specification:'Montserrat, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" id="path962"/> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/kamon-status/src/components/ModuleList.vue b/kamon-status/src/components/ModuleList.vue index 6cef9e2d..ded523d7 100644 --- a/kamon-status/src/components/ModuleList.vue +++ b/kamon-status/src/components/ModuleList.vue @@ -42,7 +42,7 @@ export default class ModuleList extends Vue { name: 'Kamon APM', description: 'See your metrics and trace data for free with a Starter account.', kind: ModuleKind.Combined, - isProgrammaticallyRegistered: false, + programmaticallyRegistered: false, enabled: false, started: false, clazz: '' diff --git a/kamon-status/src/components/ModuleStatusCard.vue b/kamon-status/src/components/ModuleStatusCard.vue index d095d7b3..18e2b038 100644 --- a/kamon-status/src/components/ModuleStatusCard.vue +++ b/kamon-status/src/components/ModuleStatusCard.vue @@ -30,7 +30,7 @@ export default class ModuleStatusCard extends Vue { @Prop() private module!: Module get discoveryStatus(): string { - return this.module.isProgrammaticallyRegistered ? 'manual' : 'automatic' + return this.module.programmaticallyRegistered ? 'manual' : 'automatic' } get runStatus(): { message: string, color: string, icon: string } { diff --git a/kamon-status/src/components/OverviewCard.vue b/kamon-status/src/components/OverviewCard.vue index 8939d93d..6746d761 100644 --- a/kamon-status/src/components/OverviewCard.vue +++ b/kamon-status/src/components/OverviewCard.vue @@ -53,7 +53,7 @@ export default class OverviewCard extends Vue { } get instrumentationStatusMessage(): string { - return this.instrumentation.map(i => (i.isActive ? 'Active' : 'Disabled') as string).getOrElse('Unknown') + return this.instrumentation.map(i => (i.active ? 'Active' : 'Disabled') as string).getOrElse('Unknown') } get metricsStatusMessage(): string { diff --git a/kamon-status/src/views/Overview.vue b/kamon-status/src/views/Overview.vue index 7d200e81..424987c1 100644 --- a/kamon-status/src/views/Overview.vue +++ b/kamon-status/src/views/Overview.vue @@ -16,7 +16,7 @@ <div class="col-12 pt-4 pb-2" v-if="metrics.length > 0"> <h2>Metrics</h2> </div> - <div class="col-12"> + <div class="col-12" v-if="metrics.length > 0"> <metric-list :metrics="metrics"/> </div> <div class="col-12 mb-5"> @@ -74,7 +74,7 @@ export default class Overview extends Vue { } get instrumentationStatusMessage(): string { - return this.instrumentation.map(i => (i.isActive ? 'Active' : 'Disabled') as string).getOrElse('Unknown') + return this.instrumentation.map(i => (i.active ? 'Active' : 'Disabled') as string).getOrElse('Unknown') } get metricsStatusMessage(): string { diff --git a/kamon-status/vue.config.js b/kamon-status/vue.config.js index 9459cace..76a1773c 100644 --- a/kamon-status/vue.config.js +++ b/kamon-status/vue.config.js @@ -1,6 +1,6 @@ module.exports = { productionSourceMap: false, devServer: { - proxy: 'http://localhost:9912' + proxy: 'http://localhost:5266' } }
\ No newline at end of file |