From 875e617f173f66563c7b89ecf763648e9859bc1a Mon Sep 17 00:00:00 2001 From: Martin Berghaus Date: Wed, 26 Mar 2025 00:17:43 +0100 Subject: [PATCH] First GENERIC check... --- script/monitor/check.sh | 41 +++++++++++-------- .../checks/GENERIC_ZFSPOOL_USAGE_CHECK.sh | 26 ++++++++++++ 2 files changed, 50 insertions(+), 17 deletions(-) create mode 100755 script/monitor/checks/GENERIC_ZFSPOOL_USAGE_CHECK.sh diff --git a/script/monitor/check.sh b/script/monitor/check.sh index 1787e02..1a744f3 100755 --- a/script/monitor/check.sh +++ b/script/monitor/check.sh @@ -1,22 +1,38 @@ #!/bin/bash +# Folders always ends with an tailing '/' +_SCRIPT="$(readlink -f "${0}" 2> /dev/null)" +_SCRIPT_PATH="$(dirname ${_SCRIPT:?"Missing SCRIPT"} 2> /dev/null)/" +_CIS_ROOT="$(dirname $(dirname ${_SCRIPT_PATH:?"Missing SCRIPT_PATH"} 2> /dev/null) 2> /dev/null)/" +_CORE_SCRIPTS="${_CIS_ROOT:?"Missing CIS_ROOT"}core/" +_CURRENT_DOMAIN="$("${_CORE_SCRIPTS:?"Missing CORE_SCRIPTS"}printOwnDomain.sh")" +_DEFINITIONS="${_CIS_ROOT:?"Missing CIS_ROOT"}definitions/${_CURRENT_DOMAIN:?"Missing CURRENT_DOMAIN"}/" + +_ALL_CHECKS="${_DEFINITIONS:?"Missing DEFINITIONS"}monitor/host/all/" +_OWN_CHECKS="${_DEFINITIONS:?"Missing DEFINITIONS"}monitor/host/$(hostname -s)/" + function doChecks(){ local readonly _TMPDIR="${1:?"doChecks(): Missing parameter TMPDIR:"}" - local readonly _COLOR="${2:-"monocrom"}" local _DATETIME=$(date +%H-%M-%S) mkdir -p ${_TMPDIR} rm ${_TMPDIR}/* > /dev/null 2>&1 - for check in /monitoring/checks/*.on + for check in ${_ALL_CHECKS}*.on do local _CHECK_FILENAME="${check##*/}" echo -n "${_CHECK_FILENAME%%.on}?" > "${_TMPDIR}/${_CHECK_FILENAME}" timeout -k 10s 20s bash ${check} >> "${_TMPDIR}/${_CHECK_FILENAME}" 2> /dev/null || echo "TIMEOUT#Timeout" >> "${_TMPDIR}/${_CHECK_FILENAME}" & done +# for check in ${_OWN_CHECKS}*.on +# do +# local _CHECK_FILENAME="${check##*/}" +# echo -n "${_CHECK_FILENAME%%.on}?" > "${_TMPDIR}/${_CHECK_FILENAME}" +# timeout -k 10s 20s bash ${check} >> "${_TMPDIR}/${_CHECK_FILENAME}" 2> /dev/null || echo "TIMEOUT#Timeout" >> "${_TMPDIR}/${_CHECK_FILENAME}" & +# done wait local _FAILED=0 @@ -27,18 +43,7 @@ function doChecks(){ cat "${resultFile}" grep -q "FAIL" ${resultFile} && _FAILED=$(expr ${_FAILED} + 1) done - - if [ "${_COLOR}" == "color" ]; then - #color is for console-output - echo "-----------------------" - if [ ${_FAILED} -ne 0 ]; then - echo "MISSED?${_FAILED}#${_DATETIME}" - else - echo "MISSED?${_FAILED}#${_DATETIME}" - fi - else - echo "MISSED?${_FAILED}#${_DATETIME}" - fi + echo "MISSED?${_FAILED}#${_DATETIME}" rm -r ${_TMPDIR} > /dev/null 2>&1 return 0 @@ -59,9 +64,11 @@ function usage(){ main(){ case "${1:-""}" in all) - printf "Checks werden ausgeführt..." \ + echo "Checks werden ausgeführt..." \ + && echo \ && doChecks "/tmp/checks" color \ - && printf "Success" \ + && echo \ + && echo "Success" \ && return 0 ;; auto) @@ -74,7 +81,7 @@ main(){ ;; *) [ "${1:+isset}" == "isset" ] \ - && printf "Parameter '${1}' ist kein gültiger Befehl.\n" + && echo "Parameter '${1}' ist kein gültiger Befehl." usage return 0 ;; diff --git a/script/monitor/checks/GENERIC_ZFSPOOL_USAGE_CHECK.sh b/script/monitor/checks/GENERIC_ZFSPOOL_USAGE_CHECK.sh new file mode 100755 index 0000000..ba28b5b --- /dev/null +++ b/script/monitor/checks/GENERIC_ZFSPOOL_USAGE_CHECK.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +SERVER="${1:?"FQDN of server missing"}" + +function testSpace(){ + local _RESULT=$(/sbin/zpool list -H -o capacity,name | /usr/bin/sort) + local _SPACE_USED=$(echo "${_RESULT}" | /usr/bin/tail -n 1 | /usr/bin/cut -f1) + local _POOL=$(echo "${_RESULT}" | /usr/bin/tail -n 1 | /usr/bin/cut -f2) + + [ -z "${_SPACE_USED}" ] \ + && echo "FAIL#NO value" \ + && return 0 + + [ "${1:?"Missing OK_THRESHOLD"}" -ge "${_SPACE_USED%\%*}" ] \ + && echo "OK#${_SPACE_USED} used ${_POOL}." \ + && return 0 + + [ "${2:?"Missing INFO_THRESHOLD"}" -ge "${_SPACE_USED%\%*}" ] \ + && echo "INFO#${_SPACE_USED} already used ${_POOL}." \ + && return 0 + + echo "FAIL#${_SPACE_USED} used ${_POOL}!" + return 0 +} + +testSpace 80 90