Expose Dropwizard metrics in json
Compatible with scala 2.11 and scala 2.12, with play-json and circe.
Circe
Circe version | metrics-circe version |
---|---|
0.8.0 | 0.1 |
0.9.A | 0.3 |
0.12.3 | 1.0 |
0.13.0 | 1.1 |
Play-json
Play json version | metrics-playjson version |
---|---|
2.6.2 | 0.1 |
2.6.7 | 0.3 |
2.7.4 | 1.1 |
2.8.1 | 1.2.1 |
resolvers += "Tabmo MyGet Public" at "https://www.myget.org/F/tabmo-public/maven/"
// For Circe
libraryDependencies += "io.tabmo" %% "metrics-circe" % metricsCirceVersion
// For Play-json
libraryDependencies += "io.tabmo" %% "metrics-playjson" % metricsPlayjsonVersion
Required dependency: play-circe
libraryDependencies += "play-circe" %% "play-circe" % s"2.6-$playCirceVersion"
package play.api.libs.circe
import io.circe.generic.auto._
import io.circe.syntax._
import play.api._
import play.api.mvc._
import nl.grons.metrics.scala.DefaultInstrumented
class MetricController(val controllerComponents: ControllerComponents) extends BaseController with DefaultInstrumented with Circe {
import io.circe.syntax._
import io.tabmo.metrics.circe._
def get = Action {
Metrics.callToApiCounter.inc()
Ok()
}
//expose all metrics to our json api
def exposeMetrics = Action {
Ok(Metrics.asJson)
}
}
object Metrics extends DefaultInstrumented {
val callToApiCounter = metrics.counter("callToApiCounter")
}
package play.api.libs.circe
import io.circe.generic.auto._
import io.circe.syntax._
import play.api._
import play.api.mvc._
import nl.grons.metrics.scala.DefaultInstrumented
class MetricController(val controllerComponents: ControllerComponents) extends BaseController with DefaultInstrumented {
import play.api.libs.json.Writes
import io.tabmo.metrics.playjson._
def get = Action {
Metrics.callToApiCounter.inc()
Ok()
}
//expose all metrics to our json api
def exposeMetrics = Action {
Ok(Writes.of[DefaultInstrumented].writes(Metrics))
}
}
object Metrics extends DefaultInstrumented {
val callToApiCounter = metrics.counter("callToApiCounter")
}