This is the Rust client library for Prometheus. The main Structures and APIs are ported from Go client.
-
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"]
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"]
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());
Static metric helps you make metric vectors faster.
See static-metric directory for details.