Skip to content

Commit d92c4e8

Browse files
fix(tools): parse ms-suffixed Prometheus scrape interval (#447)
1 parent 2051ee0 commit d92c4e8

4 files changed

Lines changed: 32 additions & 30 deletions

File tree

asap-tools/experiments/experiment_only_ingest_path.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,9 @@ def main(cfg: DictConfig):
227227
node_offset=args.node_offset,
228228
)
229229

230-
prometheus_scrape_interval = config.get_prometheus_scrape_interval(cfg.prometheus)
230+
prometheus_scrape_interval_ms = config.get_prometheus_scrape_interval_ms(
231+
cfg.prometheus
232+
)
231233

232234
# Start fake exporter if configured
233235
if config.check_exporter_and_queries_exist("fake_exporter", cfg.experiment_params):
@@ -288,16 +290,16 @@ def main(cfg: DictConfig):
288290

289291
prometheus_service.wait_until_ready()
290292

291-
label_discovery_wait = prometheus_scrape_interval * 2
293+
label_discovery_wait_ms = prometheus_scrape_interval_ms * 2
292294
print(
293-
f"Waiting {label_discovery_wait}s for Prometheus to scrape initial data "
295+
f"Waiting {label_discovery_wait_ms / 1000}s for Prometheus to scrape initial data "
294296
f"before running controller label inference..."
295297
)
296-
time.sleep(label_discovery_wait)
298+
time.sleep(label_discovery_wait_ms / 1000)
297299

298300
controller_service.start(
299301
controller_input_file=controller_input_config,
300-
prometheus_scrape_interval_ms=prometheus_scrape_interval * 1000,
302+
prometheus_scrape_interval_ms=prometheus_scrape_interval_ms,
301303
streaming_engine=args.streaming_engine,
302304
controller_remote_output_dir=CONTROLLER_REMOTE_OUTPUT_DIR,
303305
punting=args.controller_punting,

asap-tools/experiments/experiment_run_e2e.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ def main(cfg: DictConfig):
324324
prometheus_config_output_dir,
325325
node_offset=args.node_offset,
326326
)
327-
prometheus_scrape_interval = config.get_prometheus_scrape_interval(
327+
prometheus_scrape_interval_ms = config.get_prometheus_scrape_interval_ms(
328328
cfg.prometheus
329329
)
330330

@@ -352,12 +352,12 @@ def main(cfg: DictConfig):
352352
prometheus_service.wait_until_ready()
353353

354354
# Wait for two scrape intervals so Prometheus has series to return.
355-
label_discovery_wait = prometheus_scrape_interval * 2
355+
label_discovery_wait_ms = prometheus_scrape_interval_ms * 2
356356
print(
357-
f"Waiting {label_discovery_wait}s for Prometheus to scrape initial data "
357+
f"Waiting {label_discovery_wait_ms / 1000}s for Prometheus to scrape initial data "
358358
f"before running controller label inference..."
359359
)
360-
time.sleep(label_discovery_wait)
360+
time.sleep(label_discovery_wait_ms / 1000)
361361

362362
prometheus_url = (
363363
f"http://localhost:{prometheus_service.get_query_endpoint_port()}"
@@ -372,7 +372,7 @@ def main(cfg: DictConfig):
372372
url=prometheus_url,
373373
database=None,
374374
),
375-
prometheus_scrape_interval_ms=prometheus_scrape_interval * 1000,
375+
prometheus_scrape_interval_ms=prometheus_scrape_interval_ms,
376376
)
377377
sync.rsync_controller_config_remote_to_local(
378378
provider,
@@ -516,7 +516,7 @@ def main(cfg: DictConfig):
516516
experiment_output_dir=experiment_output_dir,
517517
local_experiment_dir=local_experiment_dir,
518518
flink_output_format=args.flink_output_format,
519-
prometheus_scrape_interval_ms=prometheus_scrape_interval * 1000,
519+
prometheus_scrape_interval_ms=prometheus_scrape_interval_ms,
520520
log_level=args.log_level,
521521
profile_query_engine=args.profile_query_engine,
522522
manual=args.manual_query_engine,

asap-tools/experiments/experiment_run_grafana_demo.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,9 @@ def main(cfg: DictConfig):
273273
prometheus_config_output_dir,
274274
node_offset=args.node_offset,
275275
)
276-
prometheus_scrape_interval = config.get_prometheus_scrape_interval(cfg.prometheus)
276+
prometheus_scrape_interval_ms = config.get_prometheus_scrape_interval_ms(
277+
cfg.prometheus
278+
)
277279

