Go to file
Francis Lalonde 5c6ea96d33 Revise some doc and license 2017-08-31 01:02:12 -04:00
examples/aggregate Use ::*, nice README and CONTRIBUTING, AsSink / AsSource 2017-08-21 15:31:52 -04:00
src Revise some doc and license 2017-08-31 01:02:12 -04:00
.gitignore Prepare for first crate publish 2017-08-18 11:32:22 -07:00
.travis.yml Stop trying to run benchmarks on travis 2017-08-28 18:35:20 -04:00
CONTRIBUTING.md Use ::*, nice README and CONTRIBUTING, AsSink / AsSource 2017-08-21 15:31:52 -04:00
Cargo.lock Rename Count to Counter, info! on statsd connect 2017-08-23 11:59:00 -04:00
Cargo.toml Revise some doc and license 2017-08-31 01:02:12 -04:00
LICENSE-APACHE Revise some doc and license 2017-08-31 01:02:12 -04:00
LICENSE-MIT Revise some doc and license 2017-08-31 01:02:12 -04:00
README.md Build on nightly for benches 2017-08-23 13:59:17 -04:00

README.md

dipstick

Build Status

A fast and modular metrics library decoupling app instrumentation from reporting backend. Similar to popular logging frameworks, but with counters and timers. Can be configured for combined outputs (log + statsd), random sampling, local aggregation of metrics, recurrent background publication, etc.

Design

Dipstick's design goals are to:

  • support as many metrics backends as possible while favoring none
  • support all types of applications, from embedded to servers
  • promote metrics conventions that facilitate app monitoring and maintenance
  • stay out of the way in the code and at runtime (ergonomic, fast, resilient)

Code

Here's a short example of sending timer values to the log showing both closure and macro syntax

use dipstick::*;
let metrics = metrics(log("app_metrics"));
let timer = metrics.timer("timer_b");
let value1 = timer.time(||, compute_value1());
let value2 = time!(timer, compute_value2());

More complete example(s?) can be found in the /examples dir.

TODO

Although already usable, Dipstick is still under heavy development and makes no guarantees of any kind at this point. See the following list for any potential caveats :

  • META turn TODOs into GitHub issues
  • cool logo
  • generic publisher / sources
  • dispatch scopes
  • feature flags
  • non-tokio scheduler
  • late builders
  • microsecond-precision intervals
  • heartbeat metric on publish
  • logger templates
  • more outputs adapters
  • configurable aggregation
  • queued dispatch
  • non-aggregating buffers
  • tagged / ad-hoc metrics
  • framework glue (rocket, iron, etc.)
  • tests & benchmarks
  • complete doc / inline samples
  • example applications