| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Statsd
Contents
- 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" 25statsdCounter :: 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"