]> gitweb.fluxo.info Git - puppet-virtual.git/commitdiff
oops, these files didn't get moved in a previous commit
authorMicah Anderson <micah@riseup.net>
Sat, 21 Feb 2009 17:45:29 +0000 (12:45 -0500)
committerMicah Anderson <micah@riseup.net>
Sat, 21 Feb 2009 17:45:29 +0000 (12:45 -0500)
files/munin/vserver_cpu_ [new file with mode: 0755]
files/munin/vserver_loadavg [new file with mode: 0644]
files/munin/vserver_resources [new file with mode: 0755]

diff --git a/files/munin/vserver_cpu_ b/files/munin/vserver_cpu_
new file mode 100755 (executable)
index 0000000..981f262
--- /dev/null
@@ -0,0 +1,190 @@
+#!/bin/sh
+#
+# Copyright (C) 2006-2008 Holger Levsen and Micah Anderson
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2 dated June,
+# 1991.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+# Graph Vserver cpu usage stats
+#
+# Configuration variables
+#   vservers - specify the vservers to include in the graph (default: all)
+#
+# NOTE: If no configuration variable is set, the default will be used
+#
+# see vserver_resources for example uses of configuration files
+#
+# or links to define what to monitor:
+# vserver_cpu_         -> monitor cpu usage of all vservers on all cpus
+# vserver_hold_                -> monitor hold on all vservers on all cpus
+# vserver_hold_0       -> monitor hold on all vservers on cpu0
+# vserver_hold_1       -> monitor hold on all vservers on cpu1
+# vserver_hold_foo     -> monitor hold on all cpus on vserver named foo
+# vserver_sys_foo      -> monitor cpu usage on all cpus on vserver named foo
+
+# Changelog    
+# version 0.2 - 2006 October 02 Holger Levsen <debian@layer-acht.org>
+# - label fixed: we measure jiffies not seconds
+# - Fix error that results if NodeName is set to include a domain name 
+# - Fix hypens in NodeNames, replace them with underscores
+# - whitespace cleanup 
+# version 0.3 - 2006 October 07 Holger Levsen <debian@layer-acht.org>
+# - rewrite of vserver_usercpu
+# - smp-aware
+# - can display hold too (third value in the cpu line(s) of /proc/virtual/<xid>/sched)
+# - no seperation between user and system cpu anymore
+#  - handle identical vserver-names by using the vserver-id internally
+# version 0.4 - 2007, October 07
+# Micah Anderson <micah@riseup.net>
+#  - fixed variable name (thanks pietro)
+# version 0.5 - 2008, July 07
+# Micah Anderson <micah@riseup.net>
+#  - fixed number of CPU regexp to be more accurate
+#  - added $NAMELOC - fixes plugin so it works with VCI_SPACES (> 2.6.19) as well as older version
+
+# TODO:
+# - comment the code or go mad
+# - add info how many jiffies per second are available on a machine
+# - user and system cpu are always added to each other, make it optional to split them?
+# - use /proc less often (100 times more overhead than talking to the kernel directly)
+#      i.e. use something like pagesize=`perl -MPOSIX -e 'print POSIX::sysconf(_SC_PAGESIZE), "\n";'`
+
+
+VSERVERS="$vservers"
+
+INFO=(`sed 's/.*:\t//' /proc/virtual/info 2>/dev/null || echo '<none>'`)
+KCIN="$[ 16#${INFO[2]} ]";
+
+# If this is 1, then VCI_SPACES is present in the kernel (new in 2.6.19)
+if [ $[ (KCIN >> 10) & 1 ] -eq 1 ]
+then 
+    NAMELOC="nsproxy"
+else 
+    NAMELOC="cvirt"
+fi
+
+if [ -z "$VSERVERS" ] ; then
+    XIDS=`find /proc/virtual/* -type d -exec basename {} \;`
+else
+    # it's really more performant to specify vservers by ids or by linking but not in the configuration-file by name
+    XIDS=""
+    for i in $VSERVERS ; do
+       if [ -d /proc/virtual/$i ] ; then
+           XIDS="${XIDS}${i} "
+       else
+           for j in `find /proc/virtual/* -type d -exec basename {} \;` ; do
+               if [ "$i" = "`cat /proc/virtual/$j/$NAMELOC |grep NodeName |cut -f2`" ] ; then
+                   XIDS="${XIDS}${j} "
+               fi
+           done
+       fi
+    done
+fi
+
+BASEPARAM=`basename $0 | sed 's/^vserver_//'`
+MODE=`echo $BASEPARAM | sed 's/^hold.*//'`
+
+#debug=true
+
+if [ -z "$MODE" ] ; then
+       MODE=hold
+       TARGET=`echo $BASEPARAM | sed 's/^hold_//'`
+else 
+       MODE=cpu
+       TARGET=`echo $BASEPARAM | sed 's/^cpu_//'`
+fi
+
+CPU1=0
+if [ -n "$TARGET" ] ; then
+       if [ "${#TARGET}" == 1 ] ; then 
+               if [ $debug ] ; then echo $MODE, only on cpu $TARGET, for all vservers ; fi
+               WHAT=ALLVSERVER
+               CPU1=$TARGET
+       else 
+               if [ $debug ] ; then echo $MODE on all cpus together, only for vserver $TARGET ; fi
+               WHAT=VSERVER
+       fi
+else
+       if [ $debug ] ; then echo $MODE for all cpus, for all vservers ; fi
+       WHAT=ALLVSERVER
+fi
+
+CPUS=$[ `grep ^processor /proc/cpuinfo|wc -l` -1 ]
+CPUS=`seq $CPU1 $CPUS`
+
+if [ $debug ] ; then
+       echo cpus= $CPUS
+       echo baseparam= $BASEPARAM
+       echo mode= $MODE 
+       echo target= $TARGET
+       echo what= $WHAT
+fi
+
+if [ "$1" = "config" ]; then
+       echo 'graph_category vserver'
+       echo 'graph_args --base 1000'
+       if [ "$MODE" == "cpu" ] ; then
+               echo 'graph_title Vserver cpu usage'
+               echo 'graph_vlabel jiffies used per cpu per ${graph_period}'
+               echo 'graph_info Shows jiffies used per cpu on each vserver.'
+       else
+               echo 'graph_title Vserver cpu on hold'
+               echo 'graph_vlabel jiffies on hold per cpu per ${graph_period}'
+               echo 'graph_info Shows jiffies on hold used per cpu on each vserver.'
+       fi
+
+       for j in $CPUS ; do 
+               A=0
+               for i in $XIDS ; do 
+                       LABEL=`cat /proc/virtual/$i/$NAMELOC |grep NodeName |cut -f2`
+                       if [ "$WHAT" == "ALLVSERVER" ] || [ "$TARGET" == "$LABEL" ] ; then
+                               NAME=`echo $LABEL | cut -d. -f1 |  tr '-' '_'`
+                               if [ "$MODE" == "cpu" ] ; then
+                                       echo "${NAME}_$j.label cpu usage for cpu $j on $LABEL"
+                                       echo "${NAME}_$j.info cpu usage for cpu $j on $LABEL."
+                               else 
+                                       echo "${NAME}_$j.label on hold for cpu $j on $LABEL"
+                                       echo "${NAME}_$j.info on hold for cpu $j on $LABEL."
+                               fi
+                               echo "${NAME}_$j.type COUNTER"
+                               if [ "$A" == 0 ] ; then 
+                                       echo "${NAME}_$j.draw AREA"
+                                       A=1
+                               else
+                                       echo "${NAME}_$j.draw STACK"
+                               fi
+                       fi
+               done
+       done
+       exit 0
+fi
+
+for j in $CPUS ; do 
+       for i in $XIDS ; do
+               LABEL=`cat /proc/virtual/$i/$NAMELOC |grep NodeName |cut -f2`
+               if [ "$WHAT" == "ALLVSERVER" ] || [ "$TARGET" == "$LABEL" ] ; then
+                       NAME=`echo $LABEL | cut -d. -f1 |  tr '-' '_'`
+                       echo -n "${NAME}_$j.value "
+                       if [ "$MODE" == "cpu" ] ; then
+                               USERCPU=`cat /proc/virtual/$i/sched |grep "cpu $j"| cut -d' ' -f3`
+                               SYSCPU=`cat /proc/virtual/$i/sched |grep "cpu $j"| cut -d' ' -f4`
+                               echo $[$USERCPU + $SYSCPU]
+                       else
+                               cat /proc/virtual/$i/sched |grep "cpu $j"| cut -d' ' -f5
+                       fi
+               fi      
+       done
+done
+
+
diff --git a/files/munin/vserver_loadavg b/files/munin/vserver_loadavg
new file mode 100644 (file)
index 0000000..43ce5e1
--- /dev/null
@@ -0,0 +1,123 @@
+#!/bin/sh
+#
+# Copyright (C) 2007 Andrei Morgan
+# Copyright (C) 2008 Micah Anderson
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2 dated June,
+# 1991.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+# Graph Vserver load average
+# 
+# Configuration variables
+#   vservers - specify the vservers to include in the graph (default: all)
+#
+# NOTE: If no configuration variables are set, the defaults will be used
+
+# Example  /etc/munin/plugin-conf.d/munin-node 
+#
+# The following monitors the load average for vservers 1 and 3:
+#
+# [vserver_loadavg]
+# user root
+# env.vservers vserver1 vserver3
+
+# Changelog
+# version 0.1 - 2007 June 26
+# Andrei Morgan <asm-debian@fifthhorseman.net>
+#  - initial author, based upon vserver_resources by Holger Levsen and
+#    Micah Anderson, and upon the examples in the munin wiki.
+# version 0.2 - 2008 July 7
+# Micah Anderson <micah@riseup.net>
+#  - fix cvirt vs. nsproxy issue with newer kernels by adding $NAMELOC which
+#    is aware of VCI_SPACES (> 2.6.19) as well as the older version
+
+# If run with the "autoconf"-parameter, give our opinion on whether we
+# should be run on this system or not. This is optional, and only used by
+# munin-config. In the case of this plugin, we should most probably
+# always be included whwn there is a vserver kernel.
+
+if [ "$1" = "autoconf" ]; then
+        echo yes
+        exit 0
+fi
+
+
+# if vservers are specified, use them; the default is to use all.
+VSERVERS="$vservers"
+
+INFO=(`sed 's/.*:\t//' /proc/virtual/info 2>/dev/null || echo '<none>'`)
+KCIN="$[ 16#${INFO[2]} ]";
+
+# If this is 1, then VCI_SPACES is present in the kernel (new in 2.6.19)
+if [ $[ (KCIN >> 10) & 1 ] -eq 1 ]
+then 
+    NAMELOC="nsproxy"
+else 
+    NAMELOC="cvirt"
+fi
+
+if [ -z "$VSERVERS" ] ; then
+    XIDS=`find /proc/virtual/* -type d -exec basename {} \;`
+else
+    # it's really more performant to specify vservers by ids or not at all
+    XIDS=""
+    for i in $VSERVERS ; do
+       if [ -d /proc/virtual/$i ] ; then
+           XIDS="${XIDS}${i} "
+       else
+           for j in `find /proc/virtual/* -type d -exec basename {} \;` ; do
+               if [ "$i" = "`cat /proc/virtual/$j/$NAMELOC |grep NodeName |cut -f2`" ] ; then
+                   XIDS="${XIDS}${j} "
+               fi
+           done
+       fi
+    done
+fi
+       
+# If run with the "config"-parameter, give out information on how the
+# graphs should look.  
+if [ "$1" = "config" ]; then
+        # The title of the graph
+       echo 'graph_title loadavg of vserver'
+        # Arguments to "rrdtool graph". In this case, tell it that the
+        # lower limit of the graph is '0', and that 1k=1000 (not 1024)
+       echo 'graph_args --base 1000 -l 0'
+        # We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of
+        # 420 milliload)
+       echo 'graph_scale no'
+        # The Y-axis label
+       echo 'graph_vlabel loadavg'
+       # graph information for the main table
+       echo 'graph_info Shows 5-minute load average per vserver.'
+        # Graph category. Defaults to 'other'
+       echo 'graph_category vserver'
+       for xid in $XIDS ; do
+       # Specify the vservers
+               LABEL=`cat /proc/virtual/$xid/$NAMELOC |grep NodeName |cut -f2`
+               NAME=`echo $LABEL | cut -d. -f1 |  tr '-' '_'`
+               echo "$NAME.label $LABEL: load average"
+               echo "$NAME.info $NAME average load for the past 5 minutes"
+       done 
+        # Last, if run with the "config"-parameter, quit here (don't
+        # display any data)
+        exit 0
+fi
+
+for xid in $XIDS ; do
+       LABEL=`cat /proc/virtual/$xid/$NAMELOC |grep NodeName |cut -f2`
+       NAME=`echo $LABEL | cut -d. -f1 |  tr '-' '_'`
+       echo -n "$NAME.value ";
+       cat /proc/virtual/$xid/cvirt | grep loadavg: | cut -d' ' -f2    
+done
+
diff --git a/files/munin/vserver_resources b/files/munin/vserver_resources
new file mode 100755 (executable)
index 0000000..495614f
--- /dev/null
@@ -0,0 +1,317 @@
+#!/bin/sh
+#
+# Copyright (C) 2006-2008 Holger Levsen and Micah Anderson
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2 dated June,
+# 1991.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+# Graph Vserver resource usage and limits
+#
+# Configuration variables
+#   vservers - specify the vservers to include in the graph (default: all)
+#   resource - specify the resource to be monitored (no default)
+#   limits - if true, turn on limit graphing (default: false)
+#
+# NOTE: If no configuration variables are set, the defaults will be used
+
+# Example /etc/munin/plugin-conf.d/munin-node 
+#
+# The following monitors the RSS value for the vservers named
+# "vserver1 vserver2 vserver3 vserver4" and looks to see if the
+# resource limit has been breached, if so it sends a message to nagios
+# via send_nsca, and sends an email to notify that this has happened:
+#
+# [vserver_resources]
+# user root
+# env.vservers vserver1 vserver2 vserver3 vserver4
+# env.resource RSS
+# env.limits 1
+# contacts nagios email
+# contact.nagios.command /usr/bin/send_nsca -H your.nagios-host.here -c /etc/send_nsca.cfg
+# contact.email.command mail -s "Munin-notification for ${var:group} :: ${var:host}" your@email.address.here
+#
+# This second example monitors the VM value for all vservers on the system and
+# has no limit notifications turned on:
+#
+# [vserver_resources]
+# user root
+# env.vservers vserver5 vserver6 vserver7
+# env.resource VM
+# env.limits 0
+#
+# This last example monitors all the resources for vserver5. Note that
+# this will be a busy graph, and it would be really useless if you
+# specified more than one vserver when the resource is set to ALL:
+#
+# [vserver_resources]
+# user root
+# env.vservers vserver5 
+# env.resource ALL
+# env.limits 0
+
+# Possible values for env.resource are:
+#
+# ALL - all the below resources
+# PROC - number of processes
+# VM - sum of all virtual pages inside the guest
+# VML - sum of all virtual pages locked into memory
+# RSS - number of pages currently present in RAM
+# ANON - number of anonymous memory pages
+# FILES - number of open files
+# OFD
+# LOCKS
+# SOCK
+# MSGQ
+# SHM - number of shared memory pages
+
+# Changelog
+# version 0.1 - 2006 April xx 
+# Holger Levsen <debian@layer-acht.org>
+#  - initial author
+# version 0.2 - 2006 April 24 
+# Micah Anderson <micah@riseup.net>
+#  - Add dynamic arch page size determination
+#  - Some cleanup and clarification
+# version 0.3 - 2006 May 3 
+# Micah Anderson <micah@riseup.net>
+#  - Add ability to group vservers via environment vars
+#  - Fix missing close quotes and standardize indents
+#  - Add limit notification
+#  - Update documentation to include info on groups and limits
+# version 0.4 - 2006 Jun 22
+# Micah Anderson <micah@riseup.net>
+#  - Fix error that results if NodeName is set to include a domain name 
+# version 0.5 - 2006 Oct
+# Micah Anderson <micah@riseup.net>
+#  - fixed changelog entries so more changes can happen per version
+#  - standardized changelog date and name format
+#  - added myself to copyright
+#  - standardized indentation
+#  - abstracted from just RSS to be usable for any resource specified
+# Holger Levsen <debian@layer-acht.org>
+#  - Fix hypens in NodeNames, replace them with underscores
+#  - Fix the fix from version 0.4
+#  - allow specifying the ressource by linking
+#     (ln -s vserver_resources vserver_VM)
+#  - provided info about all resources
+#  - code cleaned
+#  - errors if an invalid resource is specified
+#  - handle identical vserver-names by using the vserver-id internally
+# version 0.6 - 2007 Oct
+# Micah Anderson <micah@riseup.net>
+#  - removed BASENAME - plugin isn't a wildcard plugin any longer 
+#  - added $NAMELOC - fixes plugin so it works with VCI_SPACES (> 2.6.19) as well as older version
+#
+# TODO:
+# - make it so you can specify more than one resource to be graphed?
+#   or define combined ressource-display: VM+RSS+ANON+SHM and FILES+OFD+LOCK+SOCK 
+#   (for one vserver only)
+# - and/or make it so you can graph all resources for one vserver
+# - set a default for the resource if it is unset?
+# - use /proc less often (100 times more overhead than talking to the kernel directly)
+#   i.e. use something like pagesize=`perl -MPOSIX -e 'print POSIX::sysconf(_SC_PAGESIZE), "\n";'`
+# - ALL resource is broken
+
+VSERVERS="$vservers"
+LIMITS="$limits"
+RESOURCE="$resource"
+
+INFO=(`sed 's/.*:\t//' /proc/virtual/info 2>/dev/null || echo '<none>'`)
+KCIN="$[ 16#${INFO[2]} ]";
+
+# If this is 1, then VCI_SPACES is present in the kernel (new in 2.6.19)
+if [ $[ (KCIN >> 10) & 1 ] -eq 1 ]
+then 
+    NAMELOC="nsproxy"
+else 
+    NAMELOC="cvirt"
+fi
+
+if [ -z "$VSERVERS" ] ; then
+    XIDS=`find /proc/virtual/* -type d -exec basename {} \;`
+else
+    # it's really more performant to specify vservers by ids or not at all
+    XIDS=""
+    for i in $VSERVERS ; do
+       if [ -d /proc/virtual/$i ] ; then
+           XIDS="${XIDS}${i} "
+       else
+           for j in `find /proc/virtual/* -type d -exec basename {} \;` ; do
+               if [ "$i" = "`cat /proc/virtual/$j/$NAMELOC |grep NodeName |cut -f2`" ] ; then
+                   XIDS="${XIDS}${j} "
+               fi
+           done
+       fi
+    done
+fi
+
+if [ "$1" = "config" ]; then
+    case "$RESOURCE" in
+       PROC)
+           echo 'graph_title Processes used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel Processes'
+           echo 'graph_info Shows the number of processes used by each vserver.'
+           ;;
+       VM)
+           echo 'graph_title Virtual memory used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel VM pages'
+           echo 'graph_info Shows virtual memory (human readable) used by each vserver.'
+           ;;
+       VML)
+           echo 'graph_title Locked memory used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel VML pages'
+           echo 'graph_info Shows locked memory (human readable) used by each vserver.'
+           ;;
+       RSS)
+           echo 'graph_title Resident set size used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel RSS pages'
+           echo 'graph_info Shows resident set size (human readable) used by each vserver.'
+           ;;
+       ANON)
+           echo 'graph_title Anonymous memory used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel ANON pages'
+           echo 'graph_info Shows anonymous memory (human readable) used by each vserver.'
+           ;;
+       FILES)
+           echo 'graph_title Files used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel Files'
+           echo 'graph_info Shows files used by each vserver.'
+           ;;
+       OFD)
+           echo 'graph_title Open filedescriptors used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel Open filedescriptors'
+           echo 'graph_info Shows open filedescriptors used by each vserver.'
+           ;;
+       LOCKS)
+           echo 'graph_title Locks used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel Locks'
+           echo 'graph_info Shows locks used by each vserver.'
+           ;;
+       SOCK)
+           echo 'graph_title Sockets used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel Sockets'
+           echo 'graph_info Shows sockets used by each vserver.'
+           ;;
+       MSGQ)
+           echo 'graph_title Message queues used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel Message queues'
+           echo 'graph_info Shows message queues used by each vserver.'
+           ;;
+       SHM)
+           echo 'graph_title Shared memory used by vserver'
+           echo 'graph_args --base 1024k -l 0'
+           echo 'graph_vlabel SHM pages'
+           echo 'graph_info Shows shared memory (human readable) used by each vserver.'
+           ;;
+       *)
+           echo "$RESOURCE not defined."
+           exit 1
+           ;;
+    esac
+    echo 'graph_category vserver'
+
+    
+    # do not assume we are on i386 where pagesize is 4096...
+    pagesize=`perl -MPOSIX -e 'print POSIX::sysconf(_SC_PAGESIZE), "\n";'`
+    
+    for xid in $XIDS ; do
+           
+       LABEL=`cat /proc/virtual/$xid/$NAMELOC |grep NodeName |cut -f2`
+       NAME=`echo $LABEL | cut -d. -f1 |  tr '-' '_'`
+
+       case "$RESOURCE" in
+           PROC)
+               echo "$NAME.label $LABEL: processes"
+               echo "$NAME.info Number of processes used by $LABEL."
+               ;;
+           VM)
+               echo "$NAME.label $LABEL: Virtual memory"
+               echo "$NAME.info Size of virtual memory used by $LABEL. (Number multipled by $pagesize to make it human readable)"
+               echo "$NAME.cdef $NAME,$pagesize,*"
+               ;;
+           VML)
+               echo "$NAME.label $LABEL: Locked memory"
+               echo "$NAME.info Size of locked memory used by $LABEL. (Number multipled by $pagesize to make it human readable)"
+               echo "$NAME.cdef $NAME,$pagesize,*"
+               ;;
+           RSS)
+               echo "$NAME.label $LABEL: Resident set size"
+               echo "$NAME.info Size of resident set size used by $LABEL. (Number multiplied by $pagesize to make it human readable)"
+               echo "$NAME.cdef $NAME,$pagesize,*"
+               ;;
+           ANON)
+               echo "$NAME.label $LABEL: Anonymous memory"
+               echo "$NAME.info Size of anonymous memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)"
+               echo "$NAME.cdef $NAME,$pagesize,*"
+               ;;
+           FILES)
+               echo "$NAME.label $LABEL: Files"
+               echo "$NAME.info Number of files used by $LABEL."
+               ;;
+           OFD)
+               echo "$NAME.label $LABEL: Open filedescriptors"
+               echo "$NAME.info Number of open filedescriptors used by $LABEL."
+               ;;
+           LOCKS)
+               echo "$NAME.label $LABEL: Locks"
+               echo "$NAME.info Number of locks used by $LABEL."
+               ;;
+           SOCK)
+               echo "$NAME.label $LABEL: Sockets"
+               echo "$NAME.info Number of sockets used by $LABEL."
+               ;;
+           MSGQ)
+               echo "$NAME.label $LABEL: Message queues"
+               echo "$NAME.info Number of message queues used by $LABEL."
+               ;;
+           SHM)
+               echo "$NAME.label $LABEL: Shared memory"
+               echo "$NAME.info Size of shared memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)"
+               echo "$NAME.cdef $1,$pagesize,*"
+               ;;
+           *)
+               echo "$RESOURCE not defined."
+               exit 1
+               ;;
+       esac
+           
+       if [ ! -z "$LIMITS" -a "$LIMITS" = 1 ]; then
+           LIMIT=`cat /proc/virtual/$xid/limit | grep $RESOURCE | cut -f4`
+           if [ ${LIMIT:-0} -gt 0 ]; then
+               echo "$NAME.critical $LIMIT"
+           fi
+       fi
+    done
+    exit 0
+fi
+
+
+for xid in $XIDS ; do
+    LABEL=`cat /proc/virtual/$xid/$NAMELOC |grep NodeName |cut -f2`
+    NAME=`echo $LABEL | cut -d. -f1 |  tr '-' '_'`
+    cat /proc/virtual/$xid/limit | awk -v name="${NAME}" -v resource="${RESOURCE}:" \
+       '{ if ( $1 == resource )
+            printf "%s.value %d\n", name, $2 }'
+done
+