Crate prometheus[−][src]
The Rust client library for Prometheus.
Use of this library involves a few core concepts:
- 
Metrics likeCounters that represent information about your system.
- 
An endpoint that calls gatherwhich returnsMetricFamilys through anEncoder.
Basic 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());
You can find more examples within
/examples.
Static Metrics
This crate supports staticly built metrics. You can use it with
lazy_static to quickly build up and collect
some metrics.
#[macro_use] extern crate lazy_static; #[macro_use] extern crate prometheus; use prometheus::{self, IntCounter, TextEncoder, Encoder}; lazy_static! { static ref HIGH_FIVE_COUNTER: IntCounter = register_int_counter!("highfives", "Number of high fives received").unwrap(); } HIGH_FIVE_COUNTER.inc(); assert_eq!(HIGH_FIVE_COUNTER.get(), 1);
By default, this registers with a default registry. To make a report, you can call
gather. This will return a family of metrics you can then feed through an
Encoder and report to Promethus.
#[macro_use] extern crate prometheus; use prometheus::{self, TextEncoder, Encoder}; // Register & measure some metrics. let mut buffer = Vec::new(); let encoder = TextEncoder::new(); // Gather the metrics. let metric_families = prometheus::gather(); // Encode them to send. encoder.encode(&metric_families, &mut buffer).unwrap(); let output = String::from_utf8(buffer.clone()).unwrap(); const EXPECTED_OUTPUT: &'static str = "# HELP highfives Number of high fives received\n# TYPE highfives counter\nhighfives 1\n"; assert!(output.starts_with(EXPECTED_OUTPUT));
See prometheus_static_metric for additional functionality.
Features
This library supports four features:
- gen: To generate protobuf client with the latest protobuf version instead of using the pre-generated client.
- nightly: Enable nightly only features.
- process: For collecting process info.
- push: Enable push support.
Modules
| core | Core traits and types. | 
| local | Unsync local metrics, provides better performance. | 
| proto | Non-generated version of required structures provided by the protobuf.
This version is used when the  | 
Macros
| histogram_opts | Create a [ | 
| labels | Create labels with specified name-value pairs. | 
| opts | Create an [ | 
| register_counter | Create a [ | 
| register_counter_vec | Create a [ | 
| register_gauge | Create a [ | 
| register_gauge_vec | Create a [ | 
| register_histogram | Create a [ | 
| register_histogram_vec | Create a [ | 
| register_int_counter | Create an [ | 
| register_int_counter_vec | Create an [ | 
| register_int_gauge | Create an [ | 
| register_int_gauge_vec | Create an [ | 
Structs
| Histogram | A  | 
| HistogramOpts | A struct that bundles the options for creating a  | 
| HistogramTimer | Timer to measure and record the duration of an event. | 
| Opts | A struct that bundles the options for creating most  | 
| Registry | A struct for registering Prometheus collectors, collecting their metrics, and gathering
them into  | 
| TextEncoder | An implementation of an  | 
Enums
| Error | The error types for prometheus. | 
Constants
| DEFAULT_BUCKETS | The default  | 
Traits
| Encoder | An interface for encoding metric families into an underlying wire protocol. | 
Functions
| default_registry | Default registry (global static). | 
| exponential_buckets | Create  | 
| gather | Return all  | 
| linear_buckets | Create  | 
| register | Registers a new  | 
| unregister | Unregisters the  | 
Type Definitions
| Counter | A  | 
| CounterVec | A  | 
| Gauge | A  | 
| GaugeVec | A  | 
| HistogramVec | A  | 
| IntCounter | The integer version of  | 
| IntCounterVec | The integer version of  | 
| IntGauge | The integer version of  | 
| IntGaugeVec | The integer version of  | 
| Result | A specialized Result type for prometheus. |