Add content-type header to metrics server response (#3970)
This fixes issues with certain metrics scrapers, which might error if the content-type is not correctly set. ## Issue Addressed Fixes https://github.com/sigp/lighthouse/issues/3437 ## Proposed Changes Simply set header: `Content-Type: text/plain` on metrics server response. Seems like the errored branch does this correctly already. ## Additional Info This is needed also to enable influx-db metric scraping which work very nicely with Geth.
This commit is contained in:
parent
47b22d5256
commit
cc4fc422b2
@ -116,7 +116,13 @@ pub fn serve<T: BeaconChainTypes>(
|
|||||||
.and_then(|ctx: Arc<Context<T>>| async move {
|
.and_then(|ctx: Arc<Context<T>>| async move {
|
||||||
Ok::<_, warp::Rejection>(
|
Ok::<_, warp::Rejection>(
|
||||||
metrics::gather_prometheus_metrics(&ctx)
|
metrics::gather_prometheus_metrics(&ctx)
|
||||||
.map(|body| Response::builder().status(200).body(body).unwrap())
|
.map(|body| {
|
||||||
|
Response::builder()
|
||||||
|
.status(200)
|
||||||
|
.header("Content-Type", "text/plain")
|
||||||
|
.body(body)
|
||||||
|
.unwrap()
|
||||||
|
})
|
||||||
.unwrap_or_else(|e| {
|
.unwrap_or_else(|e| {
|
||||||
Response::builder()
|
Response::builder()
|
||||||
.status(500)
|
.status(500)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use beacon_chain::test_utils::EphemeralHarnessType;
|
use beacon_chain::test_utils::EphemeralHarnessType;
|
||||||
use environment::null_logger;
|
use environment::null_logger;
|
||||||
use http_metrics::Config;
|
use http_metrics::Config;
|
||||||
|
use reqwest::header::HeaderValue;
|
||||||
use reqwest::StatusCode;
|
use reqwest::StatusCode;
|
||||||
use std::net::{IpAddr, Ipv4Addr};
|
use std::net::{IpAddr, Ipv4Addr};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -45,7 +46,13 @@ async fn returns_200_ok() {
|
|||||||
listening_socket.port()
|
listening_socket.port()
|
||||||
);
|
);
|
||||||
|
|
||||||
assert_eq!(reqwest::get(&url).await.unwrap().status(), StatusCode::OK);
|
let response = reqwest::get(&url).await.unwrap();
|
||||||
|
|
||||||
|
assert_eq!(response.status(), StatusCode::OK);
|
||||||
|
assert_eq!(
|
||||||
|
response.headers().get("Content-Type").unwrap(),
|
||||||
|
&HeaderValue::from_str("text/plain").unwrap()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,13 @@ pub fn serve<T: EthSpec>(
|
|||||||
.and_then(|ctx: Arc<Context<T>>| async move {
|
.and_then(|ctx: Arc<Context<T>>| async move {
|
||||||
Ok::<_, warp::Rejection>(
|
Ok::<_, warp::Rejection>(
|
||||||
metrics::gather_prometheus_metrics(&ctx)
|
metrics::gather_prometheus_metrics(&ctx)
|
||||||
.map(|body| Response::builder().status(200).body(body).unwrap())
|
.map(|body| {
|
||||||
|
Response::builder()
|
||||||
|
.status(200)
|
||||||
|
.header("Content-Type", "text/plain")
|
||||||
|
.body(body)
|
||||||
|
.unwrap()
|
||||||
|
})
|
||||||
.unwrap_or_else(|e| {
|
.unwrap_or_else(|e| {
|
||||||
Response::builder()
|
Response::builder()
|
||||||
.status(500)
|
.status(500)
|
||||||
|
Loading…
Reference in New Issue
Block a user