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"
|
tracing-subscriber = "0.3.19"
|
||||||
serde = { version = "1.0.217", features = ["derive"] }
|
serde = { version = "1.0.217", features = ["derive"] }
|
||||||
serde_json = "1.0.138"
|
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 endpoints;
|
||||||
// mod logger;
|
|
||||||
mod metrics;
|
mod metrics;
|
||||||
mod structs;
|
mod structs;
|
||||||
|
|
||||||
// use logger::setup_logger;
|
|
||||||
use axum::{
|
use axum::{
|
||||||
routing::{get, post},
|
routing::{get, post},
|
||||||
Router};
|
Router};
|
||||||
|
|
@ -11,72 +14,44 @@ use prometheus::Registry;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use endpoints::*;
|
use endpoints::*;
|
||||||
use tokio::net::TcpListener;
|
use tokio::net::TcpListener;
|
||||||
// use log::{warn, info, error};
|
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
use dotenv::dotenv;
|
||||||
|
|
||||||
|
/// Shared state of the Web-server
|
||||||
|
///
|
||||||
|
/// Used to store and share state of the metrics `Registry`
|
||||||
|
///
|
||||||
struct AppState {
|
struct AppState {
|
||||||
registry: Mutex<Registry>,
|
registry: Mutex<Registry>,
|
||||||
// counter: Mutex<Counter>,
|
|
||||||
// sum : Mutex<Summary>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> anyhow::Result<()> {
|
async fn main() -> anyhow::Result<()> {
|
||||||
// let _ = setup_logger().await;
|
|
||||||
|
|
||||||
tracing_subscriber::fmt()
|
tracing_subscriber::fmt()
|
||||||
.with_max_level(tracing::Level::DEBUG)
|
.with_max_level(tracing::Level::DEBUG)
|
||||||
.init();
|
.init();
|
||||||
|
|
||||||
|
info!("Loading env vars from .env if exists ...");
|
||||||
|
dotenv().ok();
|
||||||
|
|
||||||
info!("Initializing local Prometehus metrics registry ...");
|
info!("Initializing local Prometehus metrics registry ...");
|
||||||
|
|
||||||
let registry = Registry::new();
|
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 ...");
|
info!("Initializing shared state for Prometheus Exporter web-server ...");
|
||||||
|
|
||||||
let state = Arc::new(AppState {
|
let state = Arc::new(AppState {
|
||||||
registry: Mutex::new(registry),
|
registry: Mutex::new(registry),
|
||||||
// counter: Mutex::new(counter),
|
|
||||||
// sum : Mutex::new(sunops)
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// info!("Configurating Web-Server...");
|
|
||||||
|
|
||||||
info!("Configurating internals of Prometheus Exporter web-server...");
|
info!("Configurating internals of Prometheus Exporter web-server...");
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/metrics", get(metrics_handler))
|
.route("/metrics", get(metrics_handler))
|
||||||
.route("/update", post(update_metrics))
|
.route("/update", post(update_metrics))
|
||||||
.with_state(state.clone());
|
.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");
|
info!("Serving on ...:9100");
|
||||||
axum::serve(listener, app).await?;
|
axum::serve(listener, app).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue