diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-10-31 02:45:41 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-10-31 02:45:41 +0100 |
commit | 89d3057f8025add4b94b32c142e220ffb79f6c33 (patch) | |
tree | ca5cb3adccd9032450ec9f4fbfafb5542a52a315 /kamon-spray/src/main/scala/kamon/spray | |
parent | cd8dce169b4231bf533445656bfb5a35034a6304 (diff) | |
download | Kamon-89d3057f8025add4b94b32c142e220ffb79f6c33.tar.gz Kamon-89d3057f8025add4b94b32c142e220ffb79f6c33.tar.bz2 Kamon-89d3057f8025add4b94b32c142e220ffb79f6c33.zip |
+ spray: external naming for traces and segments, related to #65
Diffstat (limited to 'kamon-spray/src/main/scala/kamon/spray')
-rw-r--r-- | kamon-spray/src/main/scala/kamon/spray/Spray.scala | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/kamon-spray/src/main/scala/kamon/spray/Spray.scala b/kamon-spray/src/main/scala/kamon/spray/Spray.scala index 76adb214..4a0fd74e 100644 --- a/kamon-spray/src/main/scala/kamon/spray/Spray.scala +++ b/kamon-spray/src/main/scala/kamon/spray/Spray.scala @@ -43,6 +43,9 @@ class SprayExtension(private val system: ExtendedActorSystem) extends Kamon.Exte val httpServerMetrics = Kamon(Metrics)(system).register(HttpServerMetrics, HttpServerMetrics.Factory).get // It's safe to assume that HttpServerMetrics will always exist because there is no particular filter for it. + private val nameGeneratorFQN = config.getString("name-generator") + private val nameGenerator: SprayNameGenerator = system.dynamicAccess.createInstanceFor[SprayNameGenerator](nameGeneratorFQN, Nil).get // let's bubble up any problems. + val clientSegmentCollectionStrategy: ClientSegmentCollectionStrategy.Strategy = config.getString("client.segment-collection-strategy") match { case "pipelining" ⇒ ClientSegmentCollectionStrategy.Pipelining @@ -51,6 +54,19 @@ class SprayExtension(private val system: ExtendedActorSystem) extends Kamon.Exte s"only pipelining and internal are valid options.") } - // Later we should expose a way for the user to customize this. - def assignHttpClientRequestName(request: HttpRequest): String = request.uri.authority.host.address + def generateTraceName(request: HttpRequest): String = nameGenerator.generateTraceName(request) + def generateRequestLevelApiSegmentName(request: HttpRequest): String = nameGenerator.generateRequestLevelApiSegmentName(request) + def generateHostLevelApiSegmentName(request: HttpRequest): String = nameGenerator.generateHostLevelApiSegmentName(request) +} + +trait SprayNameGenerator { + def generateTraceName(request: HttpRequest): String + def generateRequestLevelApiSegmentName(request: HttpRequest): String + def generateHostLevelApiSegmentName(request: HttpRequest): String +} + +class SimpleSprayNameGenerator extends SprayNameGenerator { + def generateRequestLevelApiSegmentName(request: HttpRequest): String = request.method.value + ": " + request.uri.path + def generateTraceName(request: HttpRequest): String = request.method.value + ": " + request.uri.path + def generateHostLevelApiSegmentName(request: HttpRequest): String = request.uri.authority.host.address } |