Metrics

object Metrics

Server middleware to record metrics for the http4s server.

This middleware will record:

  • Number of active requests
  • Time duration to send the response headers
  • Time duration to send the whole response body
  • Time duration of errors and other abnormal terminations

This middleware can be extended to support any metrics ecosystem by implementing the org.http4s.metrics.MetricsOps type

class Object
trait Matchable
class Any
Metrics.type

Value members

Concrete methods

def apply[F[_]](ops: MetricsOps[F], emptyResponseHandler: Option[Status], errorResponseHandler: Throwable => Option[Status], classifierF: Request[F] => Option[String])(routes: HttpRoutes[F])(implicit F: Clock[F], C: MonadCancel[F, Throwable]): HttpRoutes[F]

A server middleware capable of recording metrics

A server middleware capable of recording metrics

Value parameters:
classifierF

a function that allows to add a classifier that can be customized per request

emptyResponseHandler

an optional http status to be registered for requests that do not match

errorResponseHandler

a function that maps a java.lang.Throwable to an optional http status code to register

ops

a algebra describing the metrics operations

Returns:

the metrics middleware

def effect[F[_]](ops: MetricsOps[F], emptyResponseHandler: Option[Status], errorResponseHandler: Throwable => Option[Status], classifierF: Request[F] => F[Option[String]])(routes: HttpRoutes[F])(implicit F: Clock[F], C: MonadCancel[F, Throwable]): HttpRoutes[F]

A server middleware capable of recording metrics

A server middleware capable of recording metrics

Same as apply, but can classify requests effectually, e.g. performing side-effects. Failed attempt to classify the request (e.g. failing with F.raiseError) leads to not recording metrics for that request.

Value parameters:
classifierF

a function that allows to add a classifier that can be customized per request

emptyResponseHandler

an optional http status to be registered for requests that do not match

errorResponseHandler

a function that maps a java.lang.Throwable to an optional http status code to register

ops

a algebra describing the metrics operations

Returns:

the metrics middleware

Note:

Compiling the request body in classifierF is unsafe, unless you are using some caching middleware.