diff options
author | Nat Lasseter <nat.lasseter@york.ac.uk> | 2020-03-02 14:58:28 +0000 |
---|---|---|
committer | Nat Lasseter <nat.lasseter@york.ac.uk> | 2020-03-02 14:58:28 +0000 |
commit | 8d34ddd0a30acf59d423bac773ac2d63aafc7044 (patch) | |
tree | b9e814523ff194d0b4304ad07eb461bb5548aa98 | |
parent | 7b83ef5b7078bdb46f45074b5a2f96a1483e8202 (diff) |
Added readme, tidied some things
-rw-r--r-- | Readme.textile | 23 | ||||
-rw-r--r-- | lib/longboat/collector.rb | 2 | ||||
-rw-r--r-- | lib/longboat/jobs.rb | 4 | ||||
-rwxr-xr-x | longboat | 2 |
4 files changed, 26 insertions, 5 deletions
diff --git a/Readme.textile b/Readme.textile new file mode 100644 index 0000000..aa4750d --- /dev/null +++ b/Readme.textile @@ -0,0 +1,23 @@ +h1. Longboat + +Longboat is a metric collection system. Intended for Viking, but theoretically generic. + +h2. Jobs + +Longboat will pick up all jobs in the lib/jobs directory. Each job consists of: + +* a file with a snake_case name, such as @my_job.rb@ +* containing a single class with a CamelCase name matching the file name, such as @MyJob@ +* with two methods: +** @initialize@, which takes a single argument of the collector to @report!@ the metrics to +** @run@, no arguments, which triggers a job run and metric report + +@Longboat::Collector#report!@ takes as arguments: + +# The name of the metric +# The value of the metric +# Optionally, as a final hash: +#* @help@: The help string for the metric +#* @type@: The Prometheus type of the metric +#* @labels@: A hash containing the metric labels +#* @timestamp@: The timestamp when the metric was collected, defaults to the time @report!@ was called. diff --git a/lib/longboat/collector.rb b/lib/longboat/collector.rb index adb20c3..c812b05 100644 --- a/lib/longboat/collector.rb +++ b/lib/longboat/collector.rb @@ -9,7 +9,7 @@ module Longboat @metrics[name][labels] = {value: value, timestamp: timestamp} end - def metrics + def prometheus_metrics res = "" @metrics.each do |name, metric| res << "#HELP #{name} #{metric[:help]}\n" unless metric[:help].nil? diff --git a/lib/longboat/jobs.rb b/lib/longboat/jobs.rb index 155b305..c6bbb17 100644 --- a/lib/longboat/jobs.rb +++ b/lib/longboat/jobs.rb @@ -17,9 +17,7 @@ module Longboat end def collect! - @jobs.each do |job| - job.run - end + @jobs.each(&:run) end def collect_every(time = 60, async = true) @@ -11,7 +11,7 @@ jobs.load(collector) t = jobs.collect_every sleep 5 -puts collector.metrics +puts collector.prometheus_metrics t.exit #Longboat::Server.serve! |