@@ -21,6 +21,7 @@ use actix_web::dev::ServiceRequest;
21
21
use actix_web:: { middleware, web, App , HttpServer } ;
22
22
use actix_web_httpauth:: extractors:: basic:: BasicAuth ;
23
23
use actix_web_httpauth:: middleware:: HttpAuthentication ;
24
+ use actix_web_prometheus:: { PrometheusMetrics , PrometheusMetricsBuilder } ;
24
25
use actix_web_static_files:: ResourceFiles ;
25
26
use clokwerk:: { AsyncScheduler , Scheduler , TimeUnits } ;
26
27
use log:: warn;
@@ -68,6 +69,11 @@ async fn main() -> anyhow::Result<()> {
68
69
CONFIG . validate_storage ( & * storage) . await ;
69
70
let metadata = storage:: resolve_parseable_metadata ( ) . await ?;
70
71
banner:: print ( & CONFIG , metadata) ;
72
+ let prometheus = PrometheusMetricsBuilder :: new ( env ! ( "CARGO_PKG_NAME" ) )
73
+ . registry ( prometheus:: default_registry ( ) . clone ( ) )
74
+ . endpoint ( "/metrics" )
75
+ . build ( )
76
+ . unwrap ( ) ;
71
77
72
78
migration:: run_migration ( & CONFIG ) . await ?;
73
79
@@ -82,7 +88,7 @@ async fn main() -> anyhow::Result<()> {
82
88
let ( mut remote_sync_handler, mut remote_sync_outbox, mut remote_sync_inbox) =
83
89
object_store_sync ( ) ;
84
90
85
- let app = run_http ( ) ;
91
+ let app = run_http ( prometheus ) ;
86
92
tokio:: pin!( app) ;
87
93
loop {
88
94
tokio:: select! {
@@ -206,7 +212,7 @@ async fn validator(
206
212
Err ( ( actix_web:: error:: ErrorUnauthorized ( "Unauthorized" ) , req) )
207
213
}
208
214
209
- async fn run_http ( ) -> anyhow:: Result < ( ) > {
215
+ async fn run_http ( prometheus : PrometheusMetrics ) -> anyhow:: Result < ( ) > {
210
216
let ssl_acceptor = match (
211
217
& CONFIG . parseable . tls_cert_path ,
212
218
& CONFIG . parseable . tls_key_path ,
@@ -242,7 +248,7 @@ async fn run_http() -> anyhow::Result<()> {
242
248
} ;
243
249
244
250
// concurrent workers equal to number of cores on the cpu
245
- let http_server = HttpServer :: new ( move || create_app ! ( ) ) . workers ( num_cpus:: get ( ) ) ;
251
+ let http_server = HttpServer :: new ( move || create_app ! ( prometheus ) ) . workers ( num_cpus:: get ( ) ) ;
246
252
if let Some ( config) = ssl_acceptor {
247
253
http_server
248
254
. bind_rustls ( & CONFIG . parseable . address , config) ?
@@ -313,8 +319,9 @@ pub fn configure_routes(cfg: &mut web::ServiceConfig) {
313
319
314
320
#[ macro_export]
315
321
macro_rules! create_app {
316
- ( ) => {
322
+ ( $prometheus : expr ) => {
317
323
App :: new( )
324
+ . wrap( $prometheus. clone( ) )
318
325
. configure( |cfg| configure_routes( cfg) )
319
326
. wrap( middleware:: Logger :: default ( ) )
320
327
. wrap( middleware:: Compress :: default ( ) )
0 commit comments