aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/Kamon.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-05-21 14:05:05 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-05-21 14:05:05 +0200
commit105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8 (patch)
treec09b6644a14032b3c636cc7dbc6e225ca3256e85 /kamon-core/src/main/scala/kamon/Kamon.scala
parente1e7853255131f26702229735e37e160c38f2d08 (diff)
downloadKamon-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.scala80
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)
+ }
+}