mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-21 18:41:03 +00:00
84 lines
2.3 KiB
Bash
84 lines
2.3 KiB
Bash
#!/bin/bash
|
|
#%# family=auto
|
|
|
|
: << EOF
|
|
=head1 NAME
|
|
docker_volumesize - Plugin to monitor the sizes of docker volumes.
|
|
|
|
=head1 AUTHOR
|
|
|
|
Michael Grote (michael.grote@posteo.de)
|
|
|
|
=head1 MAGIC MARKERS
|
|
|
|
#%# family=auto
|
|
#%# capabilities=autoconf
|
|
|
|
=head1 LICENSE
|
|
|
|
GPLv3 or later
|
|
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
=cut
|
|
|
|
EOF
|
|
|
|
|
|
if [ "$1" = "autoconf" ]; then
|
|
if ! command -v jq &> /dev/null; then
|
|
echo "no (jq could not be found)"
|
|
elif ! command -v docker &> /dev/null; then
|
|
echo "no (docker could not be found)"
|
|
elif ! command -v bc &> /dev/null; then
|
|
echo "no (bc could not be found)"
|
|
else
|
|
echo "yes"
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
volume_info=$(docker system df -v --format '{{json .Volumes}}' | jq -r '.[] | "\(.Name):\(.Size):\(.Labels)"')
|
|
|
|
|
|
|
|
if [ "$1" = "config" ]; then
|
|
echo "multigraph volumesize"
|
|
echo "graph_title Docker volume size"
|
|
echo "graph_vlabel Bytes"
|
|
echo "graph_category virtualization"
|
|
echo "graph_args -l 0 --base 1024"
|
|
echo "graph_info This graph shows the size per volume."
|
|
while IFS= read -r line; do
|
|
# ignore empty lines
|
|
[ -n "$line" ] || continue
|
|
echo "$line" | awk 'BEGIN { FS = ":" } { label = substr($1, 1, 30); print $1 ".label " label }'
|
|
# display info only when labels are set
|
|
if [ -n "$(echo "$line" | awk 'BEGIN { FS = ":" } { print $3 }')" ]; then
|
|
echo "$line" | awk 'BEGIN { FS = ":" } { print $1".info "$3 }'
|
|
fi
|
|
echo "$line" | awk 'BEGIN { FS = ":" } { print $1".draw AREASTACK" }'
|
|
done <<< "$volume_info"
|
|
exit 0
|
|
fi
|
|
|
|
echo "multigraph volumesize"
|
|
while IFS= read -r line; do
|
|
# ignore empty lines
|
|
[ -n "$line" ] || continue
|
|
name=$(echo "$line" | awk 'BEGIN { FS = ":" } { print $1 }')
|
|
value=$(echo "$line" | awk 'BEGIN { FS = ":" } { print $2 }')
|
|
|
|
if [[ $value =~ ([0-9.]+)TB$ ]]; then
|
|
bytes=$(echo "$(echo $value | sed 's/[^0-9.]//g') * 1024 * 1024 * 1024 * 1024" | bc)
|
|
elif [[ $value =~ ([0-9.]+)GB$ ]]; then
|
|
bytes=$(echo "$(echo $value | sed 's/[^0-9.]//g') * 1024 * 1024 * 1024" | bc)
|
|
elif [[ $value =~ ([0-9.]+)MB$ ]]; then
|
|
bytes=$(echo "$(echo $value | sed 's/[^0-9.]//g') * 1024 * 1024" | bc)
|
|
elif [[ $value =~ ([0-9.]+)kB$ ]]; then
|
|
bytes=$(echo "$(echo $value | sed 's/[^0-9.]//g') * 1024" | bc)
|
|
elif [[ $value =~ ([0-9.]+)B$ ]]; then
|
|
bytes=$(echo "$(echo $value | sed 's/[^0-9.]//g')")
|
|
fi
|
|
echo "$name.value" "$bytes"
|
|
done <<< "$volume_info"
|