better prometheus output

This commit is contained in:
Robin Appelman 2020-02-08 14:01:51 +01:00
commit b3142457fd

View file

@ -9,12 +9,13 @@ async fn main() -> Result<(), MainError> {
let mut env: HashMap<String, String> = dotenv::vars().collect(); let mut env: HashMap<String, String> = dotenv::vars().collect();
let adapter = BDAddr::from_str(&env.remove("ADAPTER").ok_or("No ADDR set")?) let adapter = BDAddr::from_str(&env.remove("ADAPTER").ok_or("No ADDR set")?)
.map_err(|_| "Invalid adapter address")?; .map_err(|_| "Invalid adapter address")?;
let device = BDAddr::from_str(&env.remove("DEVICE").ok_or("No KEYFILE set")?) let device = BDAddr::from_str(&env.remove("DEVICE").ok_or("No DEVICE set")?)
.map_err(|_| "Invalid device address")?; .map_err(|_| "Invalid device address")?;
let port = env let port = env
.get("PORT") .get("PORT")
.and_then(|s| u16::from_str(s).ok()) .and_then(|s| u16::from_str(s).ok())
.unwrap_or(80); .unwrap_or(80);
let name = env.remove("NAME").ok_or("No NAME set")?;
let adapter = adapter_by_mac(adapter).map_err(|_| "Adapter not found")?; let adapter = adapter_by_mac(adapter).map_err(|_| "Adapter not found")?;
@ -22,15 +23,18 @@ async fn main() -> Result<(), MainError> {
let metrics = warp::path!("metrics").map(move || { let metrics = warp::path!("metrics").map(move || {
let data = sensor.get_data(); let data = sensor.get_data();
if data.temperature == 0.0 || data.humidity == 0.0 {
return String::new();
}
if data.battery > 0 { if data.battery > 0 {
format!( format!(
"sensor_temperature {}\nsensor_humidity {}\nsensor_battery {}\n", "sensor_temperature{{name=\"{name}\"}} {temperature}\nsensor_humidity{{name=\"{name}\"}} {humidity}\nsensor_battery{{name=\"{name}\"}} {battery}\n",
data.temperature, data.humidity, data.battery name = name, temperature = data.temperature, humidity = data.humidity, battery = data.battery
) )
} else { } else {
format!( format!(
"sensor_temperature {}\nsensor_humidity {}\n", "sensor_temperature{{name=\"{name}\"}} {temperature}\nsensor_humidity{{name=\"{name}\"}} {humidity}\n",
data.temperature, data.humidity name = name, temperature = data.temperature, humidity = data.humidity
) )
} }
}); });