Skip to content

Commit 4249ec2

Browse files
committed
feat: add jobs status to metrics
1 parent 53eb581 commit 4249ec2

4 files changed

Lines changed: 24 additions & 9 deletions

File tree

‎pesto-cli/integrationtests/tests-all.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def check_build(use_ssl=False):
111111
service.run()
112112
time.sleep(5)
113113
endpoint = EndpointManager(server_url=service.server_url)
114-
metrics = endpoint.metrics
114+
metrics = endpoint.metrics()
115115
print("Metrics:")
116116
print(metrics)
117117
describe = endpoint.describe

‎pesto-cli/pesto/common/testing/endpoint_manager.py‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class EndpointManager:
1212
def __init__(self, server_url):
1313
self.server_url = server_url
1414
self._describe = None
15-
self._metrics = None
1615

1716
@property
1817
def is_alive(self) -> bool:
@@ -23,12 +22,9 @@ def is_alive(self) -> bool:
2322
except:
2423
return False
2524

26-
@property
2725
def metrics(self) -> str:
28-
if not self._metrics:
29-
response = requests.get(url="{}/api/v1/metrics".format(self.server_url), verify=False)
30-
self._metrics = response.text
31-
return self._metrics
26+
response = requests.get(url="{}/api/v1/metrics".format(self.server_url), verify=False)
27+
return response.text
3228

3329
@property
3430
def metrics_available(self) -> bool:

‎pesto-cli/pesto/common/testing/test_runner.py‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def run_all(self, test_resources_path: Path):
7373

7474
all_results = dict()
7575

76-
metrics = service_tester.endpoint_manager.metrics
76+
metrics = service_tester.endpoint_manager.metrics()
7777
logger.info("Metrics:")
7878
logger.info(metrics)
7979

@@ -113,6 +113,16 @@ def run_all(self, test_resources_path: Path):
113113

114114
self._serialize_response(response_path, response)
115115

116+
# Metrics after one more test
117+
metrics = service_tester.endpoint_manager.metrics()
118+
logger.info("Metrics after one more test:")
119+
logger.info(metrics)
120+
121+
# Metrics after all tests
122+
metrics = service_tester.endpoint_manager.metrics()
123+
logger.info("Metrics after all tests:")
124+
logger.info(metrics)
125+
116126
with open(self._tmp_test_resources / "results.json", "w") as f:
117127
json.dump(all_results, f, indent=2)
118128

‎pesto-cli/pesto/ws/v1.py‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,22 @@ def health() -> Response:
6262
return Response(content='OK',status_code=200,media_type='text/plain')
6363

6464
@v1.get('/metrics')
65-
def metrics() -> Response:
65+
def metrics(request: Request) -> Response:
6666
processing_version = DescribeService.compute_version().get("version", "unknown")
6767
metrics = (
6868
'# HELP pesto_instance_info Information about the Pesto instance\n'
6969
'# TYPE pesto_instance_info gauge\n'
7070
f'pesto_instance_info{{pesto_version="{PESTO_VERSION}",processing_version="{processing_version}"}} 1\n'
71+
'# HELP pesto_jobs_total Information about the jobs\n'
72+
'# TYPE pesto_jobs_total gauge\n'
7173
)
74+
url_root = _get_url_root(request)
75+
result = JobListService().job_list(url_root)
76+
for job_id in result.keys():
77+
job_status = JobStatusService(url_root, job_id).get_status()
78+
status = job_status.get('status')
79+
progress = job_status.get('progress')
80+
metrics += f'pesto_job_total{{id="{job_id}",status="{status}",progress="{progress}"}} 1\n'
7281
return Response(content=metrics, status_code=200, media_type='text/plain')
7382

7483
@v1.post('/jobs')

0 commit comments

Comments
 (0)