Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data StatsdT m a
- type Statsd a = StatsdT IO a
- type Bucket = ByteString
- type SamplePct = Double
- runStatsd :: (MonadBaseControl IO m, MonadIO m) => Family -> SocketType -> ProtocolNumber -> SockAddr -> StatsdT m a -> m a
- statsdCounter :: MonadIO m => Bucket -> Int -> StatsdT m ()
- statsdSampledCounter :: MonadIO m => Bucket -> Int -> SamplePct -> StatsdT m ()
- statsdTimer :: MonadIO m => Bucket -> Int -> StatsdT m ()
- statsdGauge :: MonadIO m => Bucket -> Int -> StatsdT m ()
- statsdGaugePlus :: MonadIO m => Bucket -> Int -> StatsdT m ()
- statsdGaugeMinus :: MonadIO m => Bucket -> Int -> StatsdT m ()
- statsdSet :: MonadIO m => Bucket -> Int -> StatsdT m ()
Types
The StatsdT monad transformer. Pushing to StatsD occurs in this monad, and
the computation is run with runStatsd
.
type Bucket = ByteString Source
A StatsD bucket.
StatsD API
runStatsd :: (MonadBaseControl IO m, MonadIO m) => Family -> SocketType -> ProtocolNumber -> SockAddr -> StatsdT m a -> m a Source
Run a StatsdT computation, which pushes metrics to StatsD.
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} module Main where import Network import Network.Socket import Statsd main :: IO () main = do let hints = defaultHints { addrFamily = AF_INET , addrSocketType = Datagram } host = "localhost" service = "8125" AddrInfo{..}:_ <- getAddrInfo (Just hints) (Just host) (Just service) runStatsd addrFamily addrSocketType addrProtocol addrAddress $ do statsdCounter "foo" 1 statsdTimer "bar" 25
statsdCounter :: MonadIO m => Bucket -> Int -> StatsdT m () Source
Push to a StatsD counter.
statsdCounter "foo" 1 == "foo:1|c"
statsdSampledCounter :: MonadIO m => Bucket -> Int -> SamplePct -> StatsdT m () Source
Push to a StatsD counter, sampled.
statsdSampledCounter "foo" 1 0.5 == "foo:1|c|@0.5"
statsdTimer :: MonadIO m => Bucket -> Int -> StatsdT m () Source
Push to a StatsD timer.
statsdTimer "foo" 1 == "foo:1|ms"
statsdGauge :: MonadIO m => Bucket -> Int -> StatsdT m () Source
Push to a StatsD gauge.
statsdGauge "foo" 1 == "foo:1|g"
statsdGaugePlus :: MonadIO m => Bucket -> Int -> StatsdT m () Source
Push a positive delta to a StatsD gauge.
statsdGaugePlus "foo" 1 == "foo:+1|g"