File: //lib64/nagios/plugins/check_a2_largelogs.shared
#!/bin/bash
# OPSTEAM-14968 - script to find log files larger than 3GB
# BFENG-749 - log file names
#
INTERVAL=86400 # interval to find large logs
LOG="/tmp/check_largelogs_cache.log" # default path to log file
# cacheage function
cacheage () {
file=$1
now=$(date +%s)
mtime=$(stat -c %Y "$file")
delta=$(( now - mtime ))
echo $delta
}
# generate cache function
generate_cache () {
large_logs=$(find /var/log/ -type f -size +3G \( ! -iname "lastlog" \) | tr '\n' '|')
if [[ -n "$large_logs" ]]; then
# Remove trailing pipe for cleaner output
large_logs=${large_logs%|}
printf 'large logs found in /var/log directory: %s\n' "$large_logs" > $LOG
exit 2
fi
}
# generate cache
if [ ! -e $LOG ]; then
touch $LOG
generate_cache
else
age=$(cacheage $LOG)
if [ "$age" -ge "$INTERVAL" ]; then
generate_cache
fi
fi
# this will output large logs status from cache
if [ -s "$LOG" ]; then
cat $LOG
fi