[llvm] [CI] Add queue size, running count metrics (PR #122714)
Nathan Gauër via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 14 02:14:29 PST 2025
================
@@ -26,7 +26,67 @@ class JobMetrics:
workflow_id: int
-def get_metrics(github_repo: github.Repository, workflows_to_track: dict[str, int]):
+ at dataclass
+class GaugeMetric:
+ name: str
+ value: int
+ time_ns: int
+
+
+def get_sampled_workflow_metrics(github_repo: github.Repository):
+ """Gets global statistics about the Github workflow queue
+
+ Args:
+ github_repo: A github repo object to use to query the relevant information.
+
+ Returns:
+ Returns a list of GaugeMetric objects, containing the relevant metrics about
+ the workflow
+ """
+
+ # Other states are available (pending, waiting, etc), but the meaning
+ # is not documented (See #70540).
+ # "queued" seems to be the info we want.
+ queued_workflow_count = len(
+ [
+ x
+ for x in github_repo.get_workflow_runs(status="queued")
+ if x.name in WORKFLOWS_TO_TRACK
+ ]
+ )
+ running_workflow_count = len(
+ [
+ x
+ for x in github_repo.get_workflow_runs(status="in_progress")
+ if x.name in WORKFLOWS_TO_TRACK
+ ]
+ )
+
+ workflow_metrics = []
+ workflow_metrics.append(
+ GaugeMetric(
+ "workflow_queue_size",
+ queued_workflow_count,
+ time.time_ns(),
+ )
+ )
+ workflow_metrics.append(
+ GaugeMetric(
+ "running_workflow_count",
+ running_workflow_count,
+ time.time_ns(),
+ )
+ )
+ # Always send a hearbeat metric so we can monitor is this container is still able to log to Grafana.
----------------
Keenuts wrote:
Right, shouldn't be in this function. Wrapping seemed too much, just moved it to the main function
https://github.com/llvm/llvm-project/pull/122714
More information about the llvm-commits
mailing list