Sha256: a739cd69cfe96c551694043870d0631ce8388364c33681f05dfaf8c0cda6887c

Contents?: true

Size: 1.38 KB

Versions: 3

Compression:

Stored size: 1.38 KB

Contents

#!/usr/bin/env ruby

require 'optparse'

require_relative "./../lib/prometheus_exporter"
require_relative "./../lib/prometheus_exporter/server"

def run
  port = PrometheusExporter::DEFAULT_PORT
  prefix = "ruby_"
  collector = nil
  verbose = false

  OptionParser.new do |opt|
    opt.on('-p',
           '--port INTEGER',
           Integer,
           "Port exporter should listen on (default: #{port})") do |o|
      port = o.to_i
    end
    opt.on('--prefix METRIC_PREFIX', String, "Prefix to apply to all metrics (default: #{prefix})") do |o|
      prefix = o.to_s
    end
    opt.on('-c', '--collector CUSTOM_COLLECTOR', String, "(optional) Custom collector to run") do |o|
      collector = o.to_s
    end
    opt.on('-v', '--verbose') do |o|
      verbose = true
    end

  end.parse!

  PrometheusExporter::Metric::Base.default_prefix = prefix

  if collector
    eval File.read(collector)

    ObjectSpace.each_object(Class) do |klass|
      if klass < PrometheusExporter::Server::CollectorBase
        collector = klass
      end
    end

    if !collector
      STDERR.puts "Can not find a class inheriting off PrometheusExporter::Server::Collector"
      usage
      exit 1
    end
  end

  puts "#{Time.now} Starting prometheus exporter on port #{port}"
  server = PrometheusExporter::Server::WebServer.new port: port, collector: collector&.new, verbose: verbose
  server.start
  sleep

end

run

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
prometheus_exporter-0.1.9 bin/prometheus_exporter
prometheus_exporter-0.1.8 bin/prometheus_exporter
prometheus_exporter-0.1.7 bin/prometheus_exporter