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" % metricsPlayjsonVersionRequired 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")
}