Skip to content

Instantly share code, notes, and snippets.

@deepak
Created July 28, 2010 06:32
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save deepak/493581 to your computer and use it in GitHub Desktop.
Save deepak/493581 to your computer and use it in GitHub Desktop.
collectd plugin to monitor passenger
#!/bin/bash
# collectd plugin to monitor passenger
# has better memory-requirement than a ruby script
# TODO: try writing it in c - if it makes a difference
HOSTNAME="production-host-01"
INTERVAL="${COLLECTD_INTERVAL:-10}"
PLUGIN_NAME="passenger_status"
while sleep "$INTERVAL"
do
/opt/ruby-enterprise-1.8.7-2010.02/bin/passenger-status > /tmp/collectd_passenger_stat
/opt/ruby-enterprise-1.8.7-2010.02/bin/passenger-memory-stats > /tmp/collectd_passenger_mem
max=$(cat /tmp/collectd_passenger_stat | fgrep max | awk '{print $3}')
count=$(cat /tmp/collectd_passenger_stat | fgrep count | awk '{print $3}')
active=$(cat /tmp/collectd_passenger_stat | fgrep -w active | awk '{print $3}')
inactive=$(cat /tmp/collectd_passenger_stat | fgrep -w inactive | awk '{print $3}')
waiting=$(cat /tmp/collectd_passenger_stat |fgrep Waiting | awk '{print $3}')
sessions=$(awk '/Sessions/ {sum+=$4} END {print sum}' /tmp/collectd_passenger_stat)
dirty_rss=$(tail -1 /tmp/collectd_passenger_mem | awk '{print $6}')
echo "PUTVAL $HOSTNAME/$PLUGIN_NAME/gauge-max_value interval=$INTERVAL N:$max"
echo "PUTVAL $HOSTNAME/$PLUGIN_NAME/gauge-running_value interval=$INTERVAL N:$count"
echo "PUTVAL $HOSTNAME/$PLUGIN_NAME/gauge-active_value interval=$INTERVAL N:$active"
echo "PUTVAL $HOSTNAME/$PLUGIN_NAME/gauge-inactive_value interval=$INTERVAL N:$inactive"
echo "PUTVAL $HOSTNAME/$PLUGIN_NAME/gauge-waiting interval=$INTERVAL N:$waiting"
echo "PUTVAL $HOSTNAME/$PLUGIN_NAME/gauge-sessions interval=$INTERVAL N:$sessions"
echo "PUTVAL $HOSTNAME/$PLUGIN_NAME/gauge-dirty_rss_mem interval=$INTERVAL N:$dirty_rss"
done
@deepak
Copy link
Author

deepak commented Aug 19, 2010

config in /etc/collectd/collectd.conf:

Exec "www-data" "/usr/lib/collectd/mon_passenger.sh"

using www-data as apache-passenger process runs as www-data, passenger config:
PassengerDefaultUser www-data
PassengerUserSwitching on

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment