14
14
import spdk .rpc as rpc
15
15
16
16
from prometheus_client .core import REGISTRY , GaugeMetricFamily , CounterMetricFamily , InfoMetricFamily
17
- from prometheus_client import start_http_server
17
+ from prometheus_client import start_http_server , GC_COLLECTOR
18
18
from typing import NamedTuple
19
19
20
+ COLLECTION_ELAPSED_WARNING = 0.8 # Percentage of the refresh interval before a warning message is issued
21
+ REGISTRY .unregister (GC_COLLECTOR ) # Turn of the garbage collector metrics
22
+
20
23
21
24
class RBD (NamedTuple ):
22
25
pool : str
@@ -42,10 +45,11 @@ def start_exporter(spdk_rpc_client, port, config):
42
45
key_filepath = config .get ('mtls' , 'server_key' )
43
46
logger = logging .getLogger (__name__ )
44
47
if os .path .exists (cert_filepath ) and os .path .exists (key_filepath ):
48
+ logger .info ("Prometheus exporter endpoint mode is https" )
45
49
start_http_server (port = port , certfile = cert_filepath , keyfile = key_filepath )
46
50
else :
47
51
# fallback to http if the cert and key are unavailable
48
- logger .warning ("TLS cert and key files not found, falling back to HTTP support " )
52
+ logger .warning ("Prometheus exporter endpoint mode is http. TLS cert and key files not found. " )
49
53
start_http_server (port )
50
54
REGISTRY .register (NVMeOFCollector (spdk_rpc_client , config ))
51
55
@@ -116,11 +120,10 @@ def _collect(self):
116
120
self ._get_subsystems
117
121
elapsed = time .time () - start_time
118
122
119
- interval_used = elapsed / self .interval
120
- if interval_used > 1 :
123
+ if elapsed > self .interval :
121
124
self .logger .error (f"Stats refresh time > interval time of { self .interval } secs" )
122
- elif interval_used > 0.8 :
123
- self .logger .warning ("Stats refresh is close to exceeding the interval (>80%) " )
125
+ elif elapsed > self . interval * COLLECTION_ELAPSED_WARNING :
126
+ self .logger .warning (f "Stats refresh of { elapsed :.2f } s is close to exceeding the interval { self . interval } s " )
124
127
else :
125
128
self .logger .debug (f"Stats refresh completed in { elapsed :.3f} secs." )
126
129
0 commit comments