合并日志文件可以使用 bash 的sort命令:

#sort -m -t " " -k  -o log_all access*.log

也可以使用  awstats 提供的 logresolvemerge.pl

#perl /usr/local/awstats/tools/logresolvemerge.pl -dnslookup= -showsteps access*.log >log_all
-showsteps 表示每8192行显示一次进度。
-dnslookup=100 表示用100个线程对 访问 IP进行dns解析。
优先使用 logresolvemerge.pl。因为在日志中时间混乱的情况下,使用 sort命令合并文件可能会在后面操作中报"Corrupted record"错误。
Corrupted record (date 20161210101739 lower than 20170109235927-20000)

以上命令,将需要分析的日志合并成一个 log_all文件

#perl awstats_configure.pl
#perl awstats.pl -config=www.mysite.com -update -showdropped -showcorrupted
#perl awstats_buildstaticpages.pl -config=www.mysite.com -month= -year=2016 -dir=/usr/local/awstats/wwwroot/

如果后期在日志中添加了其它列,例如添加了 referance 或user-agent, awstats会因为前后的列不匹配,而不能显示。这时需要在之前的日志中行尾添加 -

先找到添加了referance的第一行的行号

[root@iZ62jhlmsymZ tomcat_log]# grep -m 2 -n -C 2 '" " -' log_all
2027122-180.97.106.162 - - [24/May/2016:13:15:37 +0800] "GET /res/jqueryForm/jqueryForm.tar.bz2 HTTP/1.0" 404 -
2027123-125.35.62.66 - - [24/May/2016:13:15:38 +0800] "GET /xwzxBmdt/237575.jhtml HTTP/1.1" 200 10320
2027124:223.12.179.216 - - [24/May/2016:13:15:58 +0800] "GET /r/cms/taiyuan/red/images/wm_6.jpg HTTP/1.1" 200 - "http://www.mysite.com/" "Mozilla/5.0 (iPad; U; CPU OS 9_3 like Mac OS X; zh-CN; iPad4,2) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/2.9.5.735 U3/ Mobile/10A403 Safari/7543.48.3" " -
2027125:223.12.179.216 - - [24/May/2016:13:15:58 +0800] "GET /r/cms/taiyuan/red/images/wm_4.jpg HTTP/1.1" 200 - "http://www.mysite.com/" "Mozilla/5.0 (iPad; U; CPU OS 9_3 like Mac OS X; zh-CN; iPad4,2) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/2.9.5.735 U3/ Mobile/10A403 Safari/7543.48.3" " -
[root@iZ62jhlmsymZ tomcat_log]# sed -i 1,2027123s/'.$'/'\0 "-" "-"'/g log_all
[root@iZ62jhlmsymZ tomcat_log]# sed -n '2027121,2027124p' log_all
180.97.106.37 - - [24/May/2016:13:15:37 +0800] "GET /r/cms/www.bz2 HTTP/1.0" 404 - "-" "-"
180.97.106.162 - - [24/May/2016:13:15:37 +0800] "GET /res/jqueryForm/jqueryForm.tar.bz2 HTTP/1.0" 404 - "-" "-"
125.35.62.66 - - [24/May/2016:13:15:38 +0800] "GET /xwzxBmdt/237575.jhtml HTTP/1.1" 200 10320 "-" "-"
223.12.179.216 - - [24/May/2016:13:15:58 +0800] "GET /r/cms/taiyuan/red/images/wm_6.jpg HTTP/1.1" 200 - "http://www.mysite.com/" "Mozilla/5.0 (iPad; U; CPU OS 9_3 like Mac OS X; zh-CN; iPad4,2) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/2.9.5.735 U3/ Mobile/10A403 Safari/7543.48.3" " -
[root@iZ62jhlmsymZ tomcat_log]#

第一个指令 grep '"$' log_all表示查找 log_all 中以双引号结尾的行,并显示行号( -n ) 。为便于观察,我们使用 "-m 2 -C 2"参数使结果显示前后两行。结果显示,第2027124行开始,记录中含有 referance字段和 user-agent字段。

第二个指令 sed -i 1,2027123s/'.$'/'\0 "-" "-"'/g log_all 表示自第1行至第2027123行,在行尾加上“  "-" "-"”。 参数"-i"表示直接将修改的结果写入文件。

第三个指令是查看修改后的结果。

对以上日志格式,配置文件awastats.www.mysite.com.conf 中,LogFormat 的配置的值如下:

[root@iZ62jhlmsymZ tomcat_log]# grep ^LogFormat /etc/awstats/awstats.www.mysite.com.conf
LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
[root@iZ62jhlmsymZ tomcat_log]#

需要关注的参数:
Not viewed traffic * 里面包含了ua 为爬虫的数据,以及应答码为404错误等信息。

awstats是用于统计分析的,一些指标不能分析到,一些时候我们需要查相关的原始日志。这些情况可以考虑使用正则表达式工具直接对日志进行分析。

如果是 windows下的 log文件,在unix下使用正则表达式处理,需要将末尾的 \r\n 替换为 \n.可以使用 dos2unix命令,但如果日志中有二进制数据,会失败。这时需要使用 sed命令。

#sed -i -e 's/^M$/\n/g' log_all

-i 表示修改结果直接写入到文件。

