#metrics #telemetry #histogram #counter #gauge

metrics

high-speed metrics collection library

12 unstable releases (4 breaking)

✓ Uses Rust 2018 edition

0.10.3 Jun 12, 2019
0.9.1 May 1, 2019
0.2.3 May 25, 2017
0.2.2 Dec 9, 2016
0.0.2 Sep 3, 2015

#8 in Visualization

Download history 39/week @ 2019-02-27 23/week @ 2019-03-06 26/week @ 2019-03-13 38/week @ 2019-03-20 25/week @ 2019-03-27 27/week @ 2019-04-03 44/week @ 2019-04-10 65/week @ 2019-04-17 65/week @ 2019-04-24 63/week @ 2019-05-01 46/week @ 2019-05-08 66/week @ 2019-05-15 141/week @ 2019-05-22 58/week @ 2019-05-29 54/week @ 2019-06-05

239 downloads per month
Used in 2 crates

MIT license

91KB
1.5K SLoC

metrics

conduct-badge downloads-badge release-badge docs-badge license-badge

metrics is a high-quality, batteries-included metrics library for Rust.

code of conduct

NOTE: All conversations and contributions to this project shall adhere to the Code of Conduct.

what's it all about?

Running applications in production can be hard when you don't have insight into what the application is doing. We're lucky to have so many good system monitoring programs and services to show us how are servers are performing, but we still have to do the work of instrumenting our applications to gain deep insight into their behavior and performance.

metrics makes it easy to instrument your application to provide real-time insight into what's happening. It provides a straight-forward interface for you to collect metrics at different points, and a flexible approach to exporting those metrics in a way that meets your needs.

Some of the most common scenarios for collecting metrics from an application:

  • see how many times a codepath was hit
  • track the time it takes for a piece of code to execute
  • expose internal counters and values in a standardized way

The number of reasons why you'd want to collect metrics is too large to list out here, and some applications emit metrics that have nothing to do with the application performance itself! Ultimately, metrics strives to simply provide support for the most basic types of metrics so that you can spend more time focusing on the data you'd like to collect and less time on how you're going to accomplish that.

high-level technical features

  • Supports the three most common metric types: counters, gauges, and histograms.
  • Based on metrics-core for composability at the exporter level.
  • Access to ultra-high-speed timing facilities out-of-the-box with quanta.
  • Scoped metrics for effortless nesting.
  • Bundled with Prometheus pull endpoint capabilities by default.

performance

High. metrics is fast enough that you'll barely notice the overhead.

There is a benchmark example in the crate that can be run to see the type of performance acheivable on your system. A 2015 MacBook Pro (4c/8t, 2.1GHz) can push over 5 million samples per second from a single thread.

Dependencies

~4MB
~72K SLoC