/rust-prometheus

Prometheus instrumentation library for Rust applications

Primary LanguageRustApache License 2.0Apache-2.0

Prometheus Rust client library

Build Status docs.rs crates.io Dependency Status

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

Usage

  • Add dependency to your Cargo.toml:

    prometheus = "0.8"
  • Optional: Better performance for Rust nightly.

    prometheus = { version = "0.8", 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.

prometheus = { version = "0.8", 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