self-defining pattern for Value type
parent
ecc8664eb0
commit
979d5410fd
|
|
@ -2,6 +2,8 @@ use crate::structs::v3::MetricOutput;
|
||||||
use serde_json::{Map, Value};
|
use serde_json::{Map, Value};
|
||||||
use prometheus::Gauge;
|
use prometheus::Gauge;
|
||||||
use tracing::error;
|
use tracing::error;
|
||||||
|
use prometheus::Opts;
|
||||||
|
use prometheus::GaugeVec;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum MetricsValueType {
|
pub enum MetricsValueType {
|
||||||
|
|
@ -32,6 +34,8 @@ impl MetricsProcesser {
|
||||||
}
|
}
|
||||||
MetricsValueType::None
|
MetricsValueType::None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: i64 and f63 support
|
||||||
pub fn gauge_from_number(
|
pub fn gauge_from_number(
|
||||||
metric: &MetricOutput,
|
metric: &MetricOutput,
|
||||||
metric_name: &str,
|
metric_name: &str,
|
||||||
|
|
@ -102,9 +106,6 @@ impl MetricsProcesser {
|
||||||
metric_value = value.as_f64().unwrap_or(0.0)
|
metric_value = value.as_f64().unwrap_or(0.0)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
use prometheus::Opts;
|
|
||||||
use prometheus::GaugeVec;
|
|
||||||
|
|
||||||
let opts = Opts::new(&name, &help);
|
let opts = Opts::new(&name, &help);
|
||||||
let gauge_vec = GaugeVec::new(opts, &[&label_name]);
|
let gauge_vec = GaugeVec::new(opts, &[&label_name]);
|
||||||
match gauge_vec {
|
match gauge_vec {
|
||||||
|
|
@ -177,4 +178,19 @@ impl MetricsProcesser {
|
||||||
metrics
|
metrics
|
||||||
.value.is_number()
|
.value.is_number()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
trait IsTaggedArray {
|
||||||
|
fn is_tagged_array(&self) -> bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl IsTaggedArray for Value {
|
||||||
|
fn is_tagged_array(&self) -> bool {
|
||||||
|
if let Some(arr) = self.as_array() {
|
||||||
|
return arr[0].get("tag_name").is_some();
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue