2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/lxc/lxc_ram

123 lines
2.6 KiB
Plaintext
Raw Normal View History

2018-06-10 14:42:10 +02:00
#!/bin/sh
# -*- sh -*-
: << =cut
=head1 NAME
lxc_ram - Plugin to monitor LXC memory usage.
=head1 CONFIGURATION
[lxc_*]
user root
[lxc_ram]
2016-07-31 14:42:32 +02:00
env.areastack true
=head1 INTERPRETATION
This plugin needs root privilege.
2016-07-31 14:42:32 +02:00
If env.areastack is set to true, all memory usages of containers will be
drawn as stacked area charts.
This option changes graph order, all of 'Mem usage' comes first and then others.
2016-07-31 14:42:32 +02:00
(default: false)
=head1 AUTHOR
vajtsz vajtsz@gmail.com
mitty mitty@mitty.jp
=head1 LICENSE
Unknown license
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
2018-06-10 14:41:53 +02:00
# 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
2018-06-10 14:47:00 +02:00
if lxc-info -n "$guest" 2>&1 | grep -qs RUNNING ; then
active="$active $guest"
fi
done
guest_names="$active"
2018-06-10 14:47:00 +02:00
f_comm='lxc-cgroup '
2018-06-10 14:49:53 +02:00
do_autoconf() {
2018-06-10 14:47:00 +02:00
if [ -r /proc/stat ]; then
echo yes
else
echo "no (no /proc/stat)"
fi
2018-06-10 14:49:53 +02:00
}
2018-06-10 14:49:53 +02:00
do_config() {
2018-06-10 14:47:00 +02:00
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
2018-06-10 14:47:00 +02:00
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
2018-06-10 14:49:53 +02:00
}
2018-06-10 14:49:53 +02:00
do_fetch() {
for guest_name in $guest_names; do
guest="$(clean_fieldname "$guest_name")"
2018-06-10 14:49:53 +02:00
value=$($f_comm -n "$guest_name" memory.usage_in_bytes)
echo "mem_usage_$guest.value $value"
2018-06-10 14:49:53 +02:00
value=$($f_comm -n "$guest_name" memory.stat | grep total_cache | awk '{print($2)}')
echo "mem_cache_$guest.value $value"
2018-06-10 14:49:53 +02:00
value=$($f_comm -n "$guest_name" memory.stat | grep total_active_anon | awk '{print($2)}')
echo "mem_active_$guest.value $value"
2018-06-10 14:49:53 +02:00
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
do_autoconf
elif [ "$1" = "config" ]; then
do_config
2018-06-10 14:50:32 +02:00
if [ "${MUNIN_CAP_DIRTYCONFIG:-0}" = "1" ]; then do_fetch; fi
2018-06-10 14:49:53 +02:00
else
do_fetch
fi