@@ -9,42 +9,34 @@ use std::{
9
9
net:: { IpAddr , Ipv4Addr , SocketAddr } ,
10
10
pin:: Pin ,
11
11
sync:: Arc ,
12
- time:: Duration ,
13
12
} ;
14
13
use tokio:: signal:: unix:: { signal, SignalKind } ;
15
14
16
- lazy_static:: lazy_static! {
17
- pub static ref EXAMPLE_COUNTER : Counter = Counter :: default ( ) ;
18
- }
19
-
20
15
#[ tokio:: main]
21
16
async fn main ( ) {
22
- let registry = register_metrics ( ) ;
17
+ let request_counter = Counter :: default ( ) ;
18
+
19
+ let registry = register_metrics ( & request_counter) ;
23
20
24
21
// Spawn a server to serve the OpenMetrics endpoint.
25
22
let metrics_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , 8001 ) ;
26
- tokio:: task:: spawn ( start_server ( metrics_addr, registry) ) ;
27
-
28
- loop {
29
- EXAMPLE_COUNTER . inc ( ) ;
30
- tokio:: time:: sleep ( Duration :: from_secs ( 1 ) ) . await ;
31
- }
23
+ tokio:: task:: spawn ( start_metrics_server ( metrics_addr, registry) ) ;
32
24
}
33
25
34
- pub fn register_metrics ( ) -> Registry {
26
+ pub fn register_metrics ( example_counter : & Counter ) -> Registry {
35
27
let mut registry = <Registry >:: with_prefix ( "tokio_hyper_example" ) ;
36
28
37
29
registry. register (
38
- "example_counter " ,
39
- "An example counter that will get incremented automatically " ,
40
- Box :: new ( EXAMPLE_COUNTER . clone ( ) ) ,
30
+ "requests " ,
31
+ "How many requests the application has received " ,
32
+ Box :: new ( example_counter . clone ( ) ) ,
41
33
) ;
42
34
43
35
registry
44
36
}
45
37
46
38
/// Start a HTTP server to report metrics.
47
- pub async fn start_server ( metrics_addr : SocketAddr , registry : Registry ) {
39
+ pub async fn start_metrics_server ( metrics_addr : SocketAddr , registry : Registry ) {
48
40
let mut shutdown_stream = signal ( SignalKind :: terminate ( ) ) . unwrap ( ) ;
49
41
50
42
eprintln ! ( "Starting metrics server on {metrics_addr}" ) ;
0 commit comments