在Unix中记录解析器/分析器

时间:2010-03-10 22:35:06

标签: unix parsing text-processing

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

5 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

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

答案 1 :(得分:3)

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

对于实时观看,有multitail

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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