免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yu34po
打印 上一主题 下一主题

每天5G的nginx日志,需要怎么分析? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-12-10 09:49 |只看该作者
回复 10# mcshell


    这是啥?

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
12 [报告]
发表于 2013-12-10 09:57 |只看该作者
回复 11# yu34po


    取无序的字段

论坛徽章:
0
13 [报告]
发表于 2013-12-10 09:59 |只看该作者
回复 12# mcshell


   

论坛徽章:
0
14 [报告]
发表于 2013-12-10 10:05 |只看该作者
回复 9# 墨迹哥


    以appid为用户进行统计的,areaid和typd都是基于appid进行统计,"appid=439743",一般都是这样的字段,后面的那六位数字,
还有啥,主要就是基于appid为key的value值,

论坛徽章:
0
15 [报告]
发表于 2013-12-10 11:00 |只看该作者
本帖最后由 weizhulinux 于 2013-12-10 11:12 编辑

没那么复杂
apache或者nginx 日志 分析
5G的日志,用8核16G内存的1u服务器分析
得出基本目标参数为ip,uv,pv,停留时间,跳出率,退出率,对全部访问过的页面按访问次数降序统计,对用户按用户访问次数降序排序
耗时大约30分钟

可以以滚动日志----每小时产生日志为单位进行分析

分析最好用两级分析
第一级是单进程的,按分析目标生成一堆非常格式化的中间结果,就是对日志原文件进行预处理,预处理生成目标也是文本文件,格式可以如下
比如分析目标是哪些用户访问过哪些url,并且该用户对这些url访问过多少次,对这个目标,生成以下格式中间文件
uid1  url2
uid2 url3
uid1 url4
。。。。
第二级perl分析,对上一步生成的中间结果进行统计,产生结果
需要注意的是,对每个目标结果的分析,都应该产生相应的中间结果,这样,对于时间跨度比较大的分析,分析样本的文件体积会大幅缩小,降低计算量和io消耗
第二级就可以是多进程了,针对每个分析目标,启动一个perl分析脚本,对相应的中间结果进行分析,这样可以充分利用服务器资源,加快分析。

这样做的好处是:
中间文件可以保存下来,如果你要出一个周统计,就把这些中间文件整个过一遍就可以出结果了,不需要你再去操作原文件,原文件体积太大。

需要用到的perl相关的技术,一些数据结构
正则,子表达式的提取
hash表,红黑树也可
heap堆排序,建议用斐波那契那个堆排序
这些东西在cpan上有相应库,哪来用即可

论坛徽章:
0
16 [报告]
发表于 2013-12-10 11:40 |只看该作者
回复 15# weizhulinux


    关键是我连perl都不会。。。

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
17 [报告]
发表于 2013-12-10 14:23 |只看该作者
MS 复杂{:2_170:}

论坛徽章:
0
18 [报告]
发表于 2013-12-10 14:29 |只看该作者
没事,只要你写过代码,一天就学会了,别恐惧啊
用不了多少代码,倒是数据结构的使用,可能一下不太习惯

   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
19 [报告]
发表于 2013-12-11 00:14 |只看该作者
回复 10# mcshell

3Q~   
先收藏,再慢慢研究,谢谢了。

   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
20 [报告]
发表于 2013-12-11 07:42 |只看该作者
kankan:
  1. #!/usr/bin/perl
  2. my $log = '/tmp/dl/mytestlog';
  3. open my $f, $log or die "$log: $!";
  4. my ( %ip, %id );

  5. while (<$f>) {
  6.     my ($ip) = /^(\S+)/;
  7.     my %a = /(areaid|type|appid)=(\w*)[%&]/g;
  8.     $ip{$ip}++;
  9.     next if !$a{appid};
  10.     $id{ $a{appid} }{c}++;
  11.     $id{ $a{appid} }{type}{ $a{type} }++     if $a{type};
  12.     $id{ $a{appid} }{areaid}{ $a{areaid} }++ if $a{areaid};
  13. }

  14. while ( my ( $k, $v ) = each %id ) {
  15.     print "id:\t", $k, $/;
  16.     print "times:\t", $v->{c}, $/;
  17.     print "type:\t", join( ', ', keys %{ $v->{type} } ), $/;
  18.     print "areaid:\t", join( ', ', keys %{ $v->{areaid} } ), $/, $/;
  19. }

  20. print $/;

  21. while ( my ( $k, $v ) = each %ip ) {
  22.     print "$k\t$v$/";
  23. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP