【问题标题】:How to calculate number of unique response codes in an apache server log file?如何计算 apache 服务器日志文件中唯一响应代码的数量?
【发布时间】:2020-07-26 11:46:58
【问题描述】:

我刚刚开始了一份系统管理员工作。我得到了一个日志文件,其中包含一些响应代码(实际上它们太多了)。我需要列出使用的代码,例如,400、200、304、404。然后,我需要显示每个响应代码重复了多少次。对于最后一项任务,我这样做了:

less file name | grep -c "404"

但我仍然需要列出这些响应代码。

这是一个日志文件示例:

10.229.120.3|-|[12/Apr/2020:23:58:40 -0500]|/keepalive.html||200|10|1143|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:58:53 -0500]|/keepalive.html||200|10|2367|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:58:55 -0500]|/keepalive.html||200|10|1194|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:08 -0500]|/keepalive.html||200|10|2212|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:10 -0500]|/keepalive.html||200|10|1780|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:23 -0500]|/keepalive.html||200|10|1268|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:25 -0500]|/keepalive.html||200|10|1160|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:38 -0500]|/keepalive.html||200|10|1206|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:40 -0500]|/keepalive.html||200|10|1138|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:53 -0500]|/keepalive.html||200|10|1304|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:55 -0500]|/keepalive.html||200|10|2476|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384

【问题讨论】:

  • 没有看到日志,我们只能猜测。
  • 这是一个普遍的问题,适用于任何带有 HTTP 响应代码的日志文件。日志文件很大,不能在这里共享。这只是一个示例,但我需要找出整个文件中使用的响应代码。 10.229.120.4|-|[12/Apr/2020:23:45:38 -0500]|/keepalive.html||200|10|2197|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384 10.229 .120.3|-|[12/Apr/2020:23:45:55 -0500]|/keepalive.html||200|10|1806|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384 169.204。 192.216|-|[12/Apr/2020:23:45:59 -0500]|/NASAapp/clcs/Action/SubmitPlan||302|-|77570|HTTP/1.1|POST|-|- 169.204.192.216|- |[2020 年 4 月 12 日:23:45:59
  • 没有通用的方法来检测响应代码。日志文件的格式很重要,我们不知道。代码是否以括号、双引号、特定关键字之后/之前等形式显示?如果您只是 grep 查找 404,您可能会匹配日期字符串 (20200404) 或其他任何内容。
  • 请将日志示例包含在原始问题中,在评论中无法阅读。
  • 刚刚更新了原始问题以包含日志示例。代码采用这种格式|200|等...

标签: linux apache logfile http-response-codes


【解决方案1】:

awk:

awk -F'|' '{ a[$6]++} END{ for (i in a) print i "\t" a[i] }' logfile | sort -n

这会计算第六个字段的出现次数,并打印每个数组元素的状态代码和出现次数。然后按状态码对输出进行数字排序。

如果您希望输出按r逆序排列,请使用sort -nrk2

【讨论】:

  • 谢谢,这很有帮助!这是一个 bash 脚本,对吧?
  • 它是AWKsort,但如果您愿意,可以将其放入 bash 脚本中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 2017-03-31
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2014-02-26
  • 2011-03-06
相关资源
最近更新 更多