Python:计算日志文件中字符串的出现次数并使用zabbix_sender

时间:2015-12-02 17:59:02

标签: python solr jvm

我希望每分钟通过crontab运行一个脚本。该脚本应该在Solr日志文件(solr.log)上找到字符串“java.lang.OutOfMemoryError”的出现次数,并计算找到该字符串的次数。

在服务器负载方面,脚本应尽可能高效。 这就是我到目前为止......打印线条...... 如何添加计数器并将值记录在整数变量中?

    #!/usr/bin/env python

    # Open the file and look for match
    with open("/opt/data/solr/logs/solr.log" 'r') as f:
        for line in f:
            if "java.lang.OutOfMemoryError" in line:
                print line

1 个答案:

答案 0 :(得分:0)

我决定采用bash路径来做这件事,因为它似乎更简单...... 我已经完成了计数器和解析,但日志每天都会旋转,将时间戳添加到日常日志中(log4j)......

有关如何考虑此日志轮换方案而不是破坏计数器的任何线索?

如果我扫描那里的所有日志并更新我的计数器并解析了所有日志,应该会更好吗?

这是我到目前为止......将会更新。

#!/bin/bash
###########

### SET UP VARIABLES
HOSTNAME="$HOSTNAME"
COUNTER="0"
WORKDIR="/opt/data/solr/logs"
SOLRLOG="$WORKDIR/solr.log"

### DEFINE LOGFILE AND COUNT OOM ERRORS
OOMCheck() {
for logfile in ${SOLRLOG[@]} ;do
OOMCount=`grep "java.lang.OutOfMemoryError" $SOLRLOG | wc -l`
COUNTER=$[$COUNTER + $OOMCount]
export COUNTER
done
}

### SEND DATA TO ZABBIX
Main() {
OOMCheck
if [[ "$COUNTER" != "0"" ]] ; then

else
exit 0
fi
}
Main