summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2010-04-27 09:07:51 -0400
committerMicah Anderson <micah@riseup.net>2010-04-27 09:07:51 -0400
commit97ea40f9c22ae4a363ef8e7394b8d2b4c6846103 (patch)
tree00599bf53d5e30db97a70f4c95e082b2ee7a449d
parent65a851a783b172542aacb4711fffc68a72f28589 (diff)
update passenger-memory-stats to a better version of the plugin
-rwxr-xr-xfiles/munin/passenger_mem31
-rwxr-xr-xfiles/munin/passenger_memory_stats123
-rw-r--r--manifests/init.pp6
3 files changed, 126 insertions, 34 deletions
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
+# <tt>debug</tt> 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";