#!/bin/bash # -*- 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 ' if [ "$1" = "autoconf" ]; then if [ -r /proc/stat ]; then echo yes else echo "no (no /proc/stat)" fi exit 0 fi if [ "$1" = "config" ]; then echo 'graph_title Memory ' echo 'graph_args -l 0 --base 1024' echo 'graph_vlabel byte' echo 'graph_category memory' if [ "$areastack" = "true" ]; then 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" echo "mem_usage_$guest.draw AREASTACK" done for guest_name in $guest_names; do guest="$(clean_fieldname "$guest_name")" 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 else 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" 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 fi exit 0 fi 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