Remove host="" metric parameter for most things
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
731b59a41f
commit
752593e274
2 changed files with 33 additions and 24 deletions
49
src/https.rs
49
src/https.rs
|
@ -33,6 +33,8 @@ pub struct HttpsConfig {
|
||||||
pub bind_addr: SocketAddr,
|
pub bind_addr: SocketAddr,
|
||||||
pub enable_compression: bool,
|
pub enable_compression: bool,
|
||||||
pub compress_mime_types: Vec<String>,
|
pub compress_mime_types: Vec<String>,
|
||||||
|
|
||||||
|
// used internally to convert Instants to u64
|
||||||
pub time_origin: Instant,
|
pub time_origin: Instant,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,23 +161,28 @@ async fn handle_request(
|
||||||
proxy_config: Arc<ProxyConfig>,
|
proxy_config: Arc<ProxyConfig>,
|
||||||
metrics: Arc<HttpsMetrics>,
|
metrics: Arc<HttpsMetrics>,
|
||||||
) -> Result<Response<Body>, Infallible> {
|
) -> Result<Response<Body>, Infallible> {
|
||||||
let mut tags = vec![
|
let method_tag = KeyValue::new("method", req.method().to_string());
|
||||||
KeyValue::new("method", req.method().to_string()),
|
|
||||||
KeyValue::new(
|
|
||||||
"host",
|
|
||||||
req.uri()
|
|
||||||
.authority()
|
|
||||||
.map(|auth| auth.to_string())
|
|
||||||
.or_else(|| {
|
|
||||||
req.headers()
|
|
||||||
.get("host")
|
|
||||||
.map(|host| host.to_str().unwrap_or_default().to_string())
|
|
||||||
})
|
|
||||||
.unwrap_or_default(),
|
|
||||||
),
|
|
||||||
];
|
|
||||||
metrics.requests_received.add(1, &tags);
|
|
||||||
|
|
||||||
|
// The host tag is only included in the requests_received metric,
|
||||||
|
// as for other metrics it can easily lead to cardinality explosions.
|
||||||
|
let host_tag = KeyValue::new(
|
||||||
|
"host",
|
||||||
|
req.uri()
|
||||||
|
.authority()
|
||||||
|
.map(|auth| auth.to_string())
|
||||||
|
.or_else(|| {
|
||||||
|
req.headers()
|
||||||
|
.get("host")
|
||||||
|
.map(|host| host.to_str().unwrap_or_default().to_string())
|
||||||
|
})
|
||||||
|
.unwrap_or_default(),
|
||||||
|
);
|
||||||
|
|
||||||
|
metrics
|
||||||
|
.requests_received
|
||||||
|
.add(1, &[host_tag, method_tag.clone()]);
|
||||||
|
|
||||||
|
let mut tags = vec![method_tag];
|
||||||
let resp = select_target_and_proxy(
|
let resp = select_target_and_proxy(
|
||||||
&https_config,
|
&https_config,
|
||||||
&proxy_config,
|
&proxy_config,
|
||||||
|
@ -188,7 +195,11 @@ async fn handle_request(
|
||||||
|
|
||||||
tags.push(KeyValue::new(
|
tags.push(KeyValue::new(
|
||||||
"status_code",
|
"status_code",
|
||||||
resp.status().as_u16().to_string(),
|
format!(
|
||||||
|
"{} {}",
|
||||||
|
resp.status().as_u16(),
|
||||||
|
resp.status().canonical_reason().unwrap_or_default()
|
||||||
|
),
|
||||||
));
|
));
|
||||||
metrics.requests_served.add(1, &tags);
|
metrics.requests_served.add(1, &tags);
|
||||||
|
|
||||||
|
@ -256,8 +267,8 @@ async fn select_target_and_proxy(
|
||||||
"target_addr",
|
"target_addr",
|
||||||
proxy_to.target_addr.to_string(),
|
proxy_to.target_addr.to_string(),
|
||||||
));
|
));
|
||||||
tags.push(KeyValue::new("same_node", proxy_to.same_node.to_string()));
|
tags.push(KeyValue::new("same_node", proxy_to.same_node));
|
||||||
tags.push(KeyValue::new("same_site", proxy_to.same_site.to_string()));
|
tags.push(KeyValue::new("same_site", proxy_to.same_site));
|
||||||
|
|
||||||
proxy_to.last_call.fetch_max(
|
proxy_to.last_call.fetch_max(
|
||||||
(received_time - https_config.time_origin).as_millis() as i64,
|
(received_time - https_config.time_origin).as_millis() as i64,
|
||||||
|
|
|
@ -24,11 +24,9 @@ impl MetricsServer {
|
||||||
let exporter = opentelemetry_prometheus::exporter()
|
let exporter = opentelemetry_prometheus::exporter()
|
||||||
.with_default_summary_quantiles(vec![0.25, 0.5, 0.75, 0.9, 0.95, 0.99])
|
.with_default_summary_quantiles(vec![0.25, 0.5, 0.75, 0.9, 0.95, 0.99])
|
||||||
.with_default_histogram_boundaries(vec![
|
.with_default_histogram_boundaries(vec![
|
||||||
0.001, 0.0015, 0.002, 0.003, 0.005, 0.007,
|
0.001, 0.0015, 0.002, 0.003, 0.005, 0.007, 0.01, 0.015, 0.02, 0.03, 0.05, 0.07,
|
||||||
0.01, 0.015, 0.02, 0.03, 0.05, 0.07,
|
0.1, 0.15, 0.2, 0.3, 0.5, 0.7, 1., 1.5, 2., 3., 5., 7., 10., 15., 20., 30., 40.,
|
||||||
0.1, 0.15, 0.2, 0.3, 0.5, 0.7,
|
50., 60., 70., 100.,
|
||||||
1., 1.5, 2., 3., 5., 7.,
|
|
||||||
10., 15., 20., 30., 40., 50., 60., 70., 100.
|
|
||||||
])
|
])
|
||||||
.init();
|
.init();
|
||||||
Self {
|
Self {
|
||||||
|
|
Loading…
Reference in a new issue