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

Like this:

Další témata