aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-05-18 21:38:55 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-05-18 21:38:55 -0300
commitace4d9d09097aa9b7e032d5bfbe154dcf73f74ed (patch)
tree48c18351b3ecd2b28b1c54be0906d0568559a4f8 /kamon-core/src/main/scala/kamon
parentb0f0b611a55d27e7e1149ff028c26c19cc0d9e1c (diff)
downloadKamon-ace4d9d09097aa9b7e032d5bfbe154dcf73f74ed.tar.gz
Kamon-ace4d9d09097aa9b7e032d5bfbe154dcf73f74ed.tar.bz2
Kamon-ace4d9d09097aa9b7e032d5bfbe154dcf73f74ed.zip
= core: move the scheduling of gauge recordings to MetricsExtension and load interval for recordings from config
Diffstat (limited to 'kamon-core/src/main/scala/kamon')
-rw-r--r--kamon-core/src/main/scala/kamon/metrics/ActorMetrics.scala2
-rw-r--r--kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala25
-rw-r--r--kamon-core/src/main/scala/kamon/metrics/TraceMetrics.scala2
3 files changed, 23 insertions, 6 deletions
diff --git a/kamon-core/src/main/scala/kamon/metrics/ActorMetrics.scala b/kamon-core/src/main/scala/kamon/metrics/ActorMetrics.scala
index c703d589..44dd84b0 100644
--- a/kamon-core/src/main/scala/kamon/metrics/ActorMetrics.scala
+++ b/kamon-core/src/main/scala/kamon/metrics/ActorMetrics.scala
@@ -54,7 +54,7 @@ object ActorMetrics extends MetricGroupCategory {
type GroupRecorder = ActorMetricRecorder
def create(config: Config): ActorMetricRecorder = {
- val settings = config.getConfig("kamon.metrics.precision.actor")
+ val settings = config.getConfig("precision.actor")
val processingTimeConfig = extractPrecisionConfig(settings.getConfig("processing-time"))
val mailboxSizeConfig = extractPrecisionConfig(settings.getConfig("mailbox-size"))
diff --git a/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala b/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala
index 9a08da71..78a82d96 100644
--- a/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala
+++ b/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala
@@ -24,16 +24,25 @@ import kamon.Kamon
import akka.actor
import kamon.metrics.Metrics.MetricGroupFilter
import kamon.metrics.Subscriptions.Subscribe
+import java.util.concurrent.TimeUnit
class MetricsExtension(system: ExtendedActorSystem) extends Kamon.Extension {
- val config = system.settings.config
+ val metricsExtConfig = system.settings.config.getConfig("kamon.metrics")
+
+ /** Configured Dispatchers */
+ val metricSubscriptionsDispatcher = system.dispatchers.lookup(metricsExtConfig.getString("dispatchers.metric-subscriptions"))
+ val gaugeRecordingsDispatcher = system.dispatchers.lookup(metricsExtConfig.getString("dispatchers.gauge-recordings"))
+
+ /** Configuration Settings */
+ val gaugeRecordingInterval = metricsExtConfig.getDuration("gauge-recording-interval", TimeUnit.MILLISECONDS)
+
val storage = TrieMap[MetricGroupIdentity, MetricGroupRecorder]()
- val filters = loadFilters(config)
+ val filters = loadFilters(metricsExtConfig)
lazy val subscriptions = system.actorOf(Props[Subscriptions], "kamon-metrics-subscriptions")
def register(identity: MetricGroupIdentity, factory: MetricGroupFactory): Option[factory.GroupRecorder] = {
if (shouldTrack(identity))
- Some(storage.getOrElseUpdate(identity, factory.create(config)).asInstanceOf[factory.GroupRecorder])
+ Some(storage.getOrElseUpdate(identity, factory.create(metricsExtConfig)).asInstanceOf[factory.GroupRecorder])
else
None
}
@@ -50,6 +59,14 @@ class MetricsExtension(system: ExtendedActorSystem) extends Kamon.Extension {
(for ((identity, recorder) ← storage) yield (identity, recorder.collect)).toMap
}
+ def scheduleGaugeRecorder(body: ⇒ Unit): Cancellable = {
+ import scala.concurrent.duration._
+
+ system.scheduler.schedule(gaugeRecordingInterval milliseconds, gaugeRecordingInterval milliseconds) {
+ body
+ }(gaugeRecordingsDispatcher)
+ }
+
private def shouldTrack(identity: MetricGroupIdentity): Boolean = {
filters.get(identity.category.name).map(filter ⇒ filter.accept(identity.name)).getOrElse(false)
}
@@ -57,7 +74,7 @@ class MetricsExtension(system: ExtendedActorSystem) extends Kamon.Extension {
def loadFilters(config: Config): Map[String, MetricGroupFilter] = {
import scala.collection.JavaConverters._
- val filters = config.getObjectList("kamon.metrics.filters").asScala
+ val filters = config.getObjectList("filters").asScala
val allFilters =
for (
diff --git a/kamon-core/src/main/scala/kamon/metrics/TraceMetrics.scala b/kamon-core/src/main/scala/kamon/metrics/TraceMetrics.scala
index 7c197166..5454edf5 100644
--- a/kamon-core/src/main/scala/kamon/metrics/TraceMetrics.scala
+++ b/kamon-core/src/main/scala/kamon/metrics/TraceMetrics.scala
@@ -53,7 +53,7 @@ object TraceMetrics extends MetricGroupCategory {
def create(config: Config): TraceMetricRecorder = {
- val settings = config.getConfig("kamon.metrics.precision.trace")
+ val settings = config.getConfig("precision.trace")
val elapsedTimeConfig = extractPrecisionConfig(settings.getConfig("elapsed-time"))
val segmentConfig = extractPrecisionConfig(settings.getConfig("segment"))