From 97ea40f9c22ae4a363ef8e7394b8d2b4c6846103 Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Tue, 27 Apr 2010 09:07:51 -0400 Subject: update passenger-memory-stats to a better version of the plugin --- files/munin/passenger_mem | 31 ---------- files/munin/passenger_memory_stats | 123 +++++++++++++++++++++++++++++++++++++ manifests/init.pp | 6 +- 3 files changed, 126 insertions(+), 34 deletions(-) delete mode 100755 files/munin/passenger_mem create mode 100755 files/munin/passenger_memory_stats diff --git a/files/munin/passenger_mem b/files/munin/passenger_mem deleted file mode 100755 index 47fba09..0000000 --- a/files/munin/passenger_mem +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env ruby -# by Dan Manges, http://www.dcmanges.com/blog/rails-application-visualization-with-munin - -def output_config - puts <<-END -graph_category App -graph_title Passenger memory stats -graph_vlabel count - -memory.label memory -END - exit 0 -end - -def output_values - status = `/usr/sbin/passenger-memory-stats | tail -1` - unless $?.success? - $stderr.puts "failed executing passenger-memory-stats" - exit 1 - end - status =~ /(\d+\.\d+)/ - puts "memory.value #{$1}" -end - -if ARGV[0] == "config" - output_config -else - output_values -end - - diff --git a/files/munin/passenger_memory_stats b/files/munin/passenger_memory_stats new file mode 100755 index 0000000..d71b2a5 --- /dev/null +++ b/files/munin/passenger_memory_stats @@ -0,0 +1,123 @@ +#!/usr/bin/env ruby +pod=<<-POD + +=head1 NAME +passenger_memory_stats - Munin plugin to monitor the memory usage of passenger application servers. +Monitors the memory consumed by passenger instances. + +=head1 APPLICABLE SYSTEMS +All systems that have passenger installed. + +=head1 CONFIGURATION +The plugin needs to execute passenger-memory-stats. +This configuration section shows the defaults of the plugin: + + [passenger_*] + user root + command /usr/local/bin/ruby %c + +Options + env.passenger_memory_stats '/path/to/passenger-memory-stats' # Path to passenger memory status. + env.graph_category 'App' # Graph Category. Defaults to App. + +ln -s /usr/share/munin/plugins/passenger_memory_stats /etc/munin/plugins/passenger_memory_stats + +=head1 INTERPRETATION +The plugin shows the memory consumed by passenger instances. + +=head1 MAGIC MARKERS + #%# family=auto + #%# capabilities=autoconf + +=head1 VERSION +1.5 + +=head1 BUGS +None known + +=head1 AUTHOR +Ilya Lityuga +Bart ten Brinke - railsdoctors.com + +=head1 LICENSE +MIT + +POD + +# Globals +GRAPH_CATEGORY = ENV['graph_category'] || 'App' +PASSENGER_MEMORY_STATS = ENV['passenger_memory_stats'] || '/usr/local/bin/passenger-memory-stats' + +# Check if this plugin can run +def autoconf + begin + require 'rubygems' + gem "passenger", ">=2.0" + rescue Exception => e + puts "no (Gem not found: #{e})" + exit 1 + end + + status = `#{PASSENGER_MEMORY_STATS}` + unless $?.success? + puts "no (error when executing #{PASSENGER_MEMORY_STATS})" + exit 1 + end + + puts "yes" + exit 0 +end + +# Describe the graph config +def config + status = `#{PASSENGER_MEMORY_STATS}` + memory_info = open('/proc/meminfo', 'r') do |lines| + lines.inject({}) do |h, line| + matched = line.match(/^([\w_\(\)]+):\s+(\d+)/) + h[matched[1].to_sym] = matched[2].to_i * 1024 + h + end + end + upper_limit = memory_info[:MemTotal] + puts <<-CONFIG +graph_category #{GRAPH_CATEGORY} +graph_title Passenger memory stats +graph_vlabel Bytes +graph_args --base 1000 -l 0 --upper-limit #{upper_limit} +graph_info The memory used by passenger instances on this application server + +memory.label memory +CONFIG + exit 0 +end + + +# Collect the data +# debug Show debug information +def run(debug = false) + stats = `#{PASSENGER_MEMORY_STATS}` + + unless $?.success? + $stderr.puts "failed executing passenger-memory-stats" + exit 1 + end + + puts stats if debug + + #### Total private dirty RSS: 81.81 MB + stats =~ /RSS:\s*([\d\.]+)\s*MB\Z/m + memory = ($1.to_f * 1024 * 1024).to_i + puts "memory.value #{memory}" +end + + +# Main +if ARGV[0] == "config" + config +elsif ARGV[0] == "autoconf" + autoconf +elsif ARGV[0] == "debug" + run(true) +else + run +end diff --git a/manifests/init.pp b/manifests/init.pp index 7d8d249..43951a2 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -32,9 +32,9 @@ class passenger { } munin::plugin::deploy { - 'passenger_mem': - source => "passenger/munin/passenger_mem", - config => "user root"; + 'passenger_memory_stats': + source => "passenger/munin/passenger_memory_stats", + config => "user root\nenv.passenger_memory_stats /usr/sbin/passenger-memory-stats"; 'passenger_stats': source => "passenger/munin/passenger_stats", config => "user root"; -- cgit v1.2.3