parent
b3d68d0c3c
commit
bd46a36993
1 changed files with 55 additions and 0 deletions
@ -0,0 +1,55 @@ |
||||
#!/bin/bash |
||||
|
||||
WARNING=( 8 5 2 ) |
||||
CRITICAL=( 10 8 3 ) |
||||
while test $# -gt 0; do |
||||
case $1 in |
||||
(-h|--help) cat <<EOF |
||||
$0 [OPTIONS] |
||||
|
||||
OPTIONS |
||||
|
||||
-w, --warning "a b c" set warning threshold for: |
||||
a: 1min, b: 5min, c: 15min average |
||||
(default: ${WARNING[@]}) |
||||
-c, --critical "a b c" set critical threshold for: |
||||
a: 1min, b: 5min, c: 15min average |
||||
(default: ${CRITICAL[@]}) |
||||
|
||||
DESCRIPTION |
||||
|
||||
Icinga plugin to check load average per CPU. Shows 1min, 5min 15min |
||||
average per CPU. Different to check_load, the load is divided by the |
||||
number of CPU units and therefore normalized. So the same warning and |
||||
critical levels fit for any server. |
||||
|
||||
EOF |
||||
exit;; |
||||
(-w|--warning) shift; WARNING=( $1 );; |
||||
(-c|--critical) shift; CRITICAL=( $1 );; |
||||
esac |
||||
if test $# -lt 1; then |
||||
echo "ERROR: missing option, try $0 --help" |
||||
exit 1 |
||||
fi |
||||
shift |
||||
done |
||||
|
||||
a=( $(cut -d' ' -f 1-3 </proc/loadavg) ) |
||||
|
||||
echo "before ${a[@]}" |
||||
level=0 |
||||
txt=OK |
||||
for ((i=0;i<3;++i)); do |
||||
a[$i]=$(bc -l <<< "${a[$i]}/$(nproc)") |
||||
if test $level -lt 1 -a $(bc -l <<< "${a[$i]}>${WARNING[$i]}") -eq 1; then |
||||
level=1 |
||||
txt=WARNING |
||||
fi |
||||
if test $level -lt 2 -a $(bc -l <<< "${a[$i]}>${CRITICAL[$i]}") -eq 1; then |
||||
level=2 |
||||
txt=CRITICAL |
||||
fi |
||||
done |
||||
echo $txt - load average: $(printf '%.2f, %.2f, %.2f|load1=%.3f;%.3f;%.3f;0; load5=%.3f;%.3f;%.3f;0; load15=%.3f;%.3f;%.3f;0;' ${a[@]} ${a[0]} ${WARNING[0]} ${CRITICAL[0]} ${a[1]} ${WARNING[1]} ${CRITICAL[1]} ${a[2]} ${WARNING[2]} ${CRITICAL[2]}) |
||||
exit $level |
Loading…
Reference in new issue