@@ -14,7 +14,7 @@ use crate::protocol::Protocol;
14
14
use crate :: server:: tls:: { self , TLSAcceptor } ;
15
15
use crate :: { meters, ConnectionSettings , Meter } ;
16
16
use flume:: { RecvError , SendError , Sender } ;
17
- use std:: net:: SocketAddr ;
17
+ use std:: net:: { IpAddr , Ipv4Addr , SocketAddr } ;
18
18
use std:: sync:: Arc ;
19
19
use tracing:: { error, field, info, Instrument } ;
20
20
#[ cfg( feature = "websockets" ) ]
@@ -233,14 +233,24 @@ impl Broker {
233
233
}
234
234
235
235
if let Some ( prometheus_setting) = & self . config . prometheus {
236
- let port = prometheus_setting. port ;
237
236
let timeout = prometheus_setting. interval ;
237
+ // If port is specified use it instead of listen.
238
+ // NOTE: This means listen is ignored when `port` is specified.
239
+ // `port` will be removed in future release in favour of `listen`
240
+ let addr = {
241
+ #[ allow( deprecated) ]
242
+ match prometheus_setting. port {
243
+ Some ( port) => SocketAddr :: new ( "127.0.0.1" . parse ( ) . unwrap ( ) , port) ,
244
+ None => prometheus_setting. listen . unwrap_or ( SocketAddr :: new (
245
+ IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) ,
246
+ 9042 ,
247
+ ) ) ,
248
+ }
249
+ } ;
238
250
let metrics_thread = thread:: Builder :: new ( ) . name ( "Metrics" . to_owned ( ) ) ;
239
251
let meter_link = self . meters ( ) . unwrap ( ) ;
240
-
241
252
metrics_thread. spawn ( move || {
242
- let builder = PrometheusBuilder :: new ( )
243
- . with_http_listener ( SocketAddr :: new ( "127.0.0.1" . parse ( ) . unwrap ( ) , port) ) ;
253
+ let builder = PrometheusBuilder :: new ( ) . with_http_listener ( addr) ;
244
254
builder. install ( ) . unwrap ( ) ;
245
255
246
256
let total_publishes = register_gauge ! ( "metrics.router.total_publishes" ) ;
0 commit comments