dotenv func added + refactor
test-org/prometheus-exporter/pipeline/pr-rc This commit looks good
Details
test-org/prometheus-exporter/pipeline/pr-rc This commit looks good
Details
parent
83516e5fbc
commit
5c1a3a6875
|
|
@ -0,0 +1 @@
|
|||
PROMETHEUS_EXPORTER_PORT = 9100
|
||||
|
|
@ -13,4 +13,5 @@ tracing = "0.1.41"
|
|||
tracing-subscriber = "0.3.19"
|
||||
serde = { version = "1.0.217", features = ["derive"] }
|
||||
serde_json = "1.0.138"
|
||||
dotenv = "0.15.0"
|
||||
|
||||
|
|
|
|||
57
src/main.rs
57
src/main.rs
|
|
@ -1,9 +1,12 @@
|
|||
/// Prometheus-exporter - a Rust binary crate to provide functional
|
||||
/// of the metrics Exporter.
|
||||
///
|
||||
/// It handles metrics list in it's own local `Registry`
|
||||
|
||||
mod endpoints;
|
||||
// mod logger;
|
||||
mod metrics;
|
||||
mod structs;
|
||||
|
||||
// use logger::setup_logger;
|
||||
use axum::{
|
||||
routing::{get, post},
|
||||
Router};
|
||||
|
|
@ -11,72 +14,44 @@ use prometheus::Registry;
|
|||
use std::sync::{Arc, Mutex};
|
||||
use endpoints::*;
|
||||
use tokio::net::TcpListener;
|
||||
// use log::{warn, info, error};
|
||||
use tracing::info;
|
||||
use dotenv::dotenv;
|
||||
|
||||
/// Shared state of the Web-server
|
||||
///
|
||||
/// Used to store and share state of the metrics `Registry`
|
||||
///
|
||||
struct AppState {
|
||||
registry: Mutex<Registry>,
|
||||
// counter: Mutex<Counter>,
|
||||
// sum : Mutex<Summary>,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
// let _ = setup_logger().await;
|
||||
|
||||
tracing_subscriber::fmt()
|
||||
.with_max_level(tracing::Level::DEBUG)
|
||||
.init();
|
||||
|
||||
info!("Loading env vars from .env if exists ...");
|
||||
dotenv().ok();
|
||||
|
||||
info!("Initializing local Prometehus metrics registry ...");
|
||||
|
||||
let registry = Registry::new();
|
||||
// let counter_opts = Opts::new("example_counter", "Пример счётчика");
|
||||
// let histogram_opts = Opts::new("example_histogram", "Пример histogram");
|
||||
|
||||
// use prometheus::proto::{Summary, Quantile};
|
||||
// use prometheus::proto::
|
||||
|
||||
// let guage = prometheus::ProtobufEncoder::new();
|
||||
|
||||
|
||||
|
||||
// let mut sunops = Summary::new();
|
||||
// let mut q1 = Quantile::new();
|
||||
// let mut q2 = Quantile::new();
|
||||
|
||||
// q1.set_quantile(25.0);
|
||||
// q2.set_quantile(75.0);
|
||||
// // prometheus::proto::Metric::
|
||||
|
||||
// let vq = vec![q1, q2];
|
||||
// sunops.set_quantile(vq.into());
|
||||
|
||||
// let counter = Counter::with_opts(counter_opts).unwrap();
|
||||
// // counter.desc()
|
||||
// registry.register(Box::new(counter.clone())).unwrap();
|
||||
// registry.register(Box::new(prometheus::proto::MetricFamily::));
|
||||
// registry.register(Box::new(sunops.clone())).unwrap();
|
||||
|
||||
|
||||
info!("Initializing shared state for Prometheus Exporter web-server ...");
|
||||
|
||||
let state = Arc::new(AppState {
|
||||
registry: Mutex::new(registry),
|
||||
// counter: Mutex::new(counter),
|
||||
// sum : Mutex::new(sunops)
|
||||
});
|
||||
|
||||
// info!("Configurating Web-Server...");
|
||||
|
||||
info!("Configurating internals of Prometheus Exporter web-server...");
|
||||
|
||||
let app = Router::new()
|
||||
.route("/metrics", get(metrics_handler))
|
||||
.route("/update", post(update_metrics))
|
||||
.with_state(state.clone());
|
||||
|
||||
let listener = TcpListener::bind("0.0.0.0:9100").await.unwrap();
|
||||
let bind_address = format!("0.0.0.0:{}", std::env::var("PROMETHEUS_EXPORTER_PORT").unwrap_or_else(|_| "9100".to_owned()));
|
||||
let listener = TcpListener::bind(bind_address).await.unwrap();
|
||||
|
||||
info!("Serving on ...:9100");
|
||||
axum::serve(listener, app).await?;
|
||||
Ok(())
|
||||
|
|
|
|||
Loading…
Reference in New Issue