aboutsummaryrefslogtreecommitdiff
path: root/lib/longboat/jobs.rb
diff options
context:
space:
mode:
authorNat Lasseter <nat.lasseter@york.ac.uk>2020-02-28 18:11:48 +0000
committerNat Lasseter <nat.lasseter@york.ac.uk>2020-02-28 18:11:48 +0000
commit6c192e01dad7e9947c466eff521fe22ac775fcd6 (patch)
tree5ab4c8a7fd92c57d8b02e1009acae173f64f7b36 /lib/longboat/jobs.rb
Initial commit
Diffstat (limited to 'lib/longboat/jobs.rb')
-rw-r--r--lib/longboat/jobs.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/longboat/jobs.rb b/lib/longboat/jobs.rb
new file mode 100644
index 0000000..eadae03
--- /dev/null
+++ b/lib/longboat/jobs.rb
@@ -0,0 +1,28 @@
+module Longboat
+ module Jobs
+ class << self
+ def collect!
+ start_time = (Time.now - 15 * 60).strftime("%H:%M:%S")
+ raw = `sacct -a -P -o State -S #{start_time}`.lines.map(&:strip)[1..-1]
+
+ tally = Hash.new{0}
+
+ raw.each do |state|
+ tally[state] += 1
+ end
+
+ tally.each do |state, number|
+ Longboat::Metrics.report!(
+ "longboat_slurm_job_state",
+ number,
+ help: "Number of jobs in each state",
+ type: "gauge",
+ labels: {state: state}
+ )
+ end
+ end
+ end
+
+ Longboat::Metrics.register!(self)
+ end
+end