#prometheus #metrics

prometheus

Prometheus instrumentation library for Rust applications

29 releases

✓ Uses Rust 2018 edition

0.7.0 Jun 20, 2019
0.6.0 May 6, 2019
0.5.0 Jan 14, 2019
0.4.2 Jun 13, 2018
0.1.0 Jan 22, 2016

#10 in Debugging

Download history 2747/week @ 2019-04-14 2257/week @ 2019-04-21 2405/week @ 2019-04-28 3463/week @ 2019-05-05 3960/week @ 2019-05-12 3389/week @ 2019-05-19 3600/week @ 2019-05-26 4802/week @ 2019-06-02 5205/week @ 2019-06-09 10023/week @ 2019-06-16 6994/week @ 2019-06-23 4936/week @ 2019-06-30 5550/week @ 2019-07-07 6330/week @ 2019-07-14 5840/week @ 2019-07-21

17,626 downloads per month
Used in 36 crates (26 directly)

Apache-2.0

280KB
6.5K SLoC

Prometheus Rust client library

Build Status docs.rs crates.io

This is the Rust client library for Prometheus. The main Structures and APIs are ported from Go client.

Usage

  • Add this to your Cargo.toml:

    [dependencies]
    prometheus = "0.7"
    
  • Add this to your crate in lib.rs:

    extern crate prometheus;
    
  • Or enable nightly feature for better performance.

    [dependencies.prometheus]
    git = "https://github.com/pingcap/rust-prometheus.git"
    features = ["nightly"]
    

Note

The crate has a pre-generated protobuf binding file for protobuf v2.0, if you need use the latest version of protobuf, you can generate the binding file on building with the gen feature.

[dependencies.prometheus]
git = "https://github.com/pingcap/rust-prometheus.git"
features = ["gen"]

Example

use prometheus::{Opts, Registry, Counter, TextEncoder, Encoder};

// Create a Counter.
let counter_opts = Opts::new("test_counter", "test counter help");
let counter = Counter::with_opts(counter_opts).unwrap();

// Create a Registry and register Counter.
let r = Registry::new();
r.register(Box::new(counter.clone())).unwrap();

// Inc.
counter.inc();

// Gather the metrics.
let mut buffer = vec![];
let encoder = TextEncoder::new();
let metric_families = r.gather();
encoder.encode(&metric_families, &mut buffer).unwrap();

// Output to the standard output.
println!("{}", String::from_utf8(buffer).unwrap());

More Examples

Advanced

Static Metric

Static metric helps you make metric vectors faster.

See static-metric directory for details.

Thanks

Dependencies

~1.1–3.5MB
~87K SLoC