1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! # Simple Prometheus metrics exporter with hot reload
//!
//! Example:
//! ```rust
//! 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 which will run in 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();
//! }
//! ```
////////////////////////////////////////////////////////////////////////////////
pub use crate*;
pub use crate*;