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.
Build an options struct and create a client: ```rust 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 defaultoptions = Options::default(); let defaultclient = 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 customoptions = Options::new("127.0.0.1:9000", "10.1.2.3:8125", "analytics", vec!(String::new())); let customclient = Client::new(custom_options).unwrap();
// You can also use the OptionsBuilder API to avoid needing to specify every option. let builtoptions = OptionsBuilder::new().fromaddr(String::from("127.0.0.1:9001")).build(); let builtclient = Client::new(builtoptions).unwrap(); ```
Start sending metrics: ```rust 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 servicecheckoptions = ServiceCheckOptions { hostname: Some("my-host.localhost"), ..Default::default() }; client.servicecheck("redis.canconnect", ServiceStatus::OK, tags, Some(servicecheckoptions)).unwrap();
// Send a custom event client.event("My Custom Event Title", "My Custom Event Body", tags).unwrap(); ```
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