用于nagios的Bash脚本在最近'n'分钟内监视日志中的错误

时间:2014-06-26 11:57:09

标签: linux bash nagios

我为nagios写了一个bash脚本,根据某个时间戳格式查看日志文件并搜索字符串。该脚本应该返回在最后“n”分钟内找到的错误数。为此,我使用grep with --date =“ - 10 min”。现在,这将查看10分钟前的错误日志,并根据提供的逻辑返回错误。因为我想检查从10分钟前开始的一切我正在使用for循环,唯一的问题是我无法重置变量,我找不到任何解决方案。已经谷歌搜索并尝试了var =,var =“”,unset var等。任何建议都将受到高度赞赏,请参阅下面的脚本。

#!/bin/bash

LOG_FILE=$1
ERROR_MESSAGE=$2
TIME_SPAN=$3
WARNING_THRESHOLD=$4
CRITICAL_THRESHOLD=$5

for (( i = $TIME_SPAN;  i >= 0; --i )); do
   TIME_SPAN=$i
   echo "$TIME_SPAN"
   GET_ERRORS=`grep "$(date +'%d %b %Y %H:%M' --date="-$TIME_SPAN min")" $LOG_FILE |  grep -oi "\($ERROR_MESSAGE\)" -wc`
   let COUNT=COUNT+GET_ERRORS
   GET_ERRORS=""
done



if [ "$COUNT" -lt "$WARNING_THRESHOLD" ]; then
    echo "OK - $COUNT errors found in: $LOG_FILE"
    exit 0
elif [[ ( "$COUNT" -ge "$WARNING_THRESHOLD" ) && ( "$COUNT" -lt "$CRITICAL_THRESHOLD" ) ]]; then
    echo "WARNING - $COUNT errors found in: $LOG_FILE"
    exit 1
elif [ "$COUNT" -ge "$CRITICAL_THRESHOLD" ]; then
    echo "CRITICAL - $COUNT errors found in: $LOG_FILE"
    exit 2
fi

更新

我找到了这个bug。只减少了$ i,而我也应该减少$ time_span。我冒昧地更改了主题的标题并添加了完整的功能代码,因为其他人可能会使用此脚本来监视最近'n'分钟内的日志。我在nagios交换中找不到类似的东西。

非常感谢您的反馈! 亲切的问候, 伊万

0 个答案:

没有答案