aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2014-06-28 11:37:00 -0300
committerDiego <diegolparra@gmail.com>2014-06-28 11:37:00 -0300
commit0279260cde60505f311aeed08b4706a4dc6fded0 (patch)
treecd494275cd47bb1ae49c229e4aa7a66eb4ea4927
parent4d5803e579e223c4f4f5cb37ab79ca069a007949 (diff)
downloadKamon-0279260cde60505f311aeed08b4706a4dc6fded0.tar.gz
Kamon-0279260cde60505f311aeed08b4706a4dc6fded0.tar.bz2
Kamon-0279260cde60505f311aeed08b4706a4dc6fded0.zip
+ kamon-examples: updated play example to the latest version
-rw-r--r--kamon-examples/kamon-play-example/app/Global.scala9
-rw-r--r--kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala (renamed from kamon-examples/kamon-play-newrelic-example/app/controllers/NewRelicExample.scala)32
-rw-r--r--kamon-examples/kamon-play-example/app/filters/TraceLocalFilter.scala36
-rw-r--r--kamon-examples/kamon-play-example/conf/application.conf61
-rw-r--r--kamon-examples/kamon-play-example/conf/logger.xml (renamed from kamon-examples/kamon-play-newrelic-example/conf/logger.xml)0
-rw-r--r--kamon-examples/kamon-play-example/conf/routes2
-rw-r--r--kamon-examples/kamon-play-example/project/Build.scala47
-rw-r--r--kamon-examples/kamon-play-example/project/build.properties1
-rw-r--r--kamon-examples/kamon-play-example/project/plugins.sbt (renamed from kamon-examples/kamon-play-newrelic-example/project/plugins.sbt)2
-rw-r--r--kamon-examples/kamon-play-example/public/images/favicon.png (renamed from kamon-examples/kamon-play-newrelic-example/public/images/favicon.png)bin687 -> 687 bytes
-rw-r--r--kamon-examples/kamon-play-example/public/images/glyphicons-halflings-white.png (renamed from kamon-examples/kamon-play-newrelic-example/public/images/glyphicons-halflings-white.png)bin8777 -> 8777 bytes
-rw-r--r--kamon-examples/kamon-play-example/public/images/glyphicons-halflings.png (renamed from kamon-examples/kamon-play-newrelic-example/public/images/glyphicons-halflings.png)bin12799 -> 12799 bytes
-rw-r--r--kamon-examples/kamon-play-example/public/javascripts/jquery-1.9.0.min.js (renamed from kamon-examples/kamon-play-newrelic-example/public/javascripts/jquery-1.9.0.min.js)0
-rw-r--r--kamon-examples/kamon-play-example/public/stylesheets/bootstrap.css (renamed from kamon-examples/kamon-play-newrelic-example/public/stylesheets/bootstrap.css)0
-rw-r--r--kamon-examples/kamon-play-example/public/stylesheets/main.css (renamed from kamon-examples/kamon-play-newrelic-example/public/stylesheets/main.css)0
-rw-r--r--kamon-examples/kamon-play-newrelic-example/conf/application.conf51
-rw-r--r--kamon-examples/kamon-play-newrelic-example/conf/routes3
-rw-r--r--kamon-examples/kamon-play-newrelic-example/project/Build.scala22
-rw-r--r--kamon-examples/kamon-play-newrelic-example/project/build.properties1
19 files changed, 179 insertions, 88 deletions
diff --git a/kamon-examples/kamon-play-example/app/Global.scala b/kamon-examples/kamon-play-example/app/Global.scala
new file mode 100644
index 00000000..b7907560
--- /dev/null
+++ b/kamon-examples/kamon-play-example/app/Global.scala
@@ -0,0 +1,9 @@
+import filters.TraceLocalFilter
+import play.api.mvc.WithFilters
+
+object Global extends WithFilters(TraceLocalFilter){
+
+}
+
+
+
diff --git a/kamon-examples/kamon-play-newrelic-example/app/controllers/NewRelicExample.scala b/kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala
index 6b89f268..e5fd78b0 100644
--- a/kamon-examples/kamon-play-newrelic-example/app/controllers/NewRelicExample.scala
+++ b/kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala
@@ -15,23 +15,35 @@
* ========================================================== */
package controllers
-import play.api.mvc.{Action, Controller}
+import play.api.Logger
import play.api.libs.concurrent.Execution.Implicits.defaultContext
+import play.api.mvc.{Action, Controller}
+
import scala.concurrent._
-object NewRelicExample extends Controller {
+/*
+
+curl -i -H 'X-Trace-Token:kamon-test' -H 'MyTraceLocalStorageKey:extra-header' -X GET "http://localhost:9000/helloKamon"
+
+we should get:
+
+HTTP/1.1 200 OK
+Content-Type: text/plain; charset=utf-8
+MyTraceLocalStorageKey: extra-header -> Extra Information
+X-Trace-Token: kamon-test -> default Trace-Token
+Content-Length: 18
+
+Say hello to Kamon
+
+ */
+object KamonPlayExample extends Controller {
+
+ val logger = Logger(this.getClass)
def sayHelloKamon() = Action.async {
Future {
- play.Logger.info("Say hello to Kamon")
+ logger.info("Say hello to Kamon")
Ok("Say hello to Kamon")
}
}
-
- def sayHelloNewRelic() = Action.async {
- Future {
- play.Logger.info("Say hello to NewRelic")
- Ok("Say hello to NewRelic")
- }
- }
}
diff --git a/kamon-examples/kamon-play-example/app/filters/TraceLocalFilter.scala b/kamon-examples/kamon-play-example/app/filters/TraceLocalFilter.scala
new file mode 100644
index 00000000..c9600fad
--- /dev/null
+++ b/kamon-examples/kamon-play-example/app/filters/TraceLocalFilter.scala
@@ -0,0 +1,36 @@
+package filters
+
+import kamon.trace.{TraceRecorder, TraceLocal}
+import play.api.Logger
+import play.api.mvc.{Result, RequestHeader, Filter}
+import play.api.libs.concurrent.Execution.Implicits.defaultContext
+import scala.concurrent.Future
+
+object TraceLocalKey extends TraceLocal.TraceLocalKey {
+ type ValueType = String
+}
+
+/*
+ By default Kamon spreads the trace-token-header-name but sometimes is necessary pass through the application requests with some infomation like
+ extra headers, with kamon it's possible using TraceLocalStorage, in Play applications we can do an Action Filter or using Action Composition,
+ in this example we are using a simple filter where given a Header store the value and then put the value in the result headers..
+
+ More detailed used of TraceLocalStorage: https://github.com/kamon-io/Kamon/blob/b17539d231da923ea854c01d2c69eb02ef1e85b1/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala
+ */
+object TraceLocalFilter extends Filter {
+ val logger = Logger(this.getClass)
+ val TraceLocalStorageKey = "MyTraceLocalStorageKey"
+
+ override def apply(next: (RequestHeader) ⇒ Future[Result])(header: RequestHeader): Future[Result] = {
+ TraceRecorder.withTraceContext(TraceRecorder.currentContext) {
+
+ TraceLocal.store(TraceLocalKey)(header.headers.get(TraceLocalStorageKey).getOrElse("unknown"))
+
+ next(header).map {
+ val traceTokenValue = TraceLocal.retrieve(TraceLocalKey).getOrElse("unknown")
+ logger.info(s"traceTokenValue: $traceTokenValue")
+ result ⇒ result.withHeaders((TraceLocalStorageKey -> traceTokenValue))
+ }
+ }
+ }
+}
diff --git a/kamon-examples/kamon-play-example/conf/application.conf b/kamon-examples/kamon-play-example/conf/application.conf
new file mode 100644
index 00000000..4f9a60ec
--- /dev/null
+++ b/kamon-examples/kamon-play-example/conf/application.conf
@@ -0,0 +1,61 @@
+#kamon related configuration
+akka {
+ extensions = ["kamon.statsd.StatsD"]
+}
+
+kamon {
+
+ statsd {
+ # Hostname and port in which your StatsD is running. Remember that StatsD packets are sent using UDP and
+ # setting unreachable hosts and/or not open ports wont be warned by the Kamon, your data wont go anywhere.
+ hostname = "127.0.0.1"
+ port = 8125
+
+ # Interval between metrics data flushes to StatsD. It's value must be equal or greater than the
+ # kamon.metrics.tick-interval setting.
+ flush-interval = 1 second
+
+ # Max packet size for UDP metrics data sent to StatsD.
+ max-packet-size = 1024 bytes
+
+ # Subscription patterns used to select which metrics will be pushed to StatsD. Note that first, metrics
+ # collection for your desired entities must be activated under the kamon.metrics.filters settings.
+ includes {
+ actor = [ "*" ]
+ trace = [ "*" ]
+ dispatcher = [ "*" ]
+ }
+
+ simple-metric-key-generator {
+ # Application prefix for all metrics pushed to StatsD. The default namespacing scheme for metrics follows
+ # this pattern:
+ # application.host.entity.entity-name.metric-name
+ application = "kamon"
+ }
+ }
+
+ play {
+ include-trace-token-header = true
+ trace-token-header-name = "X-Trace-Token"
+ }
+}
+
+# This is the main configuration file for the application.
+# ~~~~~
+
+# Secret key
+# ~~~~~
+# The secret key is used to secure cryptographics functions.
+# If you deploy your application to several instances be sure to use the same key!
+application.secret="3BLM`<aD^5r/L[MinNdw8Tp@915n0djY[g66OSOLi@?k`>AZE9EOphrmf;;6JsAN"
+
+# The application languages
+# ~~~~~
+application.langs="en"
+
+# Global object class
+# ~~~~~
+# Define the Global object class for this application.
+# Default to Global in the root package.
+# application.global=Global
+
diff --git a/kamon-examples/kamon-play-newrelic-example/conf/logger.xml b/kamon-examples/kamon-play-example/conf/logger.xml
index 84126e9d..84126e9d 100644
--- a/kamon-examples/kamon-play-newrelic-example/conf/logger.xml
+++ b/kamon-examples/kamon-play-example/conf/logger.xml
diff --git a/kamon-examples/kamon-play-example/conf/routes b/kamon-examples/kamon-play-example/conf/routes
new file mode 100644
index 00000000..6c7733cc
--- /dev/null
+++ b/kamon-examples/kamon-play-example/conf/routes
@@ -0,0 +1,2 @@
+# Routes
+GET /helloKamon controllers.KamonPlayExample.sayHelloKamon \ No newline at end of file
diff --git a/kamon-examples/kamon-play-example/project/Build.scala b/kamon-examples/kamon-play-example/project/Build.scala
new file mode 100644
index 00000000..9e615314
--- /dev/null
+++ b/kamon-examples/kamon-play-example/project/Build.scala
@@ -0,0 +1,47 @@
+import java.io.File
+import sbt._
+import Keys._
+import play.Play.autoImport._
+import sbt.Keys._
+import sbt._
+import com.typesafe.sbt.web.SbtWeb
+
+
+object ApplicationBuild extends Build {
+
+ val appName = "Kamon-Play-Example"
+ val appVersion = "1.0-SNAPSHOT"
+
+ val resolutionRepos = Seq(
+ "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/",
+ "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
+ "Sonatype Releases" at "https://oss.sonatype.org/content/repositories/releases",
+ "Kamon Repository Snapshots" at "http://snapshots.kamon.io"
+ )
+
+ val defaultSettings = Seq(
+ scalaVersion := "2.11.0",
+ resolvers ++= resolutionRepos,
+ scalacOptions := Seq(
+ "-encoding",
+ "utf8",
+ "-g:vars",
+ "-feature",
+ "-unchecked",
+ "-deprecation",
+ "-target:jvm-1.6",
+ "-language:postfixOps",
+ "-language:implicitConversions",
+ "-Xlog-reflective-calls"
+ ))
+
+ val dependencies = Seq(
+ "io.kamon" %% "kamon-core" % "0.3.1",
+ "io.kamon" %% "kamon-play" % "0.3.1",
+ "io.kamon" %% "kamon-statsd" % "0.3.1"
+ )
+
+ val main = Project(appName, file(".")).enablePlugins(play.PlayScala, SbtWeb)
+ .settings(libraryDependencies ++= dependencies)
+ .settings(defaultSettings: _*)
+}
diff --git a/kamon-examples/kamon-play-example/project/build.properties b/kamon-examples/kamon-play-example/project/build.properties
new file mode 100644
index 00000000..be6c454f
--- /dev/null
+++ b/kamon-examples/kamon-play-example/project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.13.5
diff --git a/kamon-examples/kamon-play-newrelic-example/project/plugins.sbt b/kamon-examples/kamon-play-example/project/plugins.sbt
index 065c342e..adc5b325 100644
--- a/kamon-examples/kamon-play-newrelic-example/project/plugins.sbt
+++ b/kamon-examples/kamon-play-example/project/plugins.sbt
@@ -5,5 +5,5 @@ logLevel := Level.Warn
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
// Use the Play sbt plugin for Play projects
-addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.1")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.1")
diff --git a/kamon-examples/kamon-play-newrelic-example/public/images/favicon.png b/kamon-examples/kamon-play-example/public/images/favicon.png
index c7d92d2a..c7d92d2a 100644
--- a/kamon-examples/kamon-play-newrelic-example/public/images/favicon.png
+++ b/kamon-examples/kamon-play-example/public/images/favicon.png
Binary files differ
diff --git a/kamon-examples/kamon-play-newrelic-example/public/images/glyphicons-halflings-white.png b/kamon-examples/kamon-play-example/public/images/glyphicons-halflings-white.png
index 3bf6484a..3bf6484a 100644
--- a/kamon-examples/kamon-play-newrelic-example/public/images/glyphicons-halflings-white.png
+++ b/kamon-examples/kamon-play-example/public/images/glyphicons-halflings-white.png
Binary files differ
diff --git a/kamon-examples/kamon-play-newrelic-example/public/images/glyphicons-halflings.png b/kamon-examples/kamon-play-example/public/images/glyphicons-halflings.png
index a9969993..a9969993 100644
--- a/kamon-examples/kamon-play-newrelic-example/public/images/glyphicons-halflings.png
+++ b/kamon-examples/kamon-play-example/public/images/glyphicons-halflings.png
Binary files differ
diff --git a/kamon-examples/kamon-play-newrelic-example/public/javascripts/jquery-1.9.0.min.js b/kamon-examples/kamon-play-example/public/javascripts/jquery-1.9.0.min.js
index 50d1b22f..50d1b22f 100644
--- a/kamon-examples/kamon-play-newrelic-example/public/javascripts/jquery-1.9.0.min.js
+++ b/kamon-examples/kamon-play-example/public/javascripts/jquery-1.9.0.min.js
diff --git a/kamon-examples/kamon-play-newrelic-example/public/stylesheets/bootstrap.css b/kamon-examples/kamon-play-example/public/stylesheets/bootstrap.css
index 2f56af33..2f56af33 100644
--- a/kamon-examples/kamon-play-newrelic-example/public/stylesheets/bootstrap.css
+++ b/kamon-examples/kamon-play-example/public/stylesheets/bootstrap.css
diff --git a/kamon-examples/kamon-play-newrelic-example/public/stylesheets/main.css b/kamon-examples/kamon-play-example/public/stylesheets/main.css
index e69de29b..e69de29b 100644
--- a/kamon-examples/kamon-play-newrelic-example/public/stylesheets/main.css
+++ b/kamon-examples/kamon-play-example/public/stylesheets/main.css
diff --git a/kamon-examples/kamon-play-newrelic-example/conf/application.conf b/kamon-examples/kamon-play-newrelic-example/conf/application.conf
deleted file mode 100644
index 0156d3b4..00000000
--- a/kamon-examples/kamon-play-newrelic-example/conf/application.conf
+++ /dev/null
@@ -1,51 +0,0 @@
-#kamon related configuration
-
-akka {
- extensions = ["kamon.newrelic.NewRelic"]
-}
-
-kamon {
-
- newrelic {
- app-name = "KamonNewRelicExample[Development]"
- license-key = <<Your Key>>
- }
-
- play {
- include-trace-token-header = true
- trace-token-header-name = "X-Trace-Token"
- }
-}
-
-# This is the main configuration file for the application.
-# ~~~~~
-
-# Secret key
-# ~~~~~
-# The secret key is used to secure cryptographics functions.
-# If you deploy your application to several instances be sure to use the same key!
-application.secret="3BLM`<aD^5r/L[MinNdw8Tp@915n0djY[g66OSOLi@?k`>AZE9EOphrmf;;6JsAN"
-
-# The application languages
-# ~~~~~
-application.langs="en"
-
-# Global object class
-# ~~~~~
-# Define the Global object class for this application.
-# Default to Global in the root package.
-# application.global=Global
-
-# Logger
-# ~~~~~
-# You can also configure logback (http://logback.qos.ch/), by providing a logger.xml file in the conf directory .
-
-# Root logger:
-logger.root=ERROR
-
-# Logger used by the framework:
-logger.play=INFO
-
-# Logger provided to your application:
-logger.application=DEBUG
-
diff --git a/kamon-examples/kamon-play-newrelic-example/conf/routes b/kamon-examples/kamon-play-newrelic-example/conf/routes
deleted file mode 100644
index c1c9d64b..00000000
--- a/kamon-examples/kamon-play-newrelic-example/conf/routes
+++ /dev/null
@@ -1,3 +0,0 @@
-# Routes
-GET /helloKamon controllers.NewRelicExample.sayHelloKamon
-GET /helloNewRelic controllers.NewRelicExample.sayHelloNewRelic
diff --git a/kamon-examples/kamon-play-newrelic-example/project/Build.scala b/kamon-examples/kamon-play-newrelic-example/project/Build.scala
deleted file mode 100644
index fa240c39..00000000
--- a/kamon-examples/kamon-play-newrelic-example/project/Build.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-import java.io.File
-import sbt._
-import Keys._
-import play.Project._
-
-object ApplicationBuild extends Build {
-
- val appName = "Kamon-Play-NewRelic-Example"
- val appVersion = "1.0-SNAPSHOT"
-
- val appDependencies = Seq(
- "kamon" % "kamon-core" % "0.0.14-SNAPSHOT",
- "kamon" % "kamon-play" % "0.0.14-SNAPSHOT",
- "kamon" % "kamon-newrelic" % "0.0.14-SNAPSHOT"
- )
-
-
- val main = play.Project(appName, appVersion, appDependencies).settings(
- // For additionally resolving from the conventional ivy local home.
- resolvers += Resolver.file("LocalIvy", file(Path.userHome +
- File.separator + ".ivy2" + File.separator + "local"))(Resolver.ivyStylePatterns))
-}
diff --git a/kamon-examples/kamon-play-newrelic-example/project/build.properties b/kamon-examples/kamon-play-newrelic-example/project/build.properties
deleted file mode 100644
index 0974fce4..00000000
--- a/kamon-examples/kamon-play-newrelic-example/project/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-sbt.version=0.13.0