refactor + Cow usage
parent
83f5dd472c
commit
e7aeb78192
|
|
@ -7,23 +7,18 @@ use crate::structs::v3::PrometheusMetrics;
|
||||||
use prometheus::{ Encoder, Gauge, Registry, TextEncoder};
|
use prometheus::{ Encoder, Gauge, Registry, TextEncoder};
|
||||||
use std::sync::{ Arc, MutexGuard };
|
use std::sync::{ Arc, MutexGuard };
|
||||||
use crate::AppState;
|
use crate::AppState;
|
||||||
use tracing::{ error, debug, info, warn };
|
use tracing::{ error, info, warn };
|
||||||
use crate::metrics::{MetricsProcesser, MetricsValueType};
|
use crate::metrics::{MetricsProcesser, MetricsValueType};
|
||||||
|
|
||||||
pub async fn update_metrics(
|
pub async fn update_metrics(
|
||||||
State(state): State<Arc<AppState>>,
|
State(state): State<Arc<AppState>>,
|
||||||
Json(request) : Json<PrometheusMetrics>
|
Json(request) : Json<PrometheusMetrics<'_>>
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
info!("post on /update");
|
info!("post on /update");
|
||||||
// let resp = Response::new("body");
|
|
||||||
// debug!("{:?}", request);
|
|
||||||
// debug!("{:?}", MetricsProcesser::get_type_of_value(&request));
|
|
||||||
let service = &request.service_name;
|
let service = &request.service_name;
|
||||||
let endpoint = &request.endpoint_name;
|
let endpoint = &request.endpoint_name;
|
||||||
|
|
||||||
for i in request.metrics {
|
for i in request.metrics {
|
||||||
// debug!("{:?}", &i);
|
|
||||||
// debug!("{:?}", MetricsProcesser::get_type_of_value(&i));
|
|
||||||
let metric_name = format!("{}_{}_{}", service, endpoint, &i.id);
|
let metric_name = format!("{}_{}_{}", service, endpoint, &i.id);
|
||||||
match MetricsProcesser::get_type_of_value(&i) {
|
match MetricsProcesser::get_type_of_value(&i) {
|
||||||
MetricsValueType::Array |
|
MetricsValueType::Array |
|
||||||
|
|
@ -33,7 +28,8 @@ pub async fn update_metrics(
|
||||||
MetricsValueType::Number => {
|
MetricsValueType::Number => {
|
||||||
let gauge = MetricsProcesser::gauge_from_number(
|
let gauge = MetricsProcesser::gauge_from_number(
|
||||||
&i,
|
&i,
|
||||||
&metric_name
|
&metric_name,
|
||||||
|
i.clone().desc.unwrap_or_else(|| std::borrow::Cow::Borrowed(&i.id)).into_owned()
|
||||||
);
|
);
|
||||||
if let Some(gauge) = gauge {
|
if let Some(gauge) = gauge {
|
||||||
match state.registry.lock() {
|
match state.registry.lock() {
|
||||||
|
|
@ -50,7 +46,6 @@ pub async fn update_metrics(
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// dbg!(gauge);
|
|
||||||
},
|
},
|
||||||
MetricsValueType::ArrayOfStrings => {
|
MetricsValueType::ArrayOfStrings => {
|
||||||
warn!("String arrays are unsupported, ignoring ...");
|
warn!("String arrays are unsupported, ignoring ...");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue