blob: e6c2d3efc3eb03f052c28fed14ad9fc610ef2f3b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package kamon.trace
import java.util.concurrent.TimeUnit
import akka.actor.ActorSystem
case class TraceSettings(levelOfDetail: LevelOfDetail, sampler: Sampler)
object TraceSettings {
def apply(system: ActorSystem): TraceSettings = {
val tracerConfig = system.settings.config.getConfig("kamon.trace")
val detailLevel: LevelOfDetail = tracerConfig.getString("level-of-detail") match {
case "metrics-only" ⇒ LevelOfDetail.MetricsOnly
case "simple-trace" ⇒ LevelOfDetail.SimpleTrace
case other ⇒ sys.error(s"Unknown tracer level of detail [$other] present in the configuration file.")
}
val sampler: Sampler =
if (detailLevel == LevelOfDetail.MetricsOnly) NoSampling
else tracerConfig.getString("sampling") match {
case "all" ⇒ SampleAll
case "random" ⇒ new RandomSampler(tracerConfig.getInt("random-sampler.chance"))
case "ordered" ⇒ new OrderedSampler(tracerConfig.getInt("ordered-sampler.interval"))
case "threshold" ⇒ new ThresholdSampler(tracerConfig.getDuration("threshold-sampler.minimum-elapsed-time", TimeUnit.NANOSECONDS))
}
TraceSettings(detailLevel, sampler)
}
}
|