aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/module/Module.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/module/Module.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/module/Module.scala60
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"),