From f55b83fdbda8bbe65f27395fe55d75f6e9e845f2 Mon Sep 17 00:00:00 2001 From: Daniel Alder Date: Wed, 13 Dec 2023 00:59:12 +0100 Subject: [PATCH 1/2] Improve df Before, there were 1+n calls of df where n is the number of output values. I introduced some script magic to use the values from the first call. Motivation was, there was a very complex sed call which failed to process some of my df output lines. The new code is much safer. Actually, the original problem obviously was that the sed regex didn't cover capital letters which I had in my mountpoints. --- plugins/df | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/plugins/df b/plugins/df index ee378ec..8482feb 100644 --- a/plugins/df +++ b/plugins/df @@ -4,21 +4,19 @@ graph_args --upper-limit 100 -l 0 graph_vlabel % graph_category disk graph_info This graph shows disk usage on the machine." - for PART in $(df -PT | grep '^/' | grep -vwE "$DF_IGNORE_FILESYSTEM_REGEX" | sed '/\/[a-z0-9]*$/!d;s/.* \([a-z0-9\/]\{1,\}\)$/\1/g') + df -PT | grep '^/' | grep -vwE "$DF_IGNORE_FILESYSTEM_REGEX" | while read dev type blocks used avail pct mp do - PINFO=$(df -P "$PART" | tail -1); - PNAME=$(clean_fieldname "$(echo "$PINFO" | cut -d " " -f 1)") - echo "$PNAME.label $PART" - echo "$PNAME.info $PNAME -> $PART" + PNAME=$(clean_fieldname "$dev") + echo "$PNAME.label $mp" + echo "$PNAME.info $dev -> $mp" echo "$PNAME.warning 92" echo "$PNAME.critical 98" done } fetch_df() { - for PART in $(df -PT | grep '^/' | grep -vwE "$DF_IGNORE_FILESYSTEM_REGEX" | sed '/\/[a-z0-9]*$/!d;s/.* \([a-z0-9\/]\{1,\}\)$/\1/g') + df -PT | grep '^/' | grep -vwE "$DF_IGNORE_FILESYSTEM_REGEX" | while read dev type blocks used avail pct mp do - PINFO=$(df -P "$PART" | tail -1); - PNAME=$(clean_fieldname "$(echo "$PINFO" | cut -d " " -f 1)") - echo "$PNAME.value" "$(echo "$PINFO" | sed -e 's/\%//g' -e 's/ */ /g' | cut -d " " -f 5)" + PNAME=$(clean_fieldname "$dev") + echo "$PNAME.value" "${pct%\%}" done } From c2b8d7315d9c9c466537ef60dcdb5bd6733ea809 Mon Sep 17 00:00:00 2001 From: Daniel Alder Date: Thu, 14 Dec 2023 13:26:47 +0100 Subject: [PATCH 2/2] Fix previous change. The key for config and values was the mountpoint I accidently changed this to dev. This also works but breaks existing history --- plugins/df | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/df b/plugins/df index 8482feb..a0babf0 100644 --- a/plugins/df +++ b/plugins/df @@ -6,7 +6,7 @@ graph_category disk graph_info This graph shows disk usage on the machine." df -PT | grep '^/' | grep -vwE "$DF_IGNORE_FILESYSTEM_REGEX" | while read dev type blocks used avail pct mp do - PNAME=$(clean_fieldname "$dev") + PNAME=$(clean_fieldname "$mp") echo "$PNAME.label $mp" echo "$PNAME.info $dev -> $mp" echo "$PNAME.warning 92" @@ -16,7 +16,7 @@ graph_info This graph shows disk usage on the machine." fetch_df() { df -PT | grep '^/' | grep -vwE "$DF_IGNORE_FILESYSTEM_REGEX" | while read dev type blocks used avail pct mp do - PNAME=$(clean_fieldname "$dev") + PNAME=$(clean_fieldname "$mp") echo "$PNAME.value" "${pct%\%}" done }