datadog-0.1.0.0: Datadog client for Haskell. Currently only StatsD supported, other support forthcoming.

Safe HaskellNone
LanguageHaskell2010

Network.Datadog.StatsD

Contents

Description

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.

Synopsis

Client interface

data DogStatsSettings Source

Constructors

DogStatsSettings 

Fields

dogStatsSettingsHost :: HostName

The hostname or IP of the DogStatsD server (default: 127.0.0.1)

dogStatsSettingsPort :: Int

The port that the DogStatsD server is listening on (default: 8125)

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.

newtype MetricName Source

Constructors

MetricName 

Fields

fromMetricName :: Text
 

data MetricType Source

Constructors

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.

class ToStatsD a Source

Convert an Event, Metric, or StatusCheck to their wire format.

Minimal complete definition

toStatsD

Optional fields

data Tag Source

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.

Minimal complete definition

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)

data Priority Source

Constructors

Low 
Normal 

class HasName s a | s -> a where Source

Methods

name :: Lens' s a Source

class HasSampleRate s a | s -> a where Source

Methods

sampleRate :: Lens' s a Source

class HasType' s a | s -> a where Source

Methods

type' :: Lens' s a Source

class HasTags s a | s -> a where Source

Methods

tags :: Lens' s a Source

class HasTitle s a | s -> a where Source

Methods

title :: Lens' s a Source

class HasText s a | s -> a where Source

Methods

text :: Lens' s a Source

class HasAggregationKey s a | s -> a where Source

class HasPriority s a | s -> a where Source

Methods

priority :: Lens' s a Source

class HasSourceTypeName s a | s -> a where Source

class HasAlertType s a | s -> a where Source

Methods

alertType :: Lens' s a Source

class HasHost s a | s -> a where Source

Methods

host :: Lens' s a Source

class HasPort s a | s -> a where Source

Methods

port :: Lens' s a Source

class HasStatus s a | s -> a where Source

Methods

status :: Lens' s a Source

class HasMessage s a | s -> a where Source

Methods

message :: Lens' s a Source

Dummy client

data StatsClient Source

Note that Dummy is not the only constructor, just the only publicly available one.

Constructors

Dummy

Just drops all stats.