zoukankan      html  css  js  c++  java
  • 日志分析常用命令

    下面这3个命令是非常好用的日志分析命令,以apache的日志文件access_log为例 

    1访问次数最多的IP TOP10

    当网络流量突然持续异常时,很有可能是有恶意访问,最快的解决方式就是找出访问量最多的几个ip,暂时禁止其访问,然后再仔细观察 

    # cat access_log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10 

    2被访问次数最多的URL TOP10 

    了解哪些Url资源的访问量最大,可以帮助我们有针对性的进行优化 

    # cat access_log | cut -f7 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10 

    3被请求资源中大小最大的 TOP10

    文件大小太大的话会严重影响访问速度,有必要找出大文件进行分析 

    # cat access_log | sort -k 10 -n -r | head -10 

    命令解释 

    这几个命令都是使用了管道“|”把多个命令进行连接,上一个命令的结果交给下一个命令来处理
    cat
    显示文件内容
    cut
    是一个选取命令,就是将数据以行为单位进行分析,取出我们想要的
    -d : 自定义分隔符,默认为制表符
    -f : 与-d一起使用,指定显示哪列
    第一个命令中的:cut -f1 -d " "
    含义:以空格进行分割,显示结果中的第一列
    sort
    将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
    没有参数时就是整行排序
    -t : 分隔符,默认是用 [tab] 键来分隔
    -k : 选择以哪列进行排序
    -n : 使用数字格式进行排序,默认是以文字型态来排序的
    -r : 反向排序
    uniq
    首先比较相邻的行,然后除去第二行和该行的后续副本,重复的行一定要相邻,所以通常与 sort 联合使用,先用 sort 进行排序,然后使用 uniq 去重
    -c : 在输出行前面加上每行出现的次数
    head
    显示结果中头部区域
    -10 : 显示头部的10行

    综合解释 

    日志文件的内容示例
    184.195.232.39 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-nav.js HTTP/1.1" 304 -
    184.195.232.39 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-toggle.js HTTP/1.1" 304 -
    184.195.232.38 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-toggle.js HTTP/1.1" 304 -
    以第一个命令(查看访问量最大的前10个IP)为例
    # cat access_log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10
    cat access_log
    先读取 access_log 的内容
    cut -f1 -d " "
    然后对每行以空格进行分割,只显示第一列(日志的第一列为IP)
    输出的结果为:
    184.195.232.39
    184.195.232.39
    184.195.232.38
    sort
    接下来对IP进行升序排序
    输出的结果为:

    184.195.232.38
    184.195.232.39
    184.195.232.39
    uniq -c
    删除重复的IP,删除的同时记录下相同的IP数量,显示到IP的前面
    输出的结果为:
    1 184.195.232.38
    2 184.195.232.39
    sort -k 1 -n -r
    对第一列以数字格式倒序排序
    输出的结果为:
    2 184.195.232.39
    1 184.195.232.38
    head -10
    只显示头10条

  • 相关阅读:
    Linux实战(2):Linux传输文件
    Linux实战(1):装机一键设置脚本初级版
    Docker实战(4):Docker错误记一笔
    Docker实战(3):Tomcat部署
    Docker实战(5)升级Docker版本后的报错
    Promise
    创建数据库
    wepy中组件之间通信方法
    javascript —— 禁止通过 Enter 键提交表单
    input禁止复制、粘贴、剪切
  • 原文地址:https://www.cnblogs.com/meslog/p/5092281.html
Copyright © 2011-2022 走看看