Compare commits
4 Commits
72fc8fb588
...
bd86ab8b52
Author | SHA1 | Date | |
---|---|---|---|
bd86ab8b52 | |||
61d1b5454b | |||
a1bcaf93d1 | |||
011fbdd2b7 |
19
src/main.rs
19
src/main.rs
@ -53,7 +53,7 @@ async fn get_baeder_names() -> Result<HashMap<String, String>, String> {
|
||||
|
||||
for c in r.captures_iter(baedernames_body.as_str()) {
|
||||
baedernames.insert(
|
||||
c.get(1).unwrap().as_str().to_string(), // id
|
||||
c.get(1).unwrap().as_str().trim_start_matches('0').to_string(), // id
|
||||
c.get(2).unwrap().as_str().to_string(), // name
|
||||
);
|
||||
}
|
||||
@ -62,6 +62,13 @@ async fn get_baeder_names() -> Result<HashMap<String, String>, String> {
|
||||
|
||||
}
|
||||
|
||||
fn escape_metric_label_value(value: &String) -> String {
|
||||
let value = value.replace(r#"\"#, r#"\\"#);
|
||||
let value = value.replace("\n", r"\n");
|
||||
let value = value.replace(r#"""#, r#"\""#);
|
||||
return value;
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
struct AppState {
|
||||
baedernames: HashMap<String, String>,
|
||||
@ -114,6 +121,7 @@ async fn main() {
|
||||
|
||||
let listener = tokio::net::TcpListener::bind(listen).await.unwrap();
|
||||
println!("Server listening on: http://{}", listener.local_addr().unwrap());
|
||||
println!("Matrics exposed as: http://{}/metrics", listener.local_addr().unwrap());
|
||||
|
||||
axum::serve(listener, app).await.unwrap();
|
||||
}
|
||||
@ -143,7 +151,14 @@ async fn route_metrics(
|
||||
let mut out = String::new();
|
||||
|
||||
for bad in trafficdata {
|
||||
out.push_str(&format!("berlinerbaeder_occupation{{bad=\"{}\" badname=\"{}\"}} {}\n", bad.id, state.baedernames.get(&bad.id).unwrap_or(&String::new()), bad.counter.unwrap_or(-1)));
|
||||
let badid = escape_metric_label_value(&bad.id);
|
||||
match state.baedernames.get(&bad.id) {
|
||||
Some(name) => {
|
||||
let badname = escape_metric_label_value(name);
|
||||
out.push_str(&format!("berlinerbaeder_occupation{{bad=\"{}\", badname=\"{}\"}} {}\n", badid, badname, bad.counter.unwrap_or(-1)))}
|
||||
,
|
||||
None => out.push_str(&format!("berlinerbaeder_occupation{{bad=\"{}\"}} {}\n", badid, bad.counter.unwrap_or(-1))),
|
||||
};
|
||||
}
|
||||
|
||||
return Ok(out);
|
||||
|
Loading…
Reference in New Issue
Block a user