aboutsummaryrefslogtreecommitdiff
path: root/slurm_number_jobs.rb
diff options
context:
space:
mode:
Diffstat (limited to 'slurm_number_jobs.rb')
-rw-r--r--slurm_number_jobs.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/slurm_number_jobs.rb b/slurm_number_jobs.rb
new file mode 100644
index 0000000..91fe630
--- /dev/null
+++ b/slurm_number_jobs.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+# Report the number of jobs currently in queue,
+# aggregated by state, user, and partition
+class SlurmNumberJobs
+ def initialize(collector, config)
+ @collector = collector
+ @config = config
+ end
+
+ def raid
+ raw = `squeue --format="%P,%u,%T" --noheader`
+ raw = raw.lines.map(&:strip)
+ raw = raw.map { |line| line.split(',') }
+
+ tally = raw.tally
+
+ @collector.redact!('slurm_number_jobs')
+
+ tally.each do |labelset, number|
+ @collector.report!(
+ 'slurm_number_jobs',
+ number,
+ help: 'Number of jobs for a given user, partition, and state',
+ type: 'gauge',
+ labels: {
+ partition: labelset[0],
+ user: labelset[1],
+ state: labelset[2]
+ }
+ )
+ end
+ end
+end