mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Add systemmd plugin counting units in each state
Signed-off-by: Olivier Mehani <shtrom@ssji.net>
This commit is contained in:
parent
d42751c908
commit
160bd2f034
1 changed files with 109 additions and 0 deletions
109
plugins/system/systemd
Executable file
109
plugins/system/systemd
Executable file
|
@ -0,0 +1,109 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# -*- sh -*-
|
||||||
|
|
||||||
|
: << =cut
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
systemd - Plugin to monitor systemd units state
|
||||||
|
|
||||||
|
=head1 APPLICABLE SYSTEMS
|
||||||
|
|
||||||
|
Linux systems with systemd installed.
|
||||||
|
|
||||||
|
=head1 CONFIGURATION
|
||||||
|
|
||||||
|
None needed.
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Olivier Mehani
|
||||||
|
|
||||||
|
=head1 LICENSE
|
||||||
|
|
||||||
|
GPLv2
|
||||||
|
|
||||||
|
=head1 MAGIC MARKERS
|
||||||
|
|
||||||
|
#%# family=auto
|
||||||
|
#%# capabilities=autoconf suggest
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
states="active \
|
||||||
|
reloading \
|
||||||
|
inactive \
|
||||||
|
failed \
|
||||||
|
activating \
|
||||||
|
deactivating"
|
||||||
|
autoconf() {
|
||||||
|
which systemctl >/dev/null && \
|
||||||
|
systemctl --state=failed --no-pager --no-legend >/dev/null 2>&1 && echo yes || echo "no (No systemctl or error running it)"
|
||||||
|
}
|
||||||
|
|
||||||
|
suggest() {
|
||||||
|
echo "units"
|
||||||
|
}
|
||||||
|
|
||||||
|
config () {
|
||||||
|
case $1 in
|
||||||
|
"units")
|
||||||
|
cat << EOF
|
||||||
|
graph_title Systemd units state
|
||||||
|
graph_args -l 0
|
||||||
|
graph_category system
|
||||||
|
graph_scale no
|
||||||
|
graph_vlabel units
|
||||||
|
EOF
|
||||||
|
for state in $states; do
|
||||||
|
echo "$state.label $state"
|
||||||
|
echo "$state.draw AREASTACK"
|
||||||
|
if [ $state = failed ]; then
|
||||||
|
echo "$state.warning 1"
|
||||||
|
echo "$state.critical 10"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
"*")
|
||||||
|
echo "$0: unknown mode '$1'" >&2
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch () {
|
||||||
|
case $1 in
|
||||||
|
"units")
|
||||||
|
tmp=`mktemp -t munin-systemd.XXXXXX`
|
||||||
|
systemctl --no-pager --no-legend --all | awk '{print $1, $3}' > $tmp
|
||||||
|
for state in \
|
||||||
|
$states ; do
|
||||||
|
echo -n "$state.value "
|
||||||
|
grep $state$ $tmp | wc -l
|
||||||
|
echo -n "$state.extinfo "
|
||||||
|
echo $(grep $state$ $tmp | cut -d " " -f 1)
|
||||||
|
done
|
||||||
|
rm $tmp
|
||||||
|
;;
|
||||||
|
"*")
|
||||||
|
echo "$0: unknown mode '$1'" >&2
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# mode=`echo $0 | sed 's/.*_//'`
|
||||||
|
mode=units
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"autoconf")
|
||||||
|
autoconf
|
||||||
|
;;
|
||||||
|
"suggest")
|
||||||
|
suggest
|
||||||
|
;;
|
||||||
|
"config")
|
||||||
|
config $mode
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fetch $mode
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in a new issue