Skip to content

Commit

Permalink
Use log facade (#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
loshz authored Apr 12, 2022
1 parent f9d73e1 commit 8bd1464
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "metrics_server"
version = "0.4.1"
version = "0.5.0"
authors = ["Dan Bond <[email protected]>"]
edition = "2021"
rust-version = "1.58"
Expand All @@ -16,6 +16,7 @@ include = ["src/**/*", "tests", "examples", "LICENSE", "README.md"]

[dependencies]
tiny_http = { version = "0.11", features = ["ssl-rustls"] }
log = "0.4"

[dev-dependencies]
prometheus-client = "0.15"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ This crate provides a thread safe, minimalstic HTTP/S server used to buffer metr
Include the lib in your `Cargo.toml` dependencies:
```toml
[dependencies]
metrics_server = "0.4"
metrics_server = "0.5"
```

### HTTP
Expand Down
18 changes: 15 additions & 3 deletions src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::{Arc, Mutex};
use std::thread;

use log::{debug, error};
use tiny_http::{Method, Response, Server};

/// A thread-safe datastore for serving metrics via a HTTP/S server.
Expand Down Expand Up @@ -93,25 +94,36 @@ impl MetricsServer {
break;
}

debug!(
"metrics_server: request received [url: {}, remote addr: {}, http version: {}]",
req.url(),
req.remote_addr(),
req.http_version(),
);

// Only serve the /metrics path.
if req.url() != "/metrics" {
let res = Response::empty(404);
let _ = req.respond(res);
if let Err(e) = req.respond(res) {
error!("metrics_server error: {}", e);
};
continue;
}

// Only respond to GET requests.
if req.method() != &Method::Get {
let res = Response::empty(405);
let _ = req.respond(res);
if let Err(e) = req.respond(res) {
error!("metrics_server error: {}", e);
};
continue;
}

// Write the metrics to the response buffer.
let metrics = s.data.lock().unwrap();
let res = Response::from_data(metrics.as_slice());
if let Err(e) = req.respond(res) {
eprintln!("metrics_server error: {}", e);
error!("metrics_server error: {}", e);
};
}
}
Expand Down

0 comments on commit 8bd1464

Please sign in to comment.