aboutsummaryrefslogtreecommitdiff
path: root/kamon-spray/src/main/scala/kamon/spray/Spray.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-10-31 02:45:41 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2014-10-31 02:45:41 +0100
commit89d3057f8025add4b94b32c142e220ffb79f6c33 (patch)
treeca5cb3adccd9032450ec9f4fbfafb5542a52a315 /kamon-spray/src/main/scala/kamon/spray/Spray.scala
parentcd8dce169b4231bf533445656bfb5a35034a6304 (diff)
downloadKamon-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/Spray.scala')
-rw-r--r--kamon-spray/src/main/scala/kamon/spray/Spray.scala20
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
}