#!/bin/bash # ====================================================================== # # NAGIOS CLIENT CHECK :: haproxy healthcheck # # ---------------------------------------------------------------------- # # ---------------------------------------------------------------------- # 2020-04-27 v1.0 <axel.hahn@iml.unibe.ch> # 2020-05-04 v1.1 <axel.hahn@iml.unibe.ch> show message if monitor-uri was not set # 2020-12-03 v1.2 <axel.hahn@iml.unibe.ch> loop over multiple frontend status urls # 2021-12-14 v1.3 <axel.hahn@iml.unibe.ch> use updated haproxy paser in sourced file # 2022-04-01 v1.4 <axel.hahn@iml.unibe.ch> use wget default params; shell fixes # ====================================================================== . $(dirname $0)/inc_pluginfunctions . $(dirname $0)/inc_haproxy_cfg.sh cfgfile=/etc/haproxy/haproxy.cfg tmpfile=/tmp/check_haproxy_healthcheck_$$ # ---------------------------------------------------------------------- # pre checks # ---------------------------------------------------------------------- ph.require wget cat $cfgfile >/dev/null if [ $? -ne 0 ]; then ph.abort "UNKNOWN: unable to read ha proxy config $cfgfile ... $(ls -l $cfgfile)" fi cat $cfgfile | grep "\ mode\ .*http" >/dev/null if [ $? -ne 0 ]; then ph.abort "UNKNOWN: haproxy is not in http mode" fi # ---------------------------------------------------------------------- url=$( getHealthUri ) if [ -z "$url" ]; then ph.abort "UNKNOWN: Unable to detect url for health status." fi # remove password for showing url in output safeurl=$( echo $url | sed "s#\(://\)\(.*@\)#\1#g" ) # --- get status page wget -T 5 -t 1 --no-check-certificate -O $tmpfile $url 2>/dev/null if [ $? -ne 0 ]; then rm -f $tmpfile ph.abort "UNKNOWN: url $safeurl did not respond. $(wget -T 5 -t 1 --no-check-certificate -O - -S $url)" fi grep "200 OK" $tmpfile >/dev/null if [ $? -ne 0 ]; then ph.setStatus "error" ph.status "url $safeurl did not contain 200 OK. $(wget -T 5 -t 1 --no-check-certificate -O - -S $url)" else ph.status "HA Proxy $safeurl is up and running." fi rm -f $tmpfile ph.exit # ----------------------------------------------------------------------