-e 表示使用正则表达式

筛选日志中的源IP列表

[root@iZ62jhlmsymZ tomcat_log]# grep -o ^[-\.]* log_all | sort -u >log_ip_uniq.list

与攻击IP进行碰撞

[root@iZ62jhlmsymZ tomcat_log]# grep -x -F -f log_ip_uniq.list .sip.quchong.txt > crash.ip
[root@iZ62jhlmsymZ tomcat_log]# wc -l crash.ip
crash.ip

一共碰撞出234个IP.看看这234个IP访问频率。

 grep -o ^[0-9\.]* 234ip |sort | uniq -c

参数说明:

-f  要匹配的内容所在文件

-F 指示要匹配的内容以换行符分隔

-x 表示全行匹配

awstats 日志分析工具linux下的安装和使用的更多相关文章

  1. Linux 日志分析工具(logwatch)安装及使用

    Linux 日志分析工具(logwatch)安装及使用 日志是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态.但是日志管理又是一项非常枯燥的工作,如果需要管理 ...

  2. Linux 日志分析工具之awstats

    一.awstats 是什么 官方网站:AWStats is a free powerful and featureful tool that generates advanced web, strea ...

  3. 可视化日志分析工具Gltail的安装与使用

    可视化日志分析工具Gltail的安装与使用      GlTail.rb 是一款带有浓郁的 Geek 风格的可视化日志分析工具,它采用 Ruby 技术构建,并利用 OpenGL 图形技术进行渲染,呈现 ...

  4. PostgreSQL日志分析工具

    PostgreSQL日志分析工具 postgresqllinux PostgreSQL日志审计可以配合 pgbench.jmeter...测试工具制定测试计划测试性能,由于日志审计比较影响性能,在不需 ...

  5. 日志分析工具ELK配置详解

    日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...

  6. GoAccess日志分析工具使用文档

    ----Sevck 2016/3/4 17:24:13 #1软件说明: GoAccess是一款开源.实时,运行在命令行终端下的web日志分析工具.该工具提供快速.多样的HTTP状态统计,可以令管理员不 ...

  7. 强大的日志分析工具 -- NSLogger

    转:http://www.cnblogs.com/yingkong1987/p/3329945.html 强大的日志分析工具 -- NSLogger 源码:https://github.com/fpi ...

  8. Log Parser 微软强大的日志分析工具

    Log Parser(微软网站下载)是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件.XML 文件.CSV(逗号分隔符)文件,以及操作系统的事件日志.注册表.文件系统.A ...

  9. linux下MySQL安装登录及操作

    linux下MySQL安装登录及操作 二.安装Mysql 1.下载MySQL的安装文件 安装MySQL需要下面两个文件: MySQL-server-4.0.16-0.i386.rpm MySQL-cl ...

随机推荐

  1. DIV与SPAN的区别

    DIV 和 SPAN 元素最大的特点是默认都没有对元素内的对象进行任何格式化渲染.主要用于应用样式表(共同点). 两者最明显的区别在于DIV是块元素,而SPAN是行内元素(也译作内嵌元素). 详解:1 ...

  2. WP8:Unity3D之间的值传递

    在前面的讨论中,我们介绍了如何在Unity3D for WP8中使用高于.Net 3.5的第三方库,传送门:http://www.cnblogs.com/zhxilin/p/3311240.html ...

  3. Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能

    我们经常有这样一种需求,子表里新加或修改一数值后,要马上在主表里把它们的和显示在主表上.如果用插件来实现,可以实现求和,但页面上还要刷新一下才能显示正确.这时就考虑到用JS来实现这一功能,并自动刷新页 ...

  4. CoreCLR on Mac:体验managed exception handling

    C#测试代码: using System; class Program { static void A() { try { Console.WriteLine("Throwing an ex ...

  5. 真实世界:使用WCF扩展在方法调用前初始化环境

    OperationInvoker 介绍 OperationInvoker 是 WCF 运行时模型中在调用最终用户代码前的最后一个扩展点,OperationInvoker 负责最终调用 Service ...

  6. NODE-WEBKIT教程(12)全屏

    node-webkit教程(12)全屏 文/玄魂 目录 node-webkit教程(12)全屏 前言 12.1  和全屏有关的三个api Window.enterFullscreen() Window ...

  7. [C++] socket -7 [邮槽]

    ::利用邮槽实现windons进程通信 ::一般情况下CreateMailslot()常被使用在进程通信的服务器上,在客户端则是用函数CreateFile()打开指定的邮槽之后进行相关的操作. ::将 ...

  8. paip.提升效率--批量变量赋值 “多元”赋值

    paip.提升效率--批量变量赋值 "多元"赋值 ##石麻是批量变量赋值. 为一组变量赋值. 例子 1 <?php $my_array = array("Dog&q ...

  9. 好消息!Html5游戏和动画的福音

    今年基本都淡出了cocos2d-js的开发,更多集中在普通H5应用上,还有自己的Fanvas组件(http://code.tencent.com/),做canvas动画. 不过,最近回头一看WebGL ...

  10. 关于linux curl 地址参数的问题

    例如 url 为 http://mywebsite.com/index.PHP?a=1&b=2&c=3web形式下访问url地址,使用$_GET是可以获取到所有的参数然而在Linux下 ...