278280
if config.check_exporter_and_queries_exist("fake_exporter", cfg.experiment_params):
279281
# this DOES NOT block
@@ -341,16 +343,16 @@ def main(cfg: DictConfig):
341343

342344
prometheus_service.wait_until_ready()
343345

344-
label_discovery_wait = prometheus_scrape_interval * 2
346+
label_discovery_wait_ms = prometheus_scrape_interval_ms * 2
345347
print(
346-
f"Waiting {label_discovery_wait}s for Prometheus to scrape initial data "
348+
f"Waiting {label_discovery_wait_ms / 1000}s for Prometheus to scrape initial data "
347349
f"before running controller label inference..."
348350
)
349-
time.sleep(label_discovery_wait)
351+
time.sleep(label_discovery_wait_ms / 1000)
350352

351353
controller_service.start(
352354
controller_input_file=controller_input_config,
353-
prometheus_scrape_interval_ms=prometheus_scrape_interval * 1000,
355+
prometheus_scrape_interval_ms=prometheus_scrape_interval_ms,
354356
streaming_engine=args.streaming_engine,
355357
controller_remote_output_dir=CONTROLLER_REMOTE_OUTPUT_DIR,
356358
punting=args.controller_punting,
@@ -467,7 +469,7 @@ def main(cfg: DictConfig):
467469
experiment_output_dir=experiment_output_dir,
468470
local_experiment_dir=local_experiment_dir,
469471
flink_output_format=args.flink_output_format,
470-
prometheus_scrape_interval_ms=prometheus_scrape_interval * 1000,
472+
prometheus_scrape_interval_ms=prometheus_scrape_interval_ms,
471473
log_level=args.log_level,
472474
profile_query_engine=args.profile_query_engine,
473475
manual=args.manual_query_engine,

asap-tools/experiments/experiment_utils/config.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -478,20 +478,18 @@ def read_workloads_config(experiment_params: DictConfig):
478478
return workloads_config
479479

480480

481-
def get_prometheus_scrape_interval(prometheus_config):
482-
"""Extract scrape interval from Prometheus configuration."""
483-
prometheus_scrape_interval_string = prometheus_config.scrape_interval
484-
# convert to seconds
485-
if prometheus_scrape_interval_string.endswith("s"):
486-
prometheus_scrape_interval = int(prometheus_scrape_interval_string[:-1])
487-
elif prometheus_scrape_interval_string.endswith("m"):
488-
prometheus_scrape_interval = int(prometheus_scrape_interval_string[:-1]) * 60
481+
def get_prometheus_scrape_interval_ms(prometheus_config):
482+
"""Extract scrape interval from Prometheus configuration, returned in milliseconds."""
483+
s = prometheus_config.scrape_interval
484+
# ponytail: check ms before s — "100ms".endswith("s") is True and would misroute
485+
if s.endswith("ms"):
486+
return int(s[:-2])
487+
elif s.endswith("s"):
488+
return int(s[:-1]) * 1000
489+
elif s.endswith("m"):
490+
return int(s[:-1]) * 60 * 1000
489491
else:
490-
raise ValueError(
491-
f"Invalid scrape interval string: {prometheus_scrape_interval_string}"
492-
)
493-
494-
return prometheus_scrape_interval
492+
raise ValueError(f"Invalid scrape interval string: {s}")
495493

496494

497495
class Args:

0 commit comments

Comments
 (0)