3

人们在 Unix 中用来解析/分析日志文件的流行工具是什么?进行计数,查找唯一性,选择/复制具有特定模式的特定行。请提供一些工具或一些关键字。因为我相信以前肯定有类似的问题,但我对关键字一无所知。谢谢。

4

5 回答 5

4

我发现许多日志格式没有使用正确的唯一字段分隔符分隔列是一个巨大的失败。不是因为这样最好,而是因为它是 unix textutils 对表数据进行操作的基本前提。相反,他们倾向于使用空格作为分隔符并引用可能包含空格的字段。

我对 Web 日志分析所做的最实用的简单更改之一是保留 nginx Web 服务器生成的默认 NCSA 日志格式,而是使用制表符作为字段分隔符。

突然间,我可以使用所有原始的 unix textutils 进行快速查找,尤其是 awk!仅打印用户代理字段包含 Googlebot 的行:

awk 'BEGIN {FS="\t"}  $7 ~ /Googlebot/ { print; }' < logfile

查找每个唯一请求的请求数

awk 'BEGIN {FS="\t"}  { print $4; }' < logfile | sort | uniq -c | sort -n

当然还有很多组合可以找到特定的访问者。

于 2010-03-10T23:08:34.480 回答
3

对于定期的夜间检查有几个不同的脚本/usr/share/logwatch/scripts/services用于检查 syslog 中的特定内容(如 Web 服务器内容、ftp 服务器内容、sshd 相关内容等)。默认安装启用其中的大多数,但您可以根据需要启用/禁用,甚至可以编写自己的脚本。

对于实时观看,有multitail

于 2010-03-10T22:45:34.060 回答
2

您可能想尝试lnav,一个基于 curses 的日志分析器。它具有日志解析器所期望的大部分功能,例如,多个日志文件中的日志消息按时间顺序排列,支持多种日志格式,突出显示错误/警告消息,用于在错误/警告消息之间导航的热键,支持 SQL查询等等。查看该项目的网站以获取屏幕截图和详细的功能列表。

于 2011-07-20T07:43:01.053 回答
1

看看这里列出的一些通用日志解析器。如果您使用类似的东西syslog,您可能也可以获得自定义解析器/分析器。否则,对于琐碎的搜索,任何脚本语言如perl,python甚至awk就足够了。

于 2010-03-10T22:38:32.403 回答
0

可以使用任何允许您打开和读取文件、进行字符串/文本操作的编程语言,例如 Perl、Python、(g)awk、Ruby、PHP,甚至 Java 等。它们支持您正在解析的文件格式的模块,例如csv等。

于 2010-03-11T00:02:34.430 回答