9 releases
0.3.1 | Oct 5, 2024 |
---|---|
0.3.0 | Oct 4, 2024 |
0.2.2 | Sep 5, 2024 |
0.2.1 | May 29, 2024 |
0.1.3 | Dec 12, 2023 |
#451 in HTTP server
426 downloads per month
Used in 2 crates
130KB
911 lines
metrics-dashboard-rs
This crate provide simple auto-generate dashboard for metric-rs crate.
Screenshot
How to use
- run
cargo add metrics-dashboard
- include into poem webserver like bellow:
use std::time::Duration;
use metrics_dashboard::build_dashboard_route;
use metrics::{describe_counter, increment_counter};
use poem::{
get, handler, listener::TcpListener, middleware::Tracing, web::Path, EndpointExt, Route, Server,
};
#[handler]
fn hello(Path(name): Path<String>) -> String {
format!("hello: {name}")
}
#[tokio::main]
async fn main() -> Result<(), std::io::Error> {
if std::env::var_os("RUST_LOG").is_none() {
std::env::set_var("RUST_LOG", "poem=debug");
}
tracing_subscriber::fmt::init();
let dashboard_options = DashboardOptions {
custom_charts: vec![
ChartType::Line {
metrics: vec![
"demo_live_time".to_string(),
"demo_live_time_max".to_string(),
],
desc: Some("Demo metric line".to_string()),
}
],
include_default: true,
};
let app = Route::new()
.at("/hello/:name", get(hello))
.nest("/dashboard/", build_dashboard_route())
.with(Tracing);
tokio::spawn(async move {
describe_counter!("demo_metric1", "Demo metric1");
loop {
tokio::time::sleep(Duration::from_secs(1)).await;
increment_counter!("demo_metric1");
}
});
tokio::spawn(async move {
describe_counter!("demo_metric2", "Demo metric2");
loop {
tokio::time::sleep(Duration::from_secs(1)).await;
increment_counter!("demo_metric2");
}
});
Server::new(TcpListener::bind("0.0.0.0:3000"))
.name("hello-world")
.run(app)
.await
}
License
Licensed under (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the MIT license, without any additional terms or conditions.
See CONTRIBUTING.md.
Dependencies
~18–48MB
~758K SLoC