Kontrola velikosti souborů z Nagiosu
Na jednom serveru potřebujeme hlídat velikost logů zda nerostou moc nad obvyklé meze. Nechci je rotovat po dosažení nějaké velikosti, chci jen vědět, že se děje nějaká neplecha.
Na jednom serveru potřebujeme hlídat velikost logů zda nerostou moc nad obvyklé meze. Nechci je rotovat po dosažení nějaké velikosti, chci jen vědět, že se děje nějaká neplecha.
#!/bin/bash DIRECTORY=/logy WARNSIZE=1024 CRITSIZE=2048 STATE_OK=0 # define the exit code if status is OK STATE_WARNING=1 # define the exit code if status is Warning (not really used) STATE_CRITICAL=2 # define the exit code if status is Critical STATE_UNKNOWN=3 # define the exit code if status is Unknown PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin for cmd in find stat [ do if ! `which ${cmd} 1>/dev/null` then echo "UNKNOWN: ${cmd} does not exist, please check if command exists and PATH is correct" exit ${STATE_UNKNOWN} fi done RESULT="" ERROR=0 WARNING=0 [ -d $DIRECTORY ] || exit ${STATE_OK} while read fname; do size=$(($(stat --format=%s "${fname}")/1024/1024)) RESULT="${RESULT}${fname#$DIRECTORY} ${size} MiB, " if [ ${size} -gt $CRITSIZE ]; then ERROR=1 elif [ ${size} -gt $WARNSIZE ]; then WARNING=1 fi done < <(find ${DIRECTORY} -type f -size +${WARNSIZE}M -not -name '*.gz') if [ $ERROR -gt 0 ]; then echo "ERROR: ${RESULT}" exit ${STATE_CRITICAL} elif [ $WARNING -gt 0 ]; then echo "WARNING: ${RESULT}" exit ${STATE_WARNING} else echo "OK: vsechny logy jsou mensi nez ${WARNSIZE} MiB" exit ${STATE_OK} fi