2016-08-14 14:19:37 +02:00
|
|
|
#!/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
|
2016-10-17 11:08:06 +02:00
|
|
|
echo "$state.warning 0"
|
2016-08-14 14:19:37 +02:00
|
|
|
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
|
2016-10-03 18:29:40 +02:00
|
|
|
extinfo=`grep $state$ $tmp | cut -d " " -f 1`
|
|
|
|
if [ "$extinfo" ]; then
|
|
|
|
echo "$state.extinfo" $extinfo
|
|
|
|
fi
|
2016-08-14 14:19:37 +02:00
|
|
|
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
|