我希望每分钟通过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
答案 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