Crate dogstatsd

Source
Expand description

A Rust client for interacting with Dogstatsd

Dogstatsd is a custom StatsD implementation by DataDog for sending metrics and events to their system. Through this client you can report any type of metric you want, tag it, and enjoy your custom metrics.

§Usage

Build an options struct and create a client:

use dogstatsd::{Client, Options, OptionsBuilder};
use std::time::Duration;

// Binds to a udp socket on an available ephemeral port on 127.0.0.1 for
// transmitting, and sends to  127.0.0.1:8125, the default dogstatsd
// address.
let default_options = Options::default();
let default_client = Client::new(default_options).unwrap();

// Binds to 127.0.0.1:9000 for transmitting and sends to 10.1.2.3:8125, with a
// namespace of "analytics".
let custom_options = Options::new("127.0.0.1:9000", "10.1.2.3:8125", "analytics", vec!(String::new()), None, None);
let custom_client = Client::new(custom_options).unwrap();

// You can also use the OptionsBuilder API to avoid needing to specify every option.
let built_options = OptionsBuilder::new().from_addr(String::from("127.0.0.1:9001")).build();
let built_client = Client::new(built_options).unwrap();

Start sending metrics:

use dogstatsd::{Client, Options, ServiceCheckOptions, ServiceStatus};

let client = Client::new(Options::default()).unwrap();
let tags = &["env:production"];

// Increment a counter
client.incr("my_counter", tags).unwrap();

// Decrement a counter
client.decr("my_counter", tags).unwrap();

// Time a block of code (reports in ms)
client.time("my_time", tags, || {
    // Some time consuming code
}).unwrap();

// Report your own timing in ms
client.timing("my_timing", 500, tags).unwrap();

// Report an arbitrary value (a gauge)
client.gauge("my_gauge", "12345", tags).unwrap();

// Report a sample of a histogram
client.histogram("my_histogram", "67890", tags).unwrap();

// Report a sample of a distribution
client.distribution("distribution", "67890", tags).unwrap();

// Report a member of a set
client.set("my_set", "13579", tags).unwrap();

// Report a service check
let service_check_options = ServiceCheckOptions {
  hostname: Some("my-host.localhost"),
  ..Default::default()
};
client.service_check("redis.can_connect", ServiceStatus::OK, tags, Some(service_check_options)).unwrap();

// Send a custom event
client.event("My Custom Event Title", "My Custom Event Body", tags).unwrap();

use dogstatsd::{EventOptions, EventPriority, EventAlertType};
let event_options = EventOptions::new()
    .with_timestamp(1638480000)
    .with_hostname("localhost")
    .with_priority(EventPriority::Normal)
    .with_alert_type(EventAlertType::Error);
client.event_with_options("My Custom Event Title", "My Custom Event Body", tags, Some(event_options)).unwrap();

Structs§

BatchingOptions
The struct that represents the options available for the Dogstatsd client.
Client
The client struct that handles sending metrics to the Dogstatsd server.
EventOptions
Configuration options for an Event.
Options
The struct that represents the options available for the Dogstatsd client.
OptionsBuilder
Struct that allows build an Options for available for the Dogstatsd client.
ServiceCheckOptions
Struct for adding optional pieces to a service check

Enums§

DogstatsdError
This type represents the possible errors that can occur while sending DogstatsD metrics.
EventAlertType
Represents alert types for an event.
EventPriority
Represents priority levels for an event.
ServiceStatus
Represents the different states a service can be in

Type Aliases§

DogstatsdResult
A type alias for returning a unit type or an error