Repository
Munin (contrib)
Last change
2020-08-25
Graph Categories
Keywords
Language
Ruby

passenger_status

Sadly there is no documentation for this plugin.

#!/usr/bin/env ruby

def output_config
  puts <<~END
    graph_category webserver
    graph_title status
    graph_vlabel count
    graph_info This graph shows how much passenger process are working, available and how much queries are waiting.
    max.label max processes
    max.draw AREA
    max.info Maximum processes allowed to run simultaneously.
    sessions.label queued requests
    sessions.draw LINE2
    sessions.info Requests queued, waiting to be processed.
    running.label running processes
    running.draw LINE1
    running.info The number of application instances that are currently alive.
    active.label active processes
    active.draw LINE1
    active.info The number of application instances that are currently processing requests.
    waiting.label waiting requests
    waiting.draw LINE2
    waiting.info Requests waiting to be queued.
  END
  exit 0
end

def output_values
  status = `sudo passenger-status`
  unless $?.success?
    warn 'failed executing passenger-status'
    exit 1
  end
  status =~ /max\s+=\s+(\d+)/
  puts "max.value #{Regexp.last_match(1)}"

  status =~ /count\s+=\s+(\d+)/
  puts "running.value #{Regexp.last_match(1)}"

  status =~ /active\s+=\s+(\d+)/
  puts "active.value #{Regexp.last_match(1)}"

  status =~ /Waiting on global queue:\s+(\d+)/
  puts "waiting.value #{Regexp.last_match(1)}"

  total_sessions = 0
  status.scan(/Sessions: (\d+)/).flatten.each { |count| total_sessions += count.to_i }
  puts "sessions.value #{total_sessions}"
end

if ARGV[0] == 'config'
  output_config
else
  output_values
end