{-# LANGUAGE OverloadedStrings #-}
module Example where
import System.Metrics.Prometheus.GlobalRegistry
import System.Metrics.Prometheus.Http
import System.Metrics.Prometheus.Metric.Counter (inc)
import System.Metrics.Prometheus.MetricId
main :: IO ()
main = do
globalRegistry <- new
-- Labels can be defined as lists or added to an empty label set
connectSuccessGauge <- registerGauge "example_connections" (fromList [("login", "success")]) globalRegistry
connectFailureGauge <- registerGauge "example_connections" (addLabel "login" "failure" mempty) globalRegistry
connectCounter <- registerCounter "example_connection_total" mempty globalRegistry
latencyHistogram <- registerHistogram "example_round_trip_latency_ms" mempty [10, 20..100] globalRegistry
inc connectCounter -- increment a counter
-- [...] pass metric handles to the rest of the app
serveHttpTextMetrics 8080 globalRegistry -- http://localhost:8080/metric server