11 unstable releases

Uses old Rust 2015

0.6.2 Jan 27, 2021
0.6.1 Mar 16, 2019
0.6.0 Feb 24, 2019
0.5.0 Apr 27, 2018
0.1.1 Jul 7, 2016

#7 in Profiling

Download history 1149/week @ 2021-01-21 1884/week @ 2021-01-28 1655/week @ 2021-02-04 1477/week @ 2021-02-11 1696/week @ 2021-02-18 1414/week @ 2021-02-25 1361/week @ 2021-03-04 1672/week @ 2021-03-11 1439/week @ 2021-03-18 1212/week @ 2021-03-25 891/week @ 2021-04-01 1013/week @ 2021-04-08 1192/week @ 2021-04-15 1324/week @ 2021-04-22 724/week @ 2021-04-29 750/week @ 2021-05-06

5,313 downloads per month
Used in 2 crates

MIT license

39KB
826 lines

dogstatsd-rs

Build Status Crate Version

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.

Full Documentation

Usage

Build an options struct and create a client:

use dogstatsd::{Client, Options};

// 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");
let custom_client = Client::new(custom_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();

Benchmarks

Support is provided for running benchmarks of all client commands. Until the Bencher type is stable Rust, the benchmarks are isolated behind the unstable feature flag. To run the benchmarks using rustup:

rustup run nightly cargo bench --features=unstable

Dependencies

~1MB
~12K SLoC