root / plugins / system / systemd @ ef80db4b
Historique | Voir | Annoter | Télécharger (1,49 ko)
| 1 | 160bd2f0 | Olivier Mehani | #!/bin/sh |
|---|---|---|---|
| 2 | # -*- sh -*- |
||
| 3 | |||
| 4 | : << =cut |
||
| 5 | |||
| 6 | =head1 NAME |
||
| 7 | |||
| 8 | systemd - Plugin to monitor systemd units state |
||
| 9 | |||
| 10 | =head1 APPLICABLE SYSTEMS |
||
| 11 | |||
| 12 | Linux systems with systemd installed. |
||
| 13 | |||
| 14 | =head1 CONFIGURATION |
||
| 15 | |||
| 16 | None needed. |
||
| 17 | |||
| 18 | =head1 AUTHOR |
||
| 19 | |||
| 20 | ef80db4b | Olivier Mehani | Olivier Mehani <shtrom+munin@ssji.net> |
| 21 | 160bd2f0 | Olivier Mehani | |
| 22 | =head1 LICENSE |
||
| 23 | |||
| 24 | GPLv2 |
||
| 25 | |||
| 26 | =head1 MAGIC MARKERS |
||
| 27 | |||
| 28 | #%# family=auto |
||
| 29 | ef80db4b | Olivier Mehani | #%# capabilities=autoconf |
| 30 | 160bd2f0 | Olivier Mehani | |
| 31 | =cut |
||
| 32 | |||
| 33 | states="active \ |
||
| 34 | reloading \ |
||
| 35 | inactive \ |
||
| 36 | failed \ |
||
| 37 | activating \ |
||
| 38 | deactivating" |
||
| 39 | autoconf() {
|
||
| 40 | which systemctl >/dev/null && \ |
||
| 41 | systemctl --state=failed --no-pager --no-legend >/dev/null 2>&1 && echo yes || echo "no (No systemctl or error running it)" |
||
| 42 | } |
||
| 43 | |||
| 44 | config () {
|
||
| 45 | ef80db4b | Olivier Mehani | cat << EOF |
| 46 | 160bd2f0 | Olivier Mehani | graph_title Systemd units state |
| 47 | graph_args -l 0 |
||
| 48 | graph_category system |
||
| 49 | graph_scale no |
||
| 50 | graph_vlabel units |
||
| 51 | EOF |
||
| 52 | ef80db4b | Olivier Mehani | for state in $states; do |
| 53 | echo "$state.label $state" |
||
| 54 | echo "$state.draw AREASTACK" |
||
| 55 | if [ $state = failed ]; then |
||
| 56 | echo "$state.warning 0" |
||
| 57 | echo "$state.critical 10" |
||
| 58 | fi |
||
| 59 | done |
||
| 60 | 160bd2f0 | Olivier Mehani | } |
| 61 | |||
| 62 | fetch () {
|
||
| 63 | case $1 in |
||
| 64 | "units") |
||
| 65 | tmp=`mktemp -t munin-systemd.XXXXXX` |
||
| 66 | systemctl --no-pager --no-legend --all | awk '{print $1, $3}' > $tmp
|
||
| 67 | for state in \ |
||
| 68 | $states ; do |
||
| 69 | echo -n "$state.value " |
||
| 70 | grep $state$ $tmp | wc -l |
||
| 71 | 7f2ae83e | Tomaz Solc | extinfo=`grep $state$ $tmp | cut -d " " -f 1` |
| 72 | if [ "$extinfo" ]; then |
||
| 73 | echo "$state.extinfo" $extinfo |
||
| 74 | fi |
||
| 75 | 160bd2f0 | Olivier Mehani | done |
| 76 | rm $tmp |
||
| 77 | ;; |
||
| 78 | "*") |
||
| 79 | echo "$0: unknown mode '$1'" >&2 |
||
| 80 | exit 1 |
||
| 81 | esac |
||
| 82 | } |
||
| 83 | |||
| 84 | # mode=`echo $0 | sed 's/.*_//'` |
||
| 85 | mode=units |
||
| 86 | |||
| 87 | case $1 in |
||
| 88 | "autoconf") |
||
| 89 | autoconf |
||
| 90 | ;; |
||
| 91 | "config") |
||
| 92 | config $mode |
||
| 93 | ;; |
||
| 94 | *) |
||
| 95 | fetch $mode |
||
| 96 | ;; |
||
| 97 | esac |
