Fixed after logrotate file access problem

This commit is contained in:
Alexey 2018-10-15 14:27:41 +03:00
parent 58ad444434
commit 735b50b67f

View file

@ -13,7 +13,7 @@ import configparser
from influxdb import InfluxDBClient from influxdb import InfluxDBClient
def logparse(LOGPATH, INFLUXHOST, INFLUXPORT, INFLUXDBDB, INFLUXUSER, INFLUXUSERPASS, MEASUREMENT): # NOQA def logparse(LOGPATH, INFLUXHOST, INFLUXPORT, INFLUXDBDB, INFLUXUSER, INFLUXUSERPASS, MEASUREMENT, INODE): # NOQA
# Preparing variables and params # Preparing variables and params
IPS = {} IPS = {}
COUNT = {} COUNT = {}
@ -29,10 +29,13 @@ def logparse(LOGPATH, INFLUXHOST, INFLUXPORT, INFLUXDBDB, INFLUXUSER, INFLUXUSER
STR_RESULTS = os.stat(LOGPATH) STR_RESULTS = os.stat(LOGPATH)
ST_SIZE = STR_RESULTS[6] ST_SIZE = STR_RESULTS[6]
FILE.seek(ST_SIZE) FILE.seek(ST_SIZE)
while 1: while True:
METRICS = [] METRICS = []
WHERE = FILE.tell() WHERE = FILE.tell()
LINE = FILE.readline() LINE = FILE.readline()
INODENEW = os.stat(LOGPATH).st_ino
if INODE != INODENEW:
break
if not LINE: if not LINE:
time.sleep(1) time.sleep(1)
FILE.seek(WHERE) FILE.seek(WHERE)
@ -71,7 +74,14 @@ def main():
INFLUXUSERPASS = CONFIG.get('INFLUXDB', 'password') INFLUXUSERPASS = CONFIG.get('INFLUXDB', 'password')
# Parsing log file and sending metrics to Influxdb # Parsing log file and sending metrics to Influxdb
logparse(LOGPATH, INFLUXHOST, INFLUXPORT, INFLUXDBDB, INFLUXUSER, INFLUXUSERPASS, MEASUREMENT) # NOQA while True:
# Get inode from log file
INODE = os.stat(LOGPATH).st_ino
# Run main loop and grep a log file
if os.path.exists(LOGPATH):
logparse(LOGPATH, INFLUXHOST, INFLUXPORT, INFLUXDBDB, INFLUXUSER, INFLUXUSERPASS, MEASUREMENT, INODE) # NOQA
else:
print('File %s not found' % LOGPATH)
if __name__ == '__main__': if __name__ == '__main__':