zoukankan      html  css  js  c++  java
  • python3 统计NGINX pv uv 最多IP访问

    说明: 我们NGINX的日志格式是, 第一列为IP  第七列为访问的地址, 可以把NGINX改成json格式的日志输出,那样更好,还可以在elk上利用IP地址做个访问地显示.

    #!/usr/bin/python3
    
    from collections import Counterimport datetime
    
    
    now_time = datetime.datetime.now()
    now_time_1 = now_time.strftime('%Y%m%d')   # 用来匹配切割日志后,文件后缀的时间
    nginx_PV = []
    nginx_Html = []
    file = '/root/access.log'
    
    
    def read_File(file):
        with open(file, 'r') as f:
            for line in f.readlines():
                set_PV(line)   # 获取PV
                set_Html(line)
    
    
    def set_PV(line):
        ip = line.split( )[0]
        nginx_PV.append(ip)
    
    
    def set_Html(line):
        Html = line.split( )[6]
        nginx_Html.append(Html)
    
        
    
    def set_max_IP(nginx_PV):
        lis = Counter(nginx_PV)
        liss = lis.most_common(10)
        print("出现最多的IP:")
        print('{ip:<20} {nums}'.format(ip='IP',nums='次数'))
        for li in liss:
            print('{ip:<20} {nums}'.format(ip=li[0],nums=li[1]))
    
    
    def set_max_html(nginx_Html):
        lis = Counter(nginx_Html)
        liss = lis.most_common(10)
        print("被访问最多的网页:")
        print('{str:<38} {nums}'.format(str='文件',nums='次数'))
        for li in liss:
            print('{html:<40} {nums}'.format(html=li[0],nums=li[1]))
    
    
    
    read_File(file)
    print("今日PV: ", len(nginx_PV))
    print("今日UV: ", len(set(nginx_PV)))
    set_max_IP(nginx_PV)
    set_max_html(nginx_Html)
  • 相关阅读:
    Linux之cd、pwd、mkdir、rmdir
    Linux之目录结构配置
    Linux之chgrp
    Linux之chown
    Linux之chmod
    Linux之用户组、文件权限详解
    Linux命令之shutdown
    Linux命令之man
    Git-.gitignore配置
    Linux内核移植到JZ2440
  • 原文地址:https://www.cnblogs.com/liuYGoo/p/12492690.html
Copyright © 2011-2022 走看看