人们在Unix中用来解析/分析日志文件的流行工具是什么?进行计数,查找唯一,选择/复制具有特定模式的某些行。请告知一些工具或一些关键字。因为我认为之前一定有类似的问题,但我对关键字一无所知。感谢。
答案 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
之类的东西,您也可以获得自定义解析器/分析器。否则,对于琐碎的搜索,任何脚本语言,如perl
,python
甚至awk
就足够了。
答案 4 :(得分:0)
任何允许您打开和读取文件的编程语言,都可以使用字符串/文本操作,例如Perl,Python,(g)awk,Ruby,PHP,甚至Java等。它们支持文件格式的模块正在解析,例如csv等。