读取Apache访问日志,查看每一个独立客户端连接获得的字节数

ubuntu中apache2的日志文件位于:

/var/log/apache2

代码:

# coding=utf-8
import sys

‘‘‘
数据
127.0.0.1 - - [10/Jan/2017:10:08:16 +0800] "POST /cgi-bin/login.py HTTP/1.1" 200 335 "-" "curl/7.35.0"
‘‘‘
def dictify_logline(line):
    split_line = line.split()
    return {
        "remote_address": split_line[0],
        "status": split_line[8],
        "bytes_sent": split_line[9]
    }

def generate_log_report(logfile):
    report_dict = {}
    for line in logfile:
        line_dict = dictify_logline(line)
        print line_dict
        try:
            bytes_send = int(line_dict["bytes_sent"])
        except ValueError:
            continue
        #统计每一个ip,对应发送的字节数
        report_dict.setdefault(
            line_dict["remote_address"],
            []).append(bytes_send)
    return report_dict

if __name__ == "__main__":
    if not len(sys.argv) > 1:
        sys.exit(1)
    infile_name = sys.argv[1]
    try:
        infile = open(infile_name, ‘r‘)
    except IOError:
        print ‘You must specify a valid file to parse‘
        sys.exit(1)

    log_report = generate_log_report(infile)
    print log_report
    infile.close()

#正则表达式提取数据
import re
log_line_re = re.compile(‘‘‘(?P<remote_address>\S+) #IP ADDRESS
\s+  #whitespace
\S+  #remote logname
\s+  #whitepsace
\S+  #remote user
\s+  #whitespace
\[[^\[\]]+\] #time
\s+  #whitespace
"[^"]+" #first line of request
\s+  #whitesapce
(?P<status>\d+)
\s+  #whitespace
(?P<bytes_sent>-|\d+)
\s*
‘‘‘, re.VERBOSE)

def dictify_logline(line):
    m = log_line_re.match(line)
    if m:
        groupdict = m.groupdict()
        if groupdict[‘bytes_sent‘] == ‘-‘:
            groupdict[‘bytes_sent‘] = ‘0‘
        return groupdict
    else:
        return {
            "remote_address": None,
            "status": None,
            "bytes_sent": "0"
        }

效果:

时间: 2024-10-20 05:42:52

读取Apache访问日志,查看每一个独立客户端连接获得的字节数的相关文章

LAMP架构(apache用户认证,域名重定向,apache访问日志)

一.apache用户认证 用户认证就是打开一个网站.会让你输入用户名和密码.对了才会让你访问HTTP, vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 编辑内容如下 <Directory /data/wwwroot/www.123.com> //指定认证的目录 AllowOverride AuthConfig //这个相当于打开认证的开关 AuthName "123.com user auth" //自定义认证的名

LAMP(5)域名跳转、Apache访问日志、访问日志不记录静态文件、访问日志切割

                            域名跳转    SEO(Search Engine Optimization)搜索引擎优化是一种利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式.SEO的目的理解是:为网站提供生态式的自我营销解决方案,让网站在行业内占据领先地位,从而获得品牌收益   一个网站是通过域名来判断的.   域名跳转:定义一个状态码,301永久重定向(通常都是同301,会降低原来域名权重,把权重定义到新的域名.)                

配置apache访问日志和日志切割

配置apache访问日志和日志切割 1.打开apache主配置文件,命令:vim /usr/local/apache2/conf/httpd.conf,找到log_config_module模块,可以看到两条logformat(日志格式),如下图所示: 2.添加自定义的logformat(日志格式),命名为aming如下图所示: 保存退出! 3.打开虚拟主机配置文件,命令:vim /usr/local/apache2/conf/extra/httpd-vhosts.conf,找到<Virtual

LAMP架构(apache访问日志不记录静态文件,静态元素过期时间,apache日志切割)

一.apache访问日志不访问静态文件 浏览器打开后按f12会会出现一个界面,点network,会出现很多请求,访问日志里会记载,有些静态的图片或者文件也会记载,太浪费磁盘空间和磁盘io.所以我们要让日志不记录静态文件 [[email protected] ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf SetEnvIf Request_URI ".*\.gif$" img SetEnvIf Request_URI &

11.18 Apache用户认证11.19 11.20 域名跳转11.21 Apache访问日志

11.18 Apache用户认证更改虚拟主机内容vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf增加用户名与密码? /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming-c是创建 -m指定类型查看生成的密码文档内容上面已经他去了.htpasswd目录,再创建用记就不需要-c在wi上指定域名hostsC:\Windows\System32\drivers\etc认证:没有

四十一、Apache用户认证、域名跳转、Apache访问日志

一.Apache用户认证 功能是用户在访问网站时,需要输入用户名和密码才能进入网站.一些重要站点或网站后台通常加用户认证,目的是保证安全. # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <Direct

Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间

一.Apache访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //改为如下 把虚拟主机配置文件改成如下: <VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.111.com ServerAlias 111.com SetEn

Spark-再次分析Apache访问日志

分析日志的包 自己编译下: sbt compile sbt test sbt package ApacheLogParser.jar 对于访问日志简单分析grep等利器比较好,但是更复杂的查询就需要Spark了. 代码: import com.alvinalexander.accesslogparser._ val p = new AccessLogParser val log = sc.textFile("log.small") //log.count //分析Apache日志中40

apache访问日志管理

1.访问日志 在之前的虚拟主机配置文件中,有两行日志相关的配置,末尾的combined是日志的格式类型  ErrorLog "logs/111.com-error_log"  CustomLog "logs/111.com-access_log" combined 在apache的主配置文件中定义了如下的日志格式     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i