Enable missing code for prometheus actix-web stats (#4230)
* Enable missing code for prometheus actix-web stats * enable middleware conditionally
This commit is contained in:
parent
3f79eacb53
commit
a5386187e3
4 changed files with 25 additions and 5 deletions
14
Cargo.lock
generated
14
Cargo.lock
generated
|
@ -328,6 +328,19 @@ dependencies = [
|
|||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "actix-web-prom"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f23f332a652836b8f3a6876103c70c9ed436d0e69fa779ab5d7f57b1d5c8d488"
|
||||
dependencies = [
|
||||
"actix-web",
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
"prometheus",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.21.0"
|
||||
|
@ -2776,6 +2789,7 @@ dependencies = [
|
|||
"activitypub_federation",
|
||||
"actix-cors",
|
||||
"actix-web",
|
||||
"actix-web-prom",
|
||||
"chrono",
|
||||
"clap",
|
||||
"clokwerk",
|
||||
|
|
|
@ -191,3 +191,4 @@ chrono = { workspace = true }
|
|||
prometheus = { version = "0.13.3", features = ["process"] }
|
||||
serial_test = { workspace = true }
|
||||
clap = { version = "4.4.10", features = ["derive"] }
|
||||
actix-web-prom = "0.7.0"
|
||||
|
|
|
@ -43,8 +43,8 @@ services:
|
|||
- RUST_LOG="warn,lemmy_server=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug"
|
||||
- RUST_BACKTRACE=full
|
||||
ports:
|
||||
# prometheus metrics available at the path /metrics on port 10002 by default
|
||||
# enable prometheus metrics by setting the CARGO_BUILD_FEATURES build arg above to "prometheus-metrics"
|
||||
# prometheus metrics can be enabled with the `prometheus` config option. they are available on
|
||||
# port 10002, path /metrics by default
|
||||
- "10002:10002"
|
||||
volumes:
|
||||
- ./lemmy.hjson:/config/config.hjson:Z
|
||||
|
|
11
src/lib.rs
11
src/lib.rs
|
@ -16,13 +16,14 @@ use activitypub_federation::config::{FederationConfig, FederationMiddleware};
|
|||
use actix_cors::Cors;
|
||||
use actix_web::{
|
||||
dev::{ServerHandle, ServiceResponse},
|
||||
middleware::{self, ErrorHandlerResponse, ErrorHandlers},
|
||||
middleware::{self, Condition, ErrorHandlerResponse, ErrorHandlers},
|
||||
web::Data,
|
||||
App,
|
||||
HttpResponse,
|
||||
HttpServer,
|
||||
Result,
|
||||
};
|
||||
use actix_web_prom::PrometheusMetricsBuilder;
|
||||
use clap::{ArgAction, Parser};
|
||||
use lemmy_api_common::{
|
||||
context::LemmyContext,
|
||||
|
@ -49,6 +50,7 @@ use lemmy_utils::{
|
|||
response::jsonify_plain_text_errors,
|
||||
settings::{structs::Settings, SETTINGS},
|
||||
};
|
||||
use prometheus::default_registry;
|
||||
use prometheus_metrics::serve_prometheus;
|
||||
use reqwest_middleware::{ClientBuilder, ClientWithMiddleware};
|
||||
use reqwest_tracing::TracingMiddleware;
|
||||
|
@ -271,7 +273,6 @@ fn create_http_server(
|
|||
) -> Result<ServerHandle, LemmyError> {
|
||||
// this must come before the HttpServer creation
|
||||
// creates a middleware that populates http metrics for each path, method, and status code
|
||||
#[cfg(feature = "prometheus-metrics")]
|
||||
let prom_api_metrics = PrometheusMetricsBuilder::new("lemmy_api")
|
||||
.registry(default_registry().clone())
|
||||
.build()
|
||||
|
@ -296,7 +297,11 @@ fn create_http_server(
|
|||
.app_data(Data::new(context.clone()))
|
||||
.app_data(Data::new(rate_limit_cell.clone()))
|
||||
.wrap(FederationMiddleware::new(federation_config.clone()))
|
||||
.wrap(SessionMiddleware::new(context.clone()));
|
||||
.wrap(SessionMiddleware::new(context.clone()))
|
||||
.wrap(Condition::new(
|
||||
SETTINGS.prometheus.is_some(),
|
||||
prom_api_metrics.clone(),
|
||||
));
|
||||
|
||||
// The routes
|
||||
app
|
||||
|
|
Loading…
Reference in a new issue