diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-05-21 14:05:05 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-05-21 14:05:05 +0200 |
commit | 105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8 (patch) | |
tree | c09b6644a14032b3c636cc7dbc6e225ca3256e85 /kamon-core/src/main/scala/kamon/Kamon.scala | |
parent | e1e7853255131f26702229735e37e160c38f2d08 (diff) | |
download | Kamon-105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8.tar.gz Kamon-105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8.tar.bz2 Kamon-105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8.zip |
wip, trying to get something that could be tested
Diffstat (limited to 'kamon-core/src/main/scala/kamon/Kamon.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/Kamon.scala | 80 |
1 files changed, 30 insertions, 50 deletions
diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 317920f4..b318d59d 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -1,68 +1,48 @@ package kamon +import java.util.concurrent.atomic.AtomicReference + import com.typesafe.config.{Config, ConfigFactory} import kamon.metric.{RecorderRegistry, RecorderRegistryImpl} import kamon.trace.Tracer -/** - * The main entry point to all Kamon functionality. - * - * - * - * - */ -object Kamon { - private val recorderRegistry = new RecorderRegistryImpl(ConfigFactory.load()) - private val reporterRegistry = new ReporterRegistryImpl(recorderRegistry, ConfigFactory.load()) - private val kamonTracer = new Tracer(recorderRegistry, reporterRegistry) - - def tracer: io.opentracing.Tracer = kamonTracer - def metrics: RecorderRegistry = recorderRegistry - def reporters: ReporterRegistry = reporterRegistry - - def reconfigure(config: Config): Unit = synchronized { - recorderRegistry.reconfigure(config) - reporterRegistry.reconfigure(config) - } - - def environment: Environment = ??? - def diagnose: Diagnostic = ??? - def util: Util = ??? -} - - -/* - -Kamon.metrics.getRecorder("app-metrics") -Kamon.metrics.getRecorder("akka-actor", "test") +object Kamon { + private val _initialConfig = ConfigFactory.load() + private val _recorderRegistry = new RecorderRegistryImpl(_initialConfig) + private val _reporterRegistry = new ReporterRegistryImpl(_recorderRegistry, _initialConfig) + private val _tracer = new Tracer(_recorderRegistry, _reporterRegistry) + private val _environment = new AtomicReference[Environment](environmentFromConfig(ConfigFactory.load())) -Kamon.entities.get("akka-actor", "test") -Kamon.entities.remove(entity) + def tracer: io.opentracing.Tracer = + _tracer -Kamon.util.entityFilters.accept(entity) -Kamon.util.clock. + def metrics: RecorderRegistry = + _recorderRegistry -Kamon.entities.new(). + def reporters: ReporterRegistry = + _reporterRegistry -Kamon.subscriptions.loadFromConfig() -Kamon.subscriptions.subscribe(StatsD, Filters.IncludeAll) -Kamon.subscriptions.subscribe(NewRelic, Filters.Empty().includeCategory("span").withTag("span.kind", "server")) + def environment: Environment = + _environment.get() + def reconfigure(config: Config): Unit = synchronized { + _recorderRegistry.reconfigure(config) + _reporterRegistry.reconfigure(config) + _environment.set(environmentFromConfig(config)) + } -Things that you need to do with Kamon: -Global: - - Reconfigure - - Get Diagnostic Data -Metrics: - - create entities - - subscribe to metrics data -Tracer: - - Build Spans / Use ActiveSpanSource - - subscribe to tracing data - */ + case class Environment(config: Config, application: String, host: String, instance: String) + private def environmentFromConfig(config: Config): Environment = { + val environmentConfig = config.getConfig("kamon.environment") + val application = environmentConfig.getString("application") + val host = environmentConfig.getString("host") + val instance = environmentConfig.getString("instance") + Environment(config, application, host, instance) + } +} |