From 5a320fce61b3d94bbef2a3449e0e1b2cf9ac9a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Droz?= Date: Mon, 9 Nov 2015 21:32:46 -0300 Subject: [PATCH] proc_mem_by_user: - use of bash - don't corrupt rrd files when "root" (or any unclean value) is requested --- plugins/processes/proc_mem_by_user | 64 ++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 20 deletions(-) mode change 100644 => 100755 plugins/processes/proc_mem_by_user diff --git a/plugins/processes/proc_mem_by_user b/plugins/processes/proc_mem_by_user old mode 100644 new mode 100755 index 5e763288..567e386f --- a/plugins/processes/proc_mem_by_user +++ b/plugins/processes/proc_mem_by_user @@ -1,5 +1,6 @@ #!/bin/sh # +# (c) 2015, Raphaƫl Droz # (c) 2014, Gilles Fauvie # Based on the 'du_multidirs' plugin, written by Christian Kujau # @@ -10,33 +11,56 @@ # [proc_mem_by_user] # env.users munin-node jprod # +# see bug: +# http://munin-monitoring.org/ticket/921 +# /usr/share/munin/plugins/plugin.sh (clean_fieldname()) -. $MUNIN_LIBDIR/plugins/plugin.sh +. "$MUNIN_LIBDIR/plugins/plugin.sh" +users=${users:-munin-node} -if [ "$1" = "autoconf" ]; then - echo yes - exit 0 + +if [ "$1" = autoconf ]; then + ok=1 + [ -z "$users" ] && ok=0 + + for user in $users; do + ps u -U "$user" 1> /dev/null 2>&1 || ok=0 + done + + if [ $ok = 1 ]; then echo yes + else echo no; fi + exit 0 fi -users=${users:="munin-node"} +if [ "$1" = config ]; then + cat < 1 { sum += $6 }; END { print sum * 1024 }'` -done \ No newline at end of file + munin_safe_name=$(clean_fieldname "$user") + sum=$(ps u -U "$user" | awk 'BEGIN { sum = 0 } NR > 1 { sum += $6 }; END { print sum * 1024 }') + echo "$munin_safe_name.value ${sum:-U}" +done