@@ -47,8 +47,10 @@ def start(self):
4747
4848 async def handle_metrics (self , request , * args , ** kwargs ):
4949 params = dict ([p .split ('=' ) for p in request .query_string .split ('&' )]) if request .query_string else {}
50- self .logger .debug ("Handling metrics request: %s" , request )
51- return Response (text = self .export (params ))
50+ self .logger .info ("[%s:%d] Handling metrics request: %s" % (self .host , self .port , request .query_string ))
51+ response = Response (text = await self .export (params ))
52+ self .logger .info ("[%s] Sending response: <%d> Length: %d" % (request .remote , response .status , response .content_length ))
53+ return response
5254
5355 def __setattr__ (self , name , value ):
5456 if name == 'labels' and not isinstance (value , Labels ):
@@ -79,30 +81,30 @@ def add_config_metrics(self):
7981 self .logger .info ("Adding metric: %s" , name )
8082 self .metrics .append (Metric (name = name , ** kwargs , ** values ))
8183
82- def filter_metrics (self , label_filter = {}):
84+ async def filter_metrics (self , label_filter = {}):
8385 """ Filters metrics by label. """
84- metrics = self ._get_metrics (). copy ()
86+ metrics = await self ._get_metrics ()
8587 for metric in metrics :
86- metrics = metric .labels .filter_metrics (metrics , label_filter )
88+ metrics = await metric .labels .filter_metrics (metrics , label_filter )
8789 return metrics
8890
8991 def get_labels (self ):
9092 """ Gets a copy of the labels dict. """
9193 return self .labels .copy ()
9294
93- def _get_metrics (self ):
95+ async def _get_metrics (self ):
9496 """ Gets all defined metrics. """
9597 return self .metrics
9698
97- def get_metrics (self , label_filter = {}):
99+ async def get_metrics (self , label_filter = {}):
98100 """ Gets all defined metrics, filtered by label_filter Can be overridden to use other methods."""
99- return self .filter_metrics (label_filter )
101+ return await self .filter_metrics (label_filter )
100102
101- def export (self , label_filter = {}):
103+ async def export (self , label_filter = {}):
102104 """
103105 Gets metrics using self.get_metrics(), passing the label_filter.
104106 Turns them into a metric string for prometheus.
105107 """
106- metrics = self .get_metrics (label_filter )
108+ metrics = await self .get_metrics (label_filter )
107109 self .logger .debug ("Exporting metrics: %s" , metrics )
108110 return "\n " .join ([str (metric ) for metric in metrics ])
0 commit comments