Apache日志分析
Apache日志统计举例

加些来了解一下如何统计Apache的访问日志,一般可以用tail命令来实时查看日志文件变化,但是各种的应用系统中的日志会非常复杂,一堆长度超过你浏览极限的日志出现在你眼前时,你会觉得非常无奈,怎么办呢?这时可以用grep、sed、awk和sort等筛选工具帮助你解决这个问题。下面总结了几个常见分析方法。
(1)查看IP($1代表IP)
#cataccess_log | awk '{print $1}'
(2)对IP排序
#cataccess_log | awk '{print $1}'|sort
(3)打印每一重复行出现的次数,“uniq -c”表示标记出重复数量。
#cataccess_log | awk '{print $1}'|sort|uniq -c
(4)排序并统计行数
#cataccess_log | awk '{print $1}'|sort|uniq -c|sort -rn|wc -l
(5)显示访问前10位的IP地址,便于查找攻击源
#cat access_log|awk '{print $1}'|sort|uniq-c|sort -nr|head -10
注意awk '{print$1',它表示取日志的第一段,如果换成别的日志,其IP地址在第3段那么就要改变相应数值。
(6)显示指定时间以后的日志($4代表时间)
#cat access_log |awk'$4>="[23/Jul/2012:01:00:01"' access_log
推荐大家在排错时,同时打开多个终端,比如在一个窗口中显示错误日志,在另一个窗口中显示访问日志,这样就能够随时获知网站上发生的情况。
(7)找出访问量最大的IP,并封掉(对排错很有帮助)
#cat access_log |awk '{print $1}'|sort|uniq -c|sort -nr |more
9999192.168.150.179
11 192.168.150.1
#iptables -I INPUT -s 192.168.150.179 -j DROP
#iptables -I INPUT -s 192.168.150.0/24 -j DROP
如果将上面的Shell做以下变形就可以得出访问量TOP 10
#cat access_log |awk '{print $1}'|sort|uniq -c|sort -nr |head -10
(8)找出Apache日志中,下载最多的几个exe文件(下载类网站常用,这里以.exe扩展名举例)
[root@localhost httpd]# cataccess_log |awk '($7 ~/.exe/){print $10 "" $1 ""$4""$7}' |sort -n |uniq -c |sort -nr |head -10
2 - 192.168.150.1[25/Jul/2012:05:46:05/test.exe
1 -192.168.150.152[25/Jul/2012:05:46:47/test.exe
使用如下命令:
#cat access_log |awk `($10 >10000000&& $7 ~/.exe/) {print $7}` |sort –n|uniq –c|sort –nr|head -10
这条命令经过增加一个>10000000的条件判断内容就可以显示出大于10MB的exe文件,并统计对应文件发生次数,这条命令对于网站日常分析是非常有帮助的,大家可以灵活使用。

(12)用goaccess工具分析
GoAccess是一款开源、实时,运行在命令行终端下的web日志分析工具。该工具提供快速、多样的HTTP状态统计,如果你觉得以上管道、脚本麻烦的话,请用这个工具试试吧。
Debian Linux安装:
#ape-get install goaccess
#goaccess -f /var/log/apache2/access.log
运行效果如下:

轻按下箭头,我们看看goaccess给我们呈现更多的统计数据吧,细心的读者发现BW N /A 带宽怎么没统计出来?下面我们在加一个 -b 参数试试吧,如下图所示。

注意:以上工具和技巧同样适用于Nginx、Squid的访问日志。
Apache日志分析的更多相关文章
- 如果"一切是IO"“一切是file”是成立的,那么上述的想法也一定可以实现吧 awk对apache日志分析 ---
定时执行 自动化处理 直接入库 再去读取这个file入库: root@VM---ubuntu:/var/log/apache2# awk '{print $1 "\t" $7}' ...
- Apache日志分析_shell命令行
说明: 1.我的日志预先设定好按日生成文件:"CustomLog "|/opt/apache/bin/rotatelogs /opt/apache/logs/www.website ...
- Linux下apache日志分析与状态查看方法
假设apache日志格式为:118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 30 ...
- Linux 下 apache 日志分析与状态查看[转]
假设apache日志格式为: 118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 3 ...
- Apache 日志分析(一)
日志格式: 101.38.166.177 – – [10/Jun/2016:14:19:19 +0800] “POST /wp-admin/admin-ajax.php HTTP/1.1” 200 1 ...
- Nginx/Apache日志分析脚本
1,查看apache进程: ps aux | grep httpd | grep -v grep | wc -l 2,查看80端口的tcp连接: netstat -tan | grep "E ...
- Apache 日志分析(二)
01.查看IP cat access_log | awk ‘{print $1}’ 02.对IP排序 cat access_log | awk ‘{print $1}’ | sort 03.打 ...
- Linux apache日志分析常用命令汇总
1.查看当天有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc –l 2.查看某一个页面被访问的次数: grep "/index.php&quo ...
- elk系列7之通过grok分析apache日志
preface 说道分析日志,我们知道的采集方式有2种: 通过grok在logstash的filter里面过滤匹配. logstash --> redis --> python(py脚本过 ...
随机推荐
- python ABC
因为项目需要,总是会有各种各样要重命名文件的场合,manual的方法当然不可取,bat的方法又感觉不够强大,所以就从零开始学python,就为了能够自动批量修改文件名,倒腾了一个周六,总算可以了 :) ...
- Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
问题1:ORA-12154: TNS: 无法解析指定的连接标识符 在一台服务器上部署了Oracle客户端,使用IP/SID的方式访问,老是报ORA-12154错误,而使用tnsnames访问却没有问题 ...
- # C/C++的笔试题目
p,li { white-space: pre-wrap } # C/C++的笔试题目 + include<> 和include"" 的区别 + sizeof操作符与字 ...
- Xcode编程环境经验笔记(持续汇总)
1.工程路径设置(Search Paths) Header Search Paths:$(SRCROOT)/include Library Search Paths:$(SRCROOT)/lib $( ...
- 短链(ShortURL)的Java实现
什么叫短链或短址? 就是把长的 URL 转成短的 URL, 现在提供这种服务的有很多公司,我们以google家的 URL shortener 服务: http://goo.gl/ 为例. 任何长网址都 ...
- <<Vector Calculus>>笔记
现在流行用Exterior Caculus, 所以个人觉得Matthews这本书有点过时了. 想学Vector Calculus的话,推荐<Vector Calculus, Linear Alg ...
- PICT安装与使用
一.PICT简介 PICT工具是在微软公司推出的一款成对组合的命令行生成工具,下载地址http://download.microsoft.com/download/f/5/5/f55484df-849 ...
- java.lang.ClassCastException: com.bjsxt.registration.model.User_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
1.懒加载 因为此时用的load懒加载机制,到jsp页面在发送sql语句的时候session已经关闭了.所以会报以上错.可以添加过滤器,使session在请求响应完成后再关闭. 过滤器要配置在stru ...
- 菜单栏被flex页面遮挡解决办法
- Jmeter测试数据库
1.创建线程组 2.右键 Thread Group -> add ConfigElement -> JDBC Connection Configuration创建一个JDBC配置 (这有个 ...