diff --git a/CHANGELOG.md b/CHANGELOG.md index 75060589..29e96480 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ The **patch** part changes incrementally at each release. * squid: add a few news sites to the whitelist * java8: renamed to java (java8 symlinked to java for backward compatibility) * redmine: use .my.cnf for mysql password +* tomcat: better nrpe check output ### Fixed * mysql-oracle: fix configuration directory variable diff --git a/tomcat/templates/check_tomcat_instance.sh.j2 b/tomcat/templates/check_tomcat_instance.sh.j2 index 8ed63475..60fe0ef3 100644 --- a/tomcat/templates/check_tomcat_instance.sh.j2 +++ b/tomcat/templates/check_tomcat_instance.sh.j2 @@ -1,18 +1,50 @@ -#!/bin/bash +#!/bin/sh + +set -u TOMCAT_ROOT='{{ tomcat_instance_root }}' -alert=0 -for instance in $(ls $TOMCAT_ROOT); do - port=$(id -u $instance) - if [ -h ${TOMCAT_ROOT}/${instance}/.config/systemd/user/default.target.wants/tomcat.service ]; then - echo -n "$instance ($port) : " - /usr/lib/nagios/plugins/check_tcp -p $port - ret=$? - if [ $ret != 0 ]; then - alert=$ret - fi +return=0 +nb_crit=0 +nb_warn=0 +nb_ok=0 +nb_unchk=0 +output="" + +instances=$(ls "${TOMCAT_ROOT}") +for instance in ${instances}; do + port=$(id -u "${instance}") + if [ -h "${TOMCAT_ROOT}/${instance}/.config/systemd/user/default.target.wants/tomcat.service" ]; then + /usr/lib/nagios/plugins/check_tcp -p "${port}" >/dev/null 2>&1 + ret="${?}" + if [ "${ret}" -ge 2 ]; then + nb_crit=$((nb_crit + 1)) + output="${output}CRITICAL - ${instance} (${port})\n" + [ "${return}" -le 2 ] && return=2 + elif [ "${ret}" -ge 1 ]; then + nb_warn=$((nb_warn + 1)) + output="${output}WARNING - ${instance} (${port})\n" + [ "${return}" -le 1 ] && return=1 + else + nb_ok=$((nb_ok + 1)) + output="${output}OK - ${instance} (${port})\n" + [ "${return}" -le 0 ] && return=0 fi + else + nb_unchk=$((nb_unchk + 1)) + output="${output}UNCHK - ${instance} (${port})\n" + fi done -exit $alert +[ "${return}" -ge 0 ] && header="OK" +[ "${return}" -ge 1 ] && header="WARNING" +[ "${return}" -ge 2 ] && header="CRITICAL" + +printf "%s - %s UNCHK / %s CRIT / %s WARN / %s OK\n\n" "${header}" "${nb_unchk}" "${nb_crit}" "${nb_warn}" "${nb_ok}" + +printf "${output}" | grep -E "^CRITICAL" +printf "${output}" | grep -E "^WARNING" +printf "${output}" | grep -E "^OK" +printf "${output}" | grep -E "^UNCHK" + +exit "${return}"