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 prometheus::Gauge;
|
||||
use tracing::error;
|
||||
use prometheus::Opts;
|
||||
use prometheus::GaugeVec;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum MetricsValueType {
|
||||
|
|
@ -32,6 +34,8 @@ impl MetricsProcesser {
|
|||
}
|
||||
MetricsValueType::None
|
||||
}
|
||||
|
||||
// TODO: i64 and f63 support
|
||||
pub fn gauge_from_number(
|
||||
metric: &MetricOutput,
|
||||
metric_name: &str,
|
||||
|
|
@ -102,9 +106,6 @@ impl MetricsProcesser {
|
|||
metric_value = value.as_f64().unwrap_or(0.0)
|
||||
}
|
||||
});
|
||||
use prometheus::Opts;
|
||||
use prometheus::GaugeVec;
|
||||
|
||||
let opts = Opts::new(&name, &help);
|
||||
let gauge_vec = GaugeVec::new(opts, &[&label_name]);
|
||||
match gauge_vec {
|
||||
|
|
@ -177,4 +178,19 @@ impl MetricsProcesser {
|
|||
metrics
|
||||
.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