{-# LANGUAGE UnicodeSyntax #-} -- | Provides metrics via monad-metrics/EKG in a Magicbane app context. -- Also reexports Wai metrics middleware. module Magicbane.Metrics ( module Magicbane.Metrics , module X ) where import qualified Control.Monad.Metrics import Control.Monad.Metrics as X hiding (initialize, initializeWith, run, run') import System.Metrics as X (Store, registerGcMetrics) import qualified System.Remote.Monitoring.Wai import System.Remote.Monitoring.Wai as X (serverMetricStore) import Network.Wai.Metrics as X import Data.ByteString (ByteString) newtype ModMetrics = ModMetrics Metrics forkMetricsServer ∷ ByteString → Int → IO System.Remote.Monitoring.Wai.Server forkMetricsServer = System.Remote.Monitoring.Wai.forkServer -- | Creates a metrics module with a particular Store. -- The Store should come from the backend you want to use for storing the metrics. -- For development, a simple backend that shows metrics on a web page is ekg-wai, reexported here. newMetricsWith ∷ Store → IO ModMetrics newMetricsWith x = ModMetrics <$> Control.Monad.Metrics.initializeWith x