diff --git a/plugins/lxc/lxc_ram b/plugins/lxc/lxc_ram index 4208f875..6bb765e6 100755 --- a/plugins/lxc/lxc_ram +++ b/plugins/lxc/lxc_ram @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # -*- sh -*- : << =cut @@ -40,94 +40,83 @@ Unknown license =cut -. $MUNIN_LIBDIR/plugins/plugin.sh -guest_names=`lxc-ls | sort -u` +# configurable: true/false +areastack=${areastack:-false} + + +# shellcheck disable=SC1090 +. "$MUNIN_LIBDIR/plugins/plugin.sh" + + +guest_names=$(lxc-ls | sort -u) for guest in $guest_names; do - if lxc-info -n $guest 2>&1 | grep -qs RUNNING ; then - active="$active $guest" - fi + if lxc-info -n "$guest" 2>&1 | grep -qs RUNNING ; then + active="$active $guest" + fi done guest_names="$active" - + f_comm='lxc-cgroup ' + +do_autoconf() { + if [ -r /proc/stat ]; then + echo yes + else + echo "no (no /proc/stat)" + fi +} + + +do_config() { + echo 'graph_title Memory ' + echo 'graph_args -l 0 --base 1024' + echo 'graph_vlabel byte' + echo 'graph_category memory' + + for guest_name in $guest_names; do + guest="$(clean_fieldname "$guest_name")" + echo "mem_usage_$guest.label $guest_name: Mem usage" + echo "mem_usage_$guest.type GAUGE" + if [ "$areastack" = "true" ]; then + echo "mem_usage_$guest.draw AREASTACK" + fi + echo "mem_cache_$guest.label $guest_name: Cache" + echo "mem_cache_$guest.type GAUGE" + echo "mem_active_$guest.label $guest_name: Active" + echo "mem_active_$guest.type GAUGE" + echo "mem_inactive_$guest.label $guest_name: Inactive" + echo "mem_inactive_$guest.type GAUGE" + done +} + + +do_fetch() { + for guest_name in $guest_names; do + guest="$(clean_fieldname "$guest_name")" + + value=$($f_comm -n "$guest_name" memory.usage_in_bytes) + echo "mem_usage_$guest.value $value" + + value=$($f_comm -n "$guest_name" memory.stat | grep total_cache | awk '{print($2)}') + echo "mem_cache_$guest.value $value" + + value=$($f_comm -n "$guest_name" memory.stat | grep total_active_anon | awk '{print($2)}') + echo "mem_active_$guest.value $value" + + value=$($f_comm -n "$guest_name" memory.stat | grep total_inactive_anon | awk '{print($2)}') + echo "mem_inactive_$guest.value $value" + done +} + + if [ "$1" = "autoconf" ]; then - if [ -r /proc/stat ]; then - echo yes - exit 0 - else - echo "no (no /proc/stat)" - exit 0 - fi + do_autoconf +elif [ "$1" = "config" ]; then + do_config + if [ "${MUNIN_CAP_DIRTYCONFIG:-0}" = "1" ]; then do_fetch; fi +else + do_fetch fi - -if [ "$1" = "config" ]; then - - echo 'graph_title Memory ' - echo 'graph_args -l 0 --base 1024' - echo 'graph_vlabel byte' - echo 'graph_category memory' - - if [ "$areastack" = "true" ]; then - for guest_name in $guest_names; do - guest="$(clean_fieldname $guest_name)" - - echo 'mem_usage_'$guest'.label '$guest_name': Mem usage' - echo 'mem_usage_'$guest'.type GAUGE' - echo 'mem_usage_'$guest'.draw AREASTACK' - done - - for guest_name in $guest_names; do - guest="$(clean_fieldname $guest_name)" - - echo 'mem_cache_'$guest'.label '$guest_name': Cache' - echo 'mem_cache_'$guest'.type GAUGE' - echo 'mem_active_'$guest'.label '$guest_name': Active' - echo 'mem_active_'$guest'.type GAUGE' - echo 'mem_inactive_'$guest'.label '$guest_name': Inactive' - echo 'mem_inactive_'$guest'.type GAUGE' - - done - else - for guest_name in $guest_names; - do - guest="$(clean_fieldname $guest_name)" - - echo 'mem_usage_'$guest'.label '$guest_name': Mem usage' - echo 'mem_usage_'$guest'.type GAUGE' - echo 'mem_cache_'$guest'.label '$guest_name': Cache' - echo 'mem_cache_'$guest'.type GAUGE' - echo 'mem_active_'$guest'.label '$guest_name': Active' - echo 'mem_active_'$guest'.type GAUGE' - echo 'mem_inactive_'$guest'.label '$guest_name': Inactive' - echo 'mem_inactive_'$guest'.type GAUGE' - - done - fi - - exit 0 -fi - - - for guest_name in $guest_names; - do - guest="$(clean_fieldname $guest_name)" - - tmp_v=`$f_comm -n $guest_name memory.usage_in_bytes` - echo 'mem_usage_'$guest'.value '$tmp_v - - tmp_g=`$f_comm -n $guest_name memory.stat | grep total_cache` - tmp_v=`echo $tmp_g | awk '{print($2)}'` - echo 'mem_cache_'$guest'.value '$tmp_v - - tmp_g=`$f_comm -n $guest_name memory.stat | grep total_active_anon` - tmp_v=`echo $tmp_g | awk '{print($2)}'` - echo 'mem_active_'$guest'.value '$tmp_v - - tmp_g=`$f_comm -n $guest_name memory.stat | grep total_inactive_anon` - tmp_v=`echo $tmp_g | awk '{print($2)}'` - echo 'mem_inactive_'$guest'.value '$tmp_v - - done