Crates.io | pomfrit |
lib.rs | pomfrit |
version | 0.1.9 |
source | src |
created_at | 2021-12-10 12:45:31.795007 |
updated_at | 2022-10-17 18:30:26.947277 |
description | Prometheus metrics exporter with hot reload |
homepage | |
repository | https://github.com/broxus/pomfrit |
max_upload_size | |
id | 495699 |
size | 24,207 |
Prometheus metrics exporter with hot reload
use pomfrit::formatter::*;
/// Your metrics as a struct
struct MyMetrics<'a> {
ctx: &'a str,
some_diff: u32,
some_time: u32,
}
/// Describe how your metrics will be displayed
impl std::fmt::Display for MyMetrics<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.begin_metric("some_diff")
.label("label1", self.ctx)
.label("label2", "some value")
.value(self.some_diff)?;
f.begin_metric("some_time")
.label("label1", self.ctx)
.value(self.some_time)
}
}
async fn my_app() {
// Create inactive exporter
let (exporter, writer) = pomfrit::create_exporter(None).await.unwrap();
// Spawn task that will run in the background and write metrics
writer.spawn(|buf| {
buf.write(MyMetrics {
ctx: "asd",
some_diff: 123,
some_time: 456,
}).write(MyMetrics {
ctx: "qwe",
some_diff: 111,
some_time: 444,
});
});
// ...
// Reload exporter config
exporter.reload(Some(pomfrit::Config {
collection_interval_sec: 10,
..Default::default()
})).await.unwrap();
}
pomfrit
?Pomfrit is fried potatoes. Something very simple and you order it in addition to the main course.