Skip to content

Commit 62b947c

Browse files
authored
Merge pull request #181 from Helene/internal_perf_measures
Refine internal time performance analytics
2 parents aa4fb80 + 72afca3 commit 62b947c

File tree

5 files changed

+19
-7
lines changed

5 files changed

+19
-7
lines changed

source/analytics.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,12 @@
2323
global inspect
2424
inspect = False
2525

26+
global inspect_special
27+
inspect_special = False
28+
2629
global urllib3_debug
2730
urllib3_debug = 0
31+
32+
# measure requests Time-To-First-Byte (TTFB)
33+
global requests_elapsed_time
34+
requests_elapsed_time = False

source/collector.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def __init__(self, columnInfo, dps, filtersMap):
4747

4848
self.parse_tags(filtersMap)
4949

50-
@cond_execution_time(enabled=analytics.inspect)
50+
@cond_execution_time(enabled=analytics.inspect_special)
5151
def parse_tags(self, filtersMap):
5252
tagsDict = defaultdict(set)
5353
logger = getBridgeLogger()
@@ -301,6 +301,7 @@ def start_collect(self):
301301
'_Collector'
302302
self.thread = Thread(name=thread_name, target=self.collect)
303303
self.thread.start()
304+
self.thread.name += '_' + str(self.thread.ident)
304305
self.logger.trace(
305306
MSG['StartCustomThread'].format(self.thread.name))
306307

@@ -378,13 +379,13 @@ def _collect(self):
378379
self.metrics[columnInfo.keys[0].metric] = mt
379380
# self.logger.info(f'rows data {str(columnValues)}')
380381

381-
@cond_execution_time(enabled=analytics.inspect)
382+
@cond_execution_time(enabled=analytics.inspect_special)
382383
def prepare_static_metrics_data(self):
383384
incl_metrics = list(self.request.metricsaggr.keys()
384385
) if self.request.metricsaggr else None
385386
self.setup_static_metrics_data(incl_metrics)
386387

387-
@cond_execution_time(enabled=analytics.inspect)
388+
@cond_execution_time(enabled=analytics.inspect_special)
388389
def validate_query_filters(self):
389390
# check filterBy settings
390391
if self.request.filters:
@@ -433,7 +434,7 @@ def validate_query_filters(self):
433434
raise cherrypy.HTTPError(
434435
400, MSG['AttrNotValid'].format('filter'))
435436

436-
@cond_execution_time(enabled=analytics.inspect)
437+
@cond_execution_time(enabled=analytics.inspect_special)
437438
def validate_group_tags(self):
438439
# check groupBy settings
439440
if self.request.grouptags:

source/opentsdb.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def qh(self):
5050
def TOPO(self):
5151
return self.__md.metaData
5252

53-
@cond_execution_time(enabled=analytics.inspect)
53+
@cond_execution_time(enabled=analytics.inspect_special)
5454
def format_response(self, data: dict, jreq: dict) -> List[dict]:
5555
respList = []
5656
metrics = set(data.values())

source/prometheus.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def qh(self):
5757
def TOPO(self):
5858
return self.__md.metaData
5959

60-
@cond_execution_time(enabled=analytics.inspect)
60+
@cond_execution_time(enabled=analytics.inspect_special)
6161
def format_response(self, data) -> [str]:
6262
resp = []
6363
for name, metric in data.items():

source/queryHandler/QueryHandler.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,10 @@ def __do_RESTCall(self, endpoint, requestType='GET', params=None):
523523
_response = _request.doRequest()
524524

525525
if _response.status_code == 200:
526+
# the r.elapsed is the Time-To-First-Byte (TTFB) while the call to requests.get()
527+
# only terminates after the whole message has been received (Time-To-Last-Byte, TTLB).
528+
if analytics.requests_elapsed_time:
529+
self.logger.debug(f'response elapsed time: {_response.elapsed.total_seconds()} for request: {str(params)}')
526530
return _response.content.decode('utf-8', "strict")
527531
elif _response.status_code == 401:
528532
self.logger.trace('Request headers:{}'.format(_response.request.headers))
@@ -532,7 +536,7 @@ def __do_RESTCall(self, endpoint, requestType='GET', params=None):
532536
raise PerfmonConnError("{} {}".format(_response.status_code, _response.reason))
533537
else:
534538
msg = "Perfmon RESTcall error __ Server responded: {} {}".format(_response.status_code, _response.reason)
535-
self.logger.trace(msg)
539+
self.logger.details(msg)
536540
if _response.content:
537541
contentMsg = _response.content.decode('utf-8', "strict")
538542
self.logger.trace(f'Response content:{contentMsg}')

0 commit comments

Comments
 (0)