#!/usr/bin/env ruby require "English" require "rexml/document" def passenger_status @passenger_status ||= REXML::Document.new(`/usr/sbin/passenger-status --show=xml`) end def output_config puts <<~CONFIG graph_category passenger graph_title Passenger queues graph_vlabel count global.label global global.draw AREA CONFIG groups = passenger_status.get_elements("//supergroup").map do |supergroup| supergroup.text("name") end groups.sort.each do |name| puts "#{name}.label #{name}" puts "#{name}.draw STACK" end end def output_values global = passenger_status.text("/item/get_wait_list").to_i puts "global.value #{global}" passenger_status.get_elements("//supergroup").each do |supergroup| name = supergroup.text("name") queue = supergroup.text("get_wait_list").to_i puts "#{name}.value #{queue}" end end if ARGV[0] == "config" output_config else output_values end