hcheckers-0.1.0.0: src/Core/Monitoring.hs
module Core.Monitoring where
import Control.Monad
import Control.Monad.Reader
import Control.Monad.Catch
import qualified Control.Monad.Metrics as Metrics
import qualified Data.Text as T
import Core.Types
ifMetricsEnabled :: (Monad m, HasMetricsConfig m) => m () -> m ()
ifMetricsEnabled action = do
enabled <- isMetricsEnabled
when enabled action
increment :: (MonadIO m, Metrics.MonadMetrics m, HasMetricsConfig m) => T.Text -> m ()
increment name = ifMetricsEnabled $ Metrics.increment name
timed :: (MonadIO m, Metrics.MonadMetrics m, MonadMask m, HasMetricsConfig m) => T.Text -> m a -> m a
timed name action = do
enabled <- isMetricsEnabled
if enabled
then Metrics.timed name action
else action
distribution :: (MonadIO m, Metrics.MonadMetrics m, HasMetricsConfig m) => T.Text -> Double -> m ()
distribution name x =
ifMetricsEnabled $ Metrics.distribution name x