33 lines
865 B
Rust
33 lines
865 B
Rust
mod metric;
|
|
mod collectors;
|
|
use tiny_http::{Server, Response, Method};
|
|
use anyhow::{Context, Result};
|
|
|
|
use collectors::time;
|
|
|
|
|
|
fn main() -> Result<()> {
|
|
let server = Server::http("0.0.0.0:9100").unwrap();
|
|
|
|
for request in server.incoming_requests() {
|
|
if request.method() != &Method::Get || request.url() != "/metrics" {
|
|
let response = Response::from_string("Not Found").with_status_code(404);
|
|
request.respond(response)?;
|
|
continue;
|
|
}
|
|
println!("request! method: {:?}, url: {:?}, headers: {:?}",
|
|
request.method(),
|
|
request.url(),
|
|
request.headers()
|
|
);
|
|
|
|
let mut output = String::new();
|
|
|
|
output.push_str(&time::scrape().prometheus());
|
|
|
|
let response = Response::from_string(output);
|
|
request.respond(response)?;
|
|
}
|
|
Ok(())
|
|
}
|