Home >Backend Development >Python Tutorial >Use python script to monitor concurrency

Use python script to monitor concurrency

高洛峰
高洛峰Original
2016-10-18 13:20:471534browse

This script is used to query the concurrency of the log in the past minute. The concurrency unit is 1 minute. The result is printed in the standard output. It can be used with some software to achieve real-time concurrency monitoring of the log, such as 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)


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn