summaryrefslogtreecommitdiff
path: root/etc/functions
diff options
context:
space:
mode:
authorDaniel Friesel <derf@derf.homelinux.org>2010-07-22 21:10:20 +0200
committerDaniel Friesel <derf@derf.homelinux.org>2010-07-22 21:10:20 +0200
commit9608c4aa49aa0df9a2c47e8a602023e02a3c63ac (patch)
tree41a9a0dd2c98c3067185dc5a07c21298b7b90eae /etc/functions
parent444081887459f5afb59f70ea13c9343d72019750 (diff)
Add icinga-status function
Diffstat (limited to 'etc/functions')
-rw-r--r--etc/functions/icinga-status33
1 files changed, 33 insertions, 0 deletions
diff --git a/etc/functions/icinga-status b/etc/functions/icinga-status
new file mode 100644
index 0000000..dcb6c7f
--- /dev/null
+++ b/etc/functions/icinga-status
@@ -0,0 +1,33 @@
+typeset output
+typeset sv_ok sv_warn sv_crit sv_unknown
+typeset host_up host_down host_unreachable
+
+output=($(ssh aneurysm \
+'/usr/sbin/icingastats -md NUMSVCOK,NUMSVCWARN,NUMSVCUNKN,NUMSVCCRIT,'\
+'NUMHSTUP,NUMHSTDOWN,NUMHSTUNR'))
+
+function _icinga_format {
+ typeset format
+
+ case ${1} in
+ yellow) format='%F{black}%K{yellow}' ;;
+ red) format='%K{red}' ;;
+ blue) format='%K{blue}' ;;
+ esac
+
+ (( ${3} == 0 )) && format=
+
+ print -Pn ${format}
+
+ printf "%-16s %s%s" ${2} $(print -P '%F{default}%K{default}') ${3}
+ echo
+}
+
+_icinga_format green 'Service OK' ${output[1]}
+_icinga_format yellow 'Sercice WARN' ${output[2]}
+_icinga_format blue 'Service UNKNOWN' ${output[3]}
+_icinga_format red 'Service CRIT' ${output[4]}
+echo
+_icinga_format green 'Host UP' ${output[5]}
+_icinga_format red 'Host DOWN' ${output[6]}
+_icinga_format blue 'Host UNREACHABLE' ${output[7]}