#!/bin/sh # -*- sh -*- : << =cut =head1 NAME lxc_ram - Plugin to monitor LXC memory usage. =head1 CONFIGURATION [lxc_*] user root [lxc_ram] env.areastack true =head1 INTERPRETATION This plugin needs root privilege. 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. (default: false) =head1 AUTHOR vajtsz vajtsz@gmail.com mitty mitty@mitty.jp =head1 LICENSE Unknown license =head1 MAGIC MARKERS #%# family=auto #%# capabilities=autoconf =cut # 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 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 do_autoconf elif [ "$1" = "config" ]; then do_config if [ "${MUNIN_CAP_DIRTYCONFIG:-0}" = "1" ]; then do_fetch; fi else do_fetch fi