@@ -14,25 +14,19 @@ use tokio::signal::unix::{signal, SignalKind};
14
14
15
15
#[ tokio:: main]
16
16
async fn main ( ) {
17
- let request_counter = Counter :: default ( ) ;
17
+ let request_counter: Counter < u64 > = Default :: default ( ) ;
18
18
19
- let registry = register_metrics ( & request_counter) ;
20
-
21
- // Spawn a server to serve the OpenMetrics endpoint.
22
- let metrics_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , 8001 ) ;
23
- tokio:: task:: spawn ( start_metrics_server ( metrics_addr, registry) ) ;
24
- }
25
-
26
- pub fn register_metrics ( example_counter : & Counter ) -> Registry {
27
19
let mut registry = <Registry >:: with_prefix ( "tokio_hyper_example" ) ;
28
20
29
21
registry. register (
30
22
"requests" ,
31
23
"How many requests the application has received" ,
32
- Box :: new ( example_counter . clone ( ) ) ,
24
+ Box :: new ( request_counter . clone ( ) ) ,
33
25
) ;
34
26
35
- registry
27
+ // Spawn a server to serve the OpenMetrics endpoint.
28
+ let metrics_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , 8001 ) ;
29
+ start_metrics_server ( metrics_addr, registry) . await
36
30
}
37
31
38
32
/// Start a HTTP server to report metrics.
@@ -67,13 +61,13 @@ pub fn make_handler(
67
61
Box :: pin ( async move {
68
62
let mut buf = Vec :: new ( ) ;
69
63
encode ( & mut buf, & reg. clone ( ) ) . map ( |_| {
70
- let body = std :: str :: from_utf8 ( buf. as_slice ( ) ) . unwrap ( ) . to_string ( ) ;
64
+ let body = Body :: from ( buf) ;
71
65
Response :: builder ( )
72
66
. header (
73
67
hyper:: header:: CONTENT_TYPE ,
74
68
"application/openmetrics-text; version=1.0.0; charset=utf-8" ,
75
69
)
76
- . body ( Body :: from ( body) )
70
+ . body ( body)
77
71
. unwrap ( )
78
72
} )
79
73
} )
0 commit comments