免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 7654 | 回复: 36
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-09 13:16 |只看该作者 |倒序浏览
RT,要分析出每IP的访问数量和每IP的访问内容。
61.4.184.92 - - [05/Dec/2013:00:10:05 +0800] "GET /data/?areaid=329103324&type=observe&date=201312042349&appid=7fde98&key=BUyFU0GyXhzGNDIFEDMQaortggDQ= HTTP/1.1" 200 76 "-" "Dalvik/1.6.0 (Linux; U; Android 4.1.1; MI 2S MIUI/JLB23.0)" -
61.4.184.91 - - [05/Dec/2013:00:10:05 +0800] "GET /data/?areaid=101243506&type=observe&date=201301012336&appid=7cfdf9&key=oMqeris3J3IZ3CHkbOKd06X5NYg= HTTP/1.1" 200 77 "-" "Dalvik/1.4.0 (Linux; U; Android 4.0; US900G Build/GRK39F)" -
如示例数据中
1统计出每个用户请求的数量,(用户由appid字段的值来区分)
2每个用户请求的areaid和type,
3每个IP访问的数量
每天的日志有5G或者更多,这样的数据怎么处理?
在shell版块问了,用awk.效率有点低,perl是不是会比较快一些?
awk的代码:
/appid/&&/areaid/&&/type/{
        appid=gensub(/.*appid=([^&]*).*/,"\\1",1);
        areaid=gensub(/.*areaid=([^&]*).*/,"\\1",1);
        type=gensub(/.*type=([^&]*).*/,"\\1",1);
        IP=$1;

        a[appid]++;
        if(!x[appid,areaid]++)b[appid]=b[appid]?b[appid]" "areaid:areaid;
        if(!y[appid,type]++)c[appid]=c[appid]?c[appid]" "type:type;
        d[IP]++;
}

END{
        for(i in a)printf "appid:\t%s\ntimes:\t%d\nareaid:\t%s\ntype:\t%s\n\n",i,a[i],b[i],c[i];
        for(i in d)print i,d[i];
}

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
2 [报告]
发表于 2013-12-09 14:14 |只看该作者
perl 处理文本 大约是1G/分钟.

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
3 [报告]
发表于 2013-12-09 16:29 |只看该作者
传5MB左右数据~~测试下。

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
4 [报告]
发表于 2013-12-09 17:25 |只看该作者
本帖最后由 mcshell 于 2013-12-09 17:25 编辑

看了 shell版块那边的输出结果,凑了一个
  1. perl -lne '/^(\S+)[^=]+areaid=(\d+)\&type=([^&]+)\&[^&]+\&appid=([^\&]+)(?{$m->{"areaid=$4\ntype=$3\nappid=$2"}++;$n->{$1}++;})/;END{print "$_=$m->{$_}"for keys %$m;print "$_=$n->{$_}"for keys %$n}' file
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-12-09 18:50 |只看该作者
本帖最后由 yu34po 于 2013-12-09 18:58 编辑

mytestlog.gz (6.49 MB, 下载次数: 21)

回复 4# mcshell


  怎么传给你啊。今天忙了一天啊。。
上传到附件了

论坛徽章:
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
6 [报告]
发表于 2013-12-10 02:31 |只看该作者
数据无序
61.4.184.92 - - [05/Dec/2013:00:13:33 +0800] "GET /data/?areaid=101121405&appid=f63d32&date=201312042352&type=observe&key=lLHQDFH2fQR1IC2mxwlzv7uPBkE= HTTP/1.1" 200 10 "-" "SAMSUNG-Android" -
61.4.184.90 - - [05/Dec/2013:00:13:54 +0800] "GET /data/?areaid=101080801&type=observe&date=201312042352&appid=7c1429&key=cLX3kjDH4xin7TeXbA1jTfbKHnw= HTTP/1.1" 200 77 "-" "Dalvik/1.6.0 (Linux; U; Android 4.1.2; Coolpad 7268 Build/JZO54K)" -
61.4.184.92 - - [05/Dec/2013:00:13:54 +0800] "GET /data/?areaid=101320101%7C101340101&type=forecast&date=201312042352&appid=f63d32&key=xROq0%2FyUFz2d8ji6PatP%2Fes%2F%2BWQ%3D HTTP/1.1" 200 2346 "-" "SAMSUNG-Android" -

论坛徽章:
0
7 [报告]
发表于 2013-12-10 08:23 |只看该作者
回复 6# rubyish


    无序就没法弄了啊?

论坛徽章:
0
8 [报告]
发表于 2013-12-10 08:53 |只看该作者
回复 4# mcshell


    好像出来的结果不对。。没有times,其它的值也不对。

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
9 [报告]
发表于 2013-12-10 09:36 |只看该作者
额。这个玩意我只能说有些蛋腾。

如果是单纯的日志攻击分析的话,提供下我自己做的那个工具,你可以研究下。我是用正则做过滤条件的,https://github.com/smarttang/w3a_System
这个底层就是基于Perl写的。

1统计出每个用户请求的数量,(用户由appid字段的值来区分)
  appid 字段内容我没看到。。具体是在哪个部分能说说?
2每个用户请求的areaid和type,
  areaid和type可以尝试split切割日志后进行统计。
3每个IP访问的数量
  把Ip放入BS查询队列,每次check_item,如果有的话加1,没有则加入到check队列。

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


    try
  1. (?=.*appid=([^&]+))((?:\d{1,3}\.){3}\d{1,3}).*(?=.*areaid=([^&]+)).*type=([^&]+)
复制代码
{:3_201:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP