From 9d07669dae3ea1bc74b1d21e65618581292a6079 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Fri, 9 Jun 2017 10:29:37 +0200 Subject: replace auto settings for environment with actual values --- kamon-core/src/main/scala/kamon/Environment.scala | 51 +++++++++++++++++++++++ kamon-core/src/main/scala/kamon/Kamon.scala | 21 ++-------- 2 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 kamon-core/src/main/scala/kamon/Environment.scala (limited to 'kamon-core/src/main/scala') diff --git a/kamon-core/src/main/scala/kamon/Environment.scala b/kamon-core/src/main/scala/kamon/Environment.scala new file mode 100644 index 00000000..80833352 --- /dev/null +++ b/kamon-core/src/main/scala/kamon/Environment.scala @@ -0,0 +1,51 @@ +/* ========================================================================================= + * Copyright © 2013-2017 the kamon project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + * ========================================================================================= + */ + +package kamon + +import java.net.InetAddress +import java.util.concurrent.ThreadLocalRandom + +import com.typesafe.config.Config +import kamon.util.HexCodec + +case class Environment(host: String, service: String, instance: String, incarnation: String) + +object Environment { + private val incarnation = HexCodec.toLowerHex(ThreadLocalRandom.current().nextLong()) + + def fromConfig(config: Config): Environment = { + val environmentConfig = config.getConfig("kamon.environment") + + val service = environmentConfig.getString("service") + + val host = readValueOrGenerate( + environmentConfig.getString("host"), + InetAddress.getLocalHost.getHostName + ) + + val instance = readValueOrGenerate( + environmentConfig.getString("instance"), + s"$service@$host" + ) + + Environment(host, service, instance, incarnation) + } + + private def readValueOrGenerate(configuredValue: String, generator: => String): String = + if(configuredValue == "auto") generator else configuredValue + + +} diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index a0c35a71..29c85559 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -22,21 +22,19 @@ import io.opentracing.propagation.Format import io.opentracing.{ActiveSpan, Span, SpanContext} import kamon.metric._ import kamon.trace.Tracer -import kamon.util.{HexCodec, MeasurementUnit} +import kamon.util.MeasurementUnit import scala.concurrent.Future import scala.concurrent.duration.Duration -import scala.concurrent.forkjoin.ThreadLocalRandom object Kamon extends MetricLookup with ReporterRegistry with io.opentracing.Tracer { private val initialConfig = ConfigFactory.load() - private val incarnation = HexCodec.toLowerHex(ThreadLocalRandom.current().nextLong()) private val metricRegistry = new MetricRegistry(initialConfig) private val reporterRegistry = new ReporterRegistryImpl(metricRegistry, initialConfig) private val tracer = new Tracer(Kamon, reporterRegistry) - private val env = new AtomicReference[Environment](environmentFromConfig(ConfigFactory.load())) + private val env = new AtomicReference[Environment](Environment.fromConfig(ConfigFactory.load())) def environment: Environment = env.get() @@ -44,7 +42,7 @@ object Kamon extends MetricLookup with ReporterRegistry with io.opentracing.Trac def reconfigure(config: Config): Unit = synchronized { metricRegistry.reconfigure(config) reporterRegistry.reconfigure(config) - env.set(environmentFromConfig(config)) + env.set(Environment.fromConfig(config)) } @@ -100,17 +98,4 @@ object Kamon extends MetricLookup with ReporterRegistry with io.opentracing.Trac override def stopAllReporters(): Future[Unit] = reporterRegistry.stopAllReporters() - - - case class Environment(config: Config, application: String, host: String, instance: String, incarnation: 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, incarnation) - } } -- cgit v1.2.3