Packages

object Prometheus

MetricsOps algebra capable of recording Prometheus metrics

For example, the following code would wrap a org.http4s.HttpRoutes with a org.http4s.server.middleware.Metrics that records metrics to a given metric registry.

import org.http4s.client.middleware.Metrics
import org.http4s.client.prometheus.Prometheus

val meteredRoutes = Metrics[IO](Prometheus(registry, "server"))(testRoutes)

Analogously, the following code would wrap a org.http4s.client.Client with a org.http4s.client.middleware.Metrics that records metrics to a given metric registry, classifying the metrics by HTTP method.

import org.http4s.client.middleware.Metrics
import org.http4s.client.prometheus.Prometheus

val classifierFunc = (r: Request[IO]) => Some(r.method.toString.toLowerCase)
val meteredClient = Metrics(Prometheus(registry, "client"), classifierFunc)(client)

Registers the following metrics:

{prefix}_response_duration_seconds{labels=classifier,method,phase} - Histogram

{prefix}_active_request_count{labels=classifier} - Gauge

{prefix}_request_count{labels=classifier,method,status} - Counter

{prefix}_abnormal_terminations{labels=classifier,termination_type} - Histogram

Labels --

method: Enumeration values: get, put, post, head, move, options, trace, connect, delete, other

phase: Enumeration values: headers, body

code: Enumeration values: 1xx, 2xx, 3xx, 4xx, 5xx

termination_type: Enumeration values: abnormal, error, timeout

Source
Prometheus.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Prometheus
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. def apply[F[_]](registry: CollectorRegistry, prefix: String = "org_http4s_server", responseDurationSecondsHistogramBuckets: NonEmptyList[Double] = DefaultHistogramBuckets)(implicit F: Sync[F]): F[MetricsOps[F]]

    Creates a MetricsOps that supports Prometheus metrics * * @param registry a metrics collector registry * @param prefix a prefix that will be added to all metrics