- Repository
- Munin (master)
- Last change
- 2018-08-17
- Graph Categories
- Family
- manual
- Capabilities
- Language
- Shell
- License
- GPL-2.0-only
multips_memory
Name
multips_memory - Munin plugin to monitor memory usage of processes. Which processes are configured in a file in plugin-conf.d.
Applicable Systems
Any system with a compatible SysV style ps command that understands
ps -eo rss,comm
Configuration
You must specify what process names to monitor:
[multips_memory]
env.names apache2 mysqld php-cgi
The names are are matched with awk. Any regular expression meta characters in each of the words on the names list are “active” in the regular expression.
The by default RSS is monitored, but other sizes provided by your ps is directly usable (the plugin assumes all sizes reported by ps is in KB). Candidates on Linux are rss, size, resident, share, vsize. See your ps man page for more information especially with regards to interpretation of the values. You can change what is monitored by
[multips_memory]
env.monitor vsize
You cannot specify multiple sizes. The plugin handles only one.
If for some reason you want separate graphs, you can make separately named symlinks in the plugins directory on the node (most often either /etc/munin/plugins or /etc/opt/munin/plugins), eg. multips_memory_rss and multips_memory_vsize as symlinks to multips_memory and configure them thus:
[multips_memory*]
env.names apache2 mysqld php-cgi
[multips_memory_rss]
env.monitor rss
[multips_memory_vsize]
env.monitor vsize
They can of course also have different process names as well. Eg. one list for the “LAMP” stack and one for the Java/Oracle stack in separate graphs.
Interpretation
This plugin adds up the RSS (or other memory size if configured) of all processes matching the process name, as reported by ps.
Magic Markers
#%# family=manual
#%# capabilities=autoconf
Version
0.1 first release, based on multips as distributed in Debian.
Bugs and Restrictions
Only the executable name is matched against (ps -eo comm)1, and it must be a full string match to the executable base name, not substring, unless you enter a name such as “.*apache” since RE meta characters in the names are active.
You cannot specify multiple sizes. The plugin handles only one.
Author
Originally: Unknown.
Made into multimemory by: github.com/dominics github.com/yhager.
Renamed to multips_memory when included in official munin trunk.
Thanks to: wix
Some further work to make more generic by Nicolai Langfeldt
License
GPLv2
#!/bin/sh
: <<=cut
=head1 NAME
multips_memory - Munin plugin to monitor memory usage of processes. Which
processes are configured in a file in plugin-conf.d.
=head1 APPLICABLE SYSTEMS
Any system with a compatible SysV style ps command that understands
ps -eo rss,comm
=head1 CONFIGURATION
You must specify what process names to monitor:
[multips_memory]
env.names apache2 mysqld php-cgi
The names are are matched with awk. Any regular expression meta
characters in each of the words on the names list are "active" in the
regular expression.
The by default RSS is monitored, but other sizes provided by your ps
is directly usable (the plugin assumes all sizes reported by ps is in
KB). Candidates on Linux are rss, size, resident, share, vsize. See
your ps man page for more information especially with regards to
interpretation of the values. You can change what is monitored by
[multips_memory]
env.monitor vsize
You cannot specify multiple sizes. The plugin handles only one.
If for some reason you want separate graphs, you can make separately
named symlinks in the plugins directory on the node (most often either
/etc/munin/plugins or /etc/opt/munin/plugins), eg. multips_memory_rss and
multips_memory_vsize as symlinks to multips_memory and configure them thus:
[multips_memory*]
env.names apache2 mysqld php-cgi
[multips_memory_rss]
env.monitor rss
[multips_memory_vsize]
env.monitor vsize
They can of course also have different process names as well. Eg. one
list for the "LAMP" stack and one for the Java/Oracle stack in
separate graphs.
=head1 INTERPRETATION
This plugin adds up the RSS (or other memory size if configured) of
all processes matching the process name, as reported by ps.
=head1 MAGIC MARKERS
#%# family=manual
#%# capabilities=autoconf
=head1 VERSION
0.1 first release, based on multips as distributed in Debian.
=head1 BUGS AND RESTRICTIONS
Only the executable name is matched against (ps -eo comm)1, and it must
be a full string match to the executable base name, not substring,
unless you enter a name such as ".*apache" since RE meta characters in
the names are active.
You cannot specify multiple sizes. The plugin handles only one.
=head1 AUTHOR
Originally: Unknown.
Made into multimemory by: github.com/dominics github.com/yhager.
Renamed to multips_memory when included in official munin trunk.
Thanks to: wix
Some further work to make more generic by Nicolai Langfeldt
=head1 LICENSE
GPLv2
=cut
. "$MUNIN_LIBDIR/plugins/plugin.sh"
names=${names:-}
if [ "$1" = "autoconf" ]; then
if [ -z "$names" ]; then
echo "no (Configuration required)"
else
echo yes
fi
exit 0
fi
if [ -z "$names" ]; then
echo "(Configuration required)"
exit 1
fi
monitor=${monitor:-rss}
if [ "$1" = "config" ]; then
echo "graph_title Process $monitor summed by name"
echo 'graph_category processes'
echo 'graph_args --base 1024 -l 0'
echo 'graph_vlabel memory'
echo "graph_info This plugin shows $monitor memory usage for commands matching the respective regular expressions"
for name in $names; do
fieldname="$(clean_fieldname "$name")"
eval REGEX='^$name$';
echo "$fieldname.label $name"
echo "$fieldname.info For /$REGEX/"
done
exit 0
fi
for name in $names; do
fieldname="$(clean_fieldname "$name")"
ps -eo "$monitor,comm" | gawk '
BEGIN { total = "U"; } # U = Unknown.
/grep/ { next; }
$2 ~ /^'"$name"'$/ { total = total + ($1*1024); }
END { print "'"$fieldname"'.value", total; }'
done