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)
  • 相关阅读:
    Maven插件之portable-config-maven-plugin(不同环境打包)
    redis
    MySQL之group_concat 配合substring_index查询
    Jmeter执行测试计划同时监听服务器性能PerfMon Metrics Collector
    【转】证书和编码
    [转]SSL/TLS协议运行机制的概述
    OC—MVC框架图解
    安卓intent
    day8---多线程socket 编程,tcp粘包处理
    day7---socket
  • 原文地址:https://www.cnblogs.com/liuYGoo/p/12492690.html
Copyright © 2011-2022 走看看