aboutsummaryrefslogtreecommitdiff
path: root/lib/longboat
diff options
context:
space:
mode:
Diffstat (limited to 'lib/longboat')
-rw-r--r--lib/longboat/config.rb16
-rw-r--r--lib/longboat/jobs.rb16
-rw-r--r--lib/longboat/server.rb12
3 files changed, 38 insertions, 6 deletions
diff --git a/lib/longboat/config.rb b/lib/longboat/config.rb
new file mode 100644
index 0000000..874a5be
--- /dev/null
+++ b/lib/longboat/config.rb
@@ -0,0 +1,16 @@
+require 'optimist'
+
+module Longboat
+ module Config
+ def self.parse!
+ Optimist::options do
+ # Collection interval
+ opt :collect_every, "Collection interval", type: Integer, default: 60
+
+ # Sinatra server
+ opt :server_bind, "Server listening address", type: String, default: "127.0.0.1:8564"
+ opt :server_path, "Path to metrics", type: String, default: "/metrics"
+ end
+ end
+ end
+end
diff --git a/lib/longboat/jobs.rb b/lib/longboat/jobs.rb
index c6bbb17..86d3c64 100644
--- a/lib/longboat/jobs.rb
+++ b/lib/longboat/jobs.rb
@@ -1,10 +1,12 @@
module Longboat
class Jobs
- def initialize
+ def initialize(collector, config)
+ @collector = collector
@jobs = []
+ @config = config
end
- def load(collector)
+ def load!
Dir.entries("./lib/jobs/").each do |file|
next if file =~ /^\./
@@ -12,7 +14,7 @@ module Longboat
cname = reqname.split('_').map(&:capitalize).join
require "jobs/#{reqname}"
- @jobs << Kernel.const_get(cname).new(collector)
+ @jobs << Kernel.const_get(cname).new(@collector, job_config)
end
end
@@ -20,7 +22,7 @@ module Longboat
@jobs.each(&:run)
end
- def collect_every(time = 60, async = true)
+ def collect_every(time = @config[:collect_every], async = true)
if async
Thread.new do
loop do
@@ -35,5 +37,11 @@ module Longboat
end
end
end
+
+ private
+
+ def job_config
+ @config.slice(:collect_every)
+ end
end
end
diff --git a/lib/longboat/server.rb b/lib/longboat/server.rb
index 474a7ed..eb4c56c 100644
--- a/lib/longboat/server.rb
+++ b/lib/longboat/server.rb
@@ -2,9 +2,17 @@ require 'sinatra/base'
module Longboat
module Server
- def self.serve!(collector)
+ def self.serve!(collector, config)
+ addr, port = config[:server_bind].split(":")
+ addr = "127.0.0.1" if addr.nil? or addr == ""
+ port = 8564 if port.nil? or port == "8564"
+
Sinatra.new {
- get '/metrics' do
+ set :bind, addr
+ set :port, port.to_i
+ set :environment, :production
+
+ get config[:server_path] do
collector.prometheus_metrics
end
}.run!