• Apache日志分析


    Apache日志统计举例

    wKioL1N8bj3jkyGXAANQAg30gAg046.jpg

    加些来了解一下如何统计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文件,并统计对应文件发生次数,这条命令对于网站日常分析是非常有帮助的,大家可以灵活使用。

    wKiom1N8bd3QftuuAAIJKoLkZBM371.jpg

     (12)用goaccess工具分析

    GoAccess是一款开源、实时,运行在命令行终端下的web日志分析工具。该工具提供快速、多样的HTTP状态统计,如果你觉得以上管道、脚本麻烦的话,请用这个工具试试吧。

    Debian Linux安装:

    #ape-get install goaccess

    #goaccess -f /var/log/apache2/access.log

    运行效果如下:

    wKiom1Sn2lrQvEP0AATCFu_vnjE913.jpg

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

    wKioL1Sn2-GSvg8eAAR-bOsrXzk253.jpg

    注意:以上工具和技巧同样适用于Nginx、Squid的访问日志。

  • 相关阅读:
    Linux下semaphore的使用 进程间互斥的一个好方法
    CURL编程:什么是NonASCII平台,如何取得页面的charset
    C++中的重载(Overload), 覆盖(Override)和隐藏(Hide)
    system调用虽然用了exec,但是fd, signal这些还是会保留父进程的,be careful
    addr2line,可以根据一个地址打印出对应的代码行
    POSIX Threads Programming 阅读笔记(来自劳伦斯利物浦实验室的文章)
    [Gammu]setlocale和bindtextdomain函数的用法
    常用编码
    用PL/SQL画直方图
    窗体的关闭
  • 原文地址:https://www.cnblogs.com/chenguang/p/4271963.html
Copyright © 2020-2023  润新知