Skip to content

Commit ab9b1a9

Browse files
committed
A way to record skipped files in prometheus
1 parent 432c50b commit ab9b1a9

File tree

5 files changed

+36
-3
lines changed

5 files changed

+36
-3
lines changed

src/murfey/client/multigrid_control.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,8 +607,15 @@ def _increment_transferred_files_prometheus(
607607
requests.post(url, json=data)
608608

609609
def _increment_transferred_files(
610-
self, updates: List[RSyncerUpdate], source: str, destination: str
610+
self,
611+
updates: List[RSyncerUpdate],
612+
num_skipped_files: int,
613+
source: str,
614+
destination: str,
611615
):
616+
skip_url = f"{str(self._environment.url.geturl())}{url_path_for('prometheus.router', 'increment_rsync_skipped_files_prometheus', visit_name=self._environment.visit, increment_count=num_skipped_files)}"
617+
requests.post(skip_url, json={})
618+
612619
checked_updates = [
613620
update for update in updates if update.outcome is TransferResult.SUCCESS
614621
]

src/murfey/client/rsync.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ def _fake_transfer(self, files: list[Path]) -> bool:
309309
self.notify(update)
310310
updates.append(update)
311311
time.sleep(0.01)
312-
self.notify([update], secondary=True)
312+
self.notify([update], num_skipped_files=0, secondary=True)
313313
# self.notify(updates, secondary=True)
314314

315315
return True
@@ -328,8 +328,10 @@ def _transfer(self, infiles: list[Path]) -> bool:
328328
if f.is_file() and f.stat().st_ctime < self._end_time.timestamp()
329329
]
330330
self._skipped_files.extend(set(infiles).difference(set(files)))
331+
num_skipped_files = len(set(infiles).difference(set(files)))
331332
else:
332333
files = [f for f in infiles if f.is_file()]
334+
num_skipped_files = 0
333335

334336
previously_transferred = self._files_transferred
335337
transfer_success: set[Path] = set()
@@ -528,7 +530,9 @@ def parse_stderr(line: str):
528530
if success:
529531
success = result.returncode == 0
530532

531-
self.notify(successful_updates, secondary=True)
533+
self.notify(
534+
successful_updates, num_skipped_files=num_skipped_files, secondary=True
535+
)
532536

533537
# Print out a summary message for each file transfer batch instead of individual messages
534538
# List out file paths as stored in memory to see if issue is due to file path mismatch

src/murfey/server/api/prometheus.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,15 @@ def increment_rsync_transferred_files_prometheus(
9090
).inc(rsyncer_info.data_bytes)
9191

9292

93+
@router.post(
94+
"/visits/{visit_name}/increment_rsync_skipped_files_prometheus/{increment_count}"
95+
)
96+
def increment_rsync_skipped_files_prometheus(
97+
visit_name: str, increment_count: int, db=murfey_db
98+
):
99+
prom.skipped_files.labels(visit=visit_name).inc(increment_count)
100+
101+
93102
@router.post("/visits/{visit_name}/monitoring/{on}")
94103
def change_monitoring_status(visit_name: str, on: int):
95104
prom.monitoring_switch.labels(visit=visit_name)

src/murfey/server/prometheus.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
["rsync_source", "visit"],
2525
)
2626

27+
skipped_files = Gauge(
28+
"skipped_files",
29+
"Number of files not transferred due to end time",
30+
["visit"],
31+
)
32+
2733
preprocessed_movies = Counter(
2834
"preprocessed_movies",
2935
"Number of movies that have been preprocessed",

src/murfey/util/route_manifest.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,13 @@ murfey.server.api.prometheus.router:
642642
type: str
643643
methods:
644644
- POST
645+
- path: /prometheus/visits/{visit_name}/increment_rsync_skipped_files_prometheus/{increment_count}
646+
function: increment_rsync_skipped_files_prometheus
647+
path_params:
648+
- name: visit_name
649+
type: str
650+
- name: increment_count
651+
type: int
645652
- path: /prometheus/visits/{visit_name}/monitoring/{on}
646653
function: change_monitoring_status
647654
path_params:

0 commit comments

Comments
 (0)