From 186bf1f894242c91e1877d3bfe11ae0623200450 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Thu, 18 Jan 2024 20:49:27 +0100 Subject: add contrib/nitro_exporter.rb --- contrib/nitro_exporter.rb | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 contrib/nitro_exporter.rb diff --git a/contrib/nitro_exporter.rb b/contrib/nitro_exporter.rb new file mode 100644 index 0000000..eae3ba8 --- /dev/null +++ b/contrib/nitro_exporter.rb @@ -0,0 +1,35 @@ +#!/usr/bin/ruby +# nitro_exporter - Prometheus exporter for nitro state + +require 'rack' +require 'rack/handler/thin' + +class NitroExporter + HOSTNAME = `hostname -f`.strip + + def call(env) + r = Rack::Response.new + r.content_type = 'text/plain' + + state = `nitroctl` + if $?.exitstatus != 0 + r.write %Q|nitro_up{hostname=#{HOSTNAME.dump}} 0\n| + else + r.write %Q|nitro_up{hostname=#{HOSTNAME.dump}} 1\n| + state.each_line { |line| + case line + when /^([A-Z]+) (.*?) (\(pid \d+\) )?\(wstatus (\d+)\) (\d+)s$/ + r.write %Q|nitro_state{hostname=#{HOSTNAME.dump},service=#{$2.dump},state=#{$1.dump}} #{$5}\n| + r.write %Q|nitro_wstatus{hostname=#{HOSTNAME.dump},service=#{$2.dump}} #{$4}\n| if $4 + end + } + + end + + r.finish + end +end + +if __FILE__ == $0 + Rack::Handler::Thin.run(NitroExporter.new, :Port => 9007, :Host => '::') +end -- cgit 1.4.1