magicbane-0.4.0: library/Magicbane/Metrics.hs
{-# 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