diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2019-01-23 17:12:01 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2019-01-23 17:12:01 +0100 |
commit | 1db3f5c9c984dabbad7400c0c092942ff04580c0 (patch) | |
tree | fc2ec91cb15afdf217d7520782524060e182f63f /kamon-core/src/main/scala/kamon/module | |
parent | e311df4b3a272f4f160857f718a96ec316a2fc06 (diff) | |
download | Kamon-1db3f5c9c984dabbad7400c0c092942ff04580c0.tar.gz Kamon-1db3f5c9c984dabbad7400c0c092942ff04580c0.tar.bz2 Kamon-1db3f5c9c984dabbad7400c0c092942ff04580c0.zip |
initial work on a embeded status page
Diffstat (limited to 'kamon-core/src/main/scala/kamon/module')
-rw-r--r-- | kamon-core/src/main/scala/kamon/module/Module.scala | 60 |
1 files changed, 50 insertions, 10 deletions
diff --git a/kamon-core/src/main/scala/kamon/module/Module.scala b/kamon-core/src/main/scala/kamon/module/Module.scala index 41649629..f32e949b 100644 --- a/kamon-core/src/main/scala/kamon/module/Module.scala +++ b/kamon-core/src/main/scala/kamon/module/Module.scala @@ -289,19 +289,25 @@ object Module { } filter(_.isSuccess) map(_.get) toSeq - // Legacy modules from <1.2.0 - val legacyModules = config.getStringList("kamon.reporters").asScala map { moduleClass => - Settings(moduleClass, moduleClass, true) - } toSeq - val (repeatedLegacyModules, uniqueLegacyModules) = legacyModules.partition(lm => moduleSettings.find(_.fqcn == lm.fqcn).nonEmpty) - repeatedLegacyModules.foreach(m => - _logger.warn(s"Module [${m.name}] is configured twice, please remove it from the deprecated kamon.reporters setting.")) + // Load all modules that might have been configured using the legacy "kamon.reporters" setting from <1.2.0 + // versions. This little hack should be removed by the time we release 2.0. + // + if(config.hasPath("kamon.reporters")) { + val legacyModules = config.getStringList("kamon.reporters").asScala map { moduleClass => + Settings(moduleClass, moduleClass, true) + } toSeq - uniqueLegacyModules.foreach(m => - _logger.warn(s"Module [${m.name}] is configured in the deprecated kamon.reporters setting, please consider moving it to kamon.modules.")) + val (repeatedLegacyModules, uniqueLegacyModules) = legacyModules.partition(lm => moduleSettings.find(_.fqcn == lm.fqcn).nonEmpty) + repeatedLegacyModules.foreach(m => + _logger.warn(s"Module [${m.name}] is configured twice, please remove it from the deprecated kamon.reporters setting.")) - moduleSettings ++ uniqueLegacyModules + 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 + + } else moduleSettings } /** @@ -322,6 +328,26 @@ object Module { /** + * Returns the current status of this module registry. + */ + private[kamon] def status(): Registry.Status = { + val automaticallyAddedModules = readModuleSettings(configuration.config()).map(moduleSettings => { + val entry = _registeredModules.get(moduleSettings.name) + Registry.ModuleInfo(moduleSettings.name, moduleSettings.fqcn, moduleSettings.enabled, entry.nonEmpty) + }) + + val programmaticallyAddedModules = _registeredModules + .filter { case (_, entry) => entry.programmaticallyAdded } + .map { case (name, entry) => { + Registry.ModuleInfo(name, entry.module.getClass.getName, true, true) + }} + + val allModules = automaticallyAddedModules ++ programmaticallyAddedModules + Registry.Status(allModules) + } + + + /** * Registers a module and schedules execution of its start procedure. */ private def startModule(entry: Entry[Module]): Unit = { @@ -396,6 +422,20 @@ object Module { } } + object Registry { + + case class Status( + modules: Seq[ModuleInfo] + ) + + case class ModuleInfo( + name: String, + description: String, + enabled: Boolean, + started: Boolean + ) + } + private def readRegistryConfiguration(config: Config): RegistrySettings = RegistrySettings( metricTickInterval = config.getDuration("kamon.metric.tick-interval"), |