Dieses Skript wird verwendet, um die Parallelität von Protokollen in der letzten Minute abzufragen. Die Ergebnisse werden in der Standardausgabe gedruckt. Es kann mit einiger Software verwendet werden, um eine Echtzeit-Parallelitätsüberwachung von Protokollen zu erreichen , wie z. B. Zabbix.
#! /usr/local/bin/python3 import sys import re import datetime import os def generate_previous_minutes(): format='%d/%b/%Y:%H:%M' return (datetime.datetime.today()-datetime.timedelta(minutes=1)).strftime(format) def check_logs(log_path,examine_minutes): regex_minutes=re.compile(examine_minutes) minutes_count=0 step=10*1024*1024 with open(log_path,encoding='Latin-1') as file: line=file.readline() while line: time_line=line.split(' ')[3][1:] if time_line>=examine_minutes: file.seek(file.tell()-step) file.readline() break file.seek(file.tell()+step) if file.tell()>=os.path.getsize(log_path): file.seek(file.tell()-step) file.readline() break file.readline() line=file.readline().strip() for line in file: line=line.strip() words=line.split(' ') if(regex_minutes.search(words[3])): minutes_count+=1 print(minutes_count) def main(log_path): previous_minutes=generate_previous_minutes() print(previous_minutes) check_logs(log_path,previous_minutes) if __name__ == '__main__': log_path=sys.argv[1] main(log_path)