@@ -75,34 +75,33 @@ def generate_latest(registry=core.REGISTRY):
7575 output .append ('{0}{1} {2}\n ' .format (name , labelstr , core ._floatToGoString (value )))
7676 return '' .join (output ).encode ('utf-8' )
7777
78-
79- class MetricsHandler (BaseHTTPRequestHandler ):
80- def do_GET (self ):
81- registry = core .REGISTRY
82- params = parse_qs (urlparse (self .path ).query )
83- if 'name[]' in params :
84- registry = registry .restricted_registry (params ['name[]' ])
85- try :
86- output = generate_latest (registry )
87- except :
88- self .send_error (500 , 'error generating metric output' )
89- raise
90- self .send_response (200 )
91- self .send_header ('Content-Type' , CONTENT_TYPE_LATEST )
92- self .end_headers ()
93- self .wfile .write (output )
94-
95- def log_message (self , format , * args ):
96- return
97-
98-
99- def start_http_server (port , addr = '' ):
78+ def generate_metrics_handler (registry ):
79+ class MetricsHandler (BaseHTTPRequestHandler ):
80+ def do_GET (self ):
81+ params = parse_qs (urlparse (self .path ).query )
82+ if 'name[]' in params :
83+ registry = registry .restricted_registry (params ['name[]' ])
84+ try :
85+ output = generate_latest (registry )
86+ except :
87+ self .send_error (500 , 'error generating metric output' )
88+ raise
89+ self .send_response (200 )
90+ self .send_header ('Content-Type' , CONTENT_TYPE_LATEST )
91+ self .end_headers ()
92+ self .wfile .write (output )
93+
94+ def log_message (self , format , * args ):
95+ return
96+
97+
98+ def start_http_server (port , addr = '' , registry = core .REGISTRY ):
10099 """Starts an HTTP server for prometheus metrics as a daemon thread"""
101100 class ThreadingSimpleServer (ThreadingMixIn , HTTPServer ):
102101 pass
103102 class PrometheusMetricsServer (threading .Thread ):
104103 def run (self ):
105- httpd = ThreadingSimpleServer ((addr , port ), MetricsHandler )
104+ httpd = ThreadingSimpleServer ((addr , port ), generate_metrics_handler ( registry ) )
106105 httpd .serve_forever ()
107106 t = PrometheusMetricsServer ()
108107 t .daemon = True
0 commit comments