2015-12-02 21 views
0

我正在尋找每分鐘通過crontab運行腳本。該腳本應該在Solr日誌文件(solr.log)中找到字符串「java.lang.OutOfMemoryError」的出現次數並計算該字符串被找到的次數。Python:計算日誌文件中字符串的發生並使用zabbix_sender發送數據

腳本在服務器負載方面應儘可能高效。 這是我到目前爲止...打印行... 如何添加計數器並將值記錄在整數變量中?

#!/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

我已經決定把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 
相關問題