Safe Haskell | None |
---|---|
Language | Haskell2010 |
DogStatsD accepts custom application metrics points over UDP, and then periodically aggregates and forwards the metrics to Datadog, where they can be graphed on dashboards. The data is sent by using a client library such as this one that communicates with a DogStatsD server.
- data DogStatsSettings = DogStatsSettings {}
- defaultSettings :: DogStatsSettings
- withDogStatsD :: MonadBaseControl IO m => DogStatsSettings -> (StatsClient -> m a) -> m a
- send :: (MonadBase IO m, ToStatsD v) => StatsClient -> v -> m ()
- metric :: ToMetricValue a => MetricName -> MetricType -> a -> Metric
- data Metric
- newtype MetricName = MetricName {}
- data MetricType
- event :: Text -> Text -> Event
- data Event
- serviceCheck :: Text -> ServiceCheckStatus -> ServiceCheck
- data ServiceCheck
- data ServiceCheckStatus
- class ToStatsD a
- data Tag
- tag :: Text -> Text -> Tag
- class ToMetricValue a
- value :: ToMetricValue a => Setter Metric Metric (Utf8Builder ()) a
- data Priority
- data AlertType
- class HasName s a | s -> a where
- class HasSampleRate s a | s -> a where
- sampleRate :: Lens' s a
- class HasType' s a | s -> a where
- class HasTags s a | s -> a where
- class HasTitle s a | s -> a where
- class HasText s a | s -> a where
- class HasDateHappened s a | s -> a where
- dateHappened :: Lens' s a
- class HasHostname s a | s -> a where
- class HasAggregationKey s a | s -> a where
- aggregationKey :: Lens' s a
- class HasPriority s a | s -> a where
- class HasSourceTypeName s a | s -> a where
- sourceTypeName :: Lens' s a
- class HasAlertType s a | s -> a where
- class HasHost s a | s -> a where
- class HasPort s a | s -> a where
- class HasStatus s a | s -> a where
- class HasMessage s a | s -> a where
- data StatsClient = Dummy
Client interface
data DogStatsSettings Source
DogStatsSettings | |
|
withDogStatsD :: MonadBaseControl IO m => DogStatsSettings -> (StatsClient -> m a) -> m a Source
send :: (MonadBase IO m, ToStatsD v) => StatsClient -> v -> m () Source
Send a Metric
, Event
, or StatusCheck
to the DogStatsD server.
Since UDP is used to send the events, there is no ack that sent values are successfully dealt with.
withDogStatsD defaultSettings $ \client -> do send client $ event "Wombat attack" "A host of mighty wombats has breached the gates" send client $ metric "wombat.force_count" Gauge (9001 :: Int) send client $ serviceCheck "Wombat Radar" ServiceOk
Data supported by DogStatsD
metric :: ToMetricValue a => MetricName -> MetricType -> a -> Metric Source
Smart Metric
constructor. Use the lens functions to set the optional fields.
The fields accessible through corresponding lenses are:
name
::
MetricName
sampleRate
::
Double
type'
::
MetricType
value
::
ToMetricValue
a => a
tags
::
[
Tag
]
data MetricType Source
Gauge | Gauges measure the value of a particular thing at a particular time, like the amount of fuel in a car’s gas tank or the number of users connected to a system. |
Counter | Counters track how many times something happened per second, like the number of database requests or page views. |
Timer | StatsD only supports histograms for timing, not generic values (like the size of uploaded files or the number of rows returned from a query). Timers are essentially a special case of histograms, so they are treated in the same manner by DogStatsD for backwards compatibility. |
Histogram | Histograms track the statistical distribution of a set of values, like the duration of a number of database queries or the size of files uploaded by users. Each histogram will track the average, the minimum, the maximum, the median and the 95th percentile. |
Set | Sets are used to count the number of unique elements in a group. If you want to track the number of unique visitor to your site, sets are a great way to do that. |
event :: Text -> Text -> Event Source
Smart Event
constructor. Use the lens functions to set the optional fields.
The fields accessible through corresponding lenses are:
:: Text | name |
-> ServiceCheckStatus | |
-> ServiceCheck |
data ServiceCheck Source
The fields accessible through corresponding lenses are:
data ServiceCheckStatus Source
toStatsD
Optional fields
Tags are a Datadog specific extension to StatsD. They allow you to tag a metric with a dimension that’s meaningful to you and slice and dice along that dimension in your graphs. For example, if you wanted to measure the performance of two video rendering algorithms, you could tag the rendering time metric with the version of the algorithm you used.
tag :: Text -> Text -> Tag Source
Create a tag from a key-value pair. Useful for slicing and dicing events in Datadog.
Key and value text values are normalized by converting ":"s, "|"s, and "@"s to underscores ("_").
class ToMetricValue a Source
Converts a supported numeric type to the format understood by DogStatsD. Currently limited by BufferBuilder encoding options.
encodeValue
value :: ToMetricValue a => Setter Metric Metric (Utf8Builder ()) a Source
Special setter to update the value of a Metric
.
metric ("foo"" :: Text) Counter (1 :: Int) & value .~ (5 :: Double)
class HasSampleRate s a | s -> a where Source
sampleRate :: Lens' s a Source
class HasDateHappened s a | s -> a where Source
dateHappened :: Lens' s a Source
class HasHostname s a | s -> a where Source
class HasAggregationKey s a | s -> a where Source
aggregationKey :: Lens' s a Source
class HasPriority s a | s -> a where Source
class HasSourceTypeName s a | s -> a where Source
sourceTypeName :: Lens' s a Source
class HasAlertType s a | s -> a where Source
class HasMessage s a | s -> a where Source
Dummy client
data StatsClient Source
Note that Dummy is not the only constructor, just the only publicly available one.
Dummy | Just drops all stats. |