AWS日志分析工具解析NGINX日志

6

我试图使用AWS日志洞察来查询包含Nginx日志的日志组。

这是我在我的 EC2 实例上设置的日志格式:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

示例 NGINX 日志:

xx.xx.xx.xx - - [10/Nov/2020:15:28:30 +0530] "POST /xx HTTP/1.1" 200 57 "https://xxxx.in/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" "-"

我正在尝试使用日志分析工具和以下代码进行解析:

parse @message '* - - [*] "* * *" * * "-" "*"' as remote_addr, timestamp, request_type, location, protocol, response_code, body_bytes_sent

我遇到了以下错误:

Expression is invalid: parse@message'* - - [*] "* * *" * * "-" "*"'asremote_addr,timestamp,request_type,location,protocol,response_code,body_bytes_sent

需要任何帮助,将不胜感激

2个回答

22
你已经完成了99%的工作,唯一缺少的是匹配选择器和输出变量的数量,所以如果你将user_agent添加到你的列表中,它就会开始工作。

示例工作查询:

fields @message
| parse @message '* - - [*] "* * *" * * "-" "*"' as remote_addr, timestamp, request_type, location, protocol, response_code, body_bytes_sent, user_agent
| display request_type, location

4

如果加上引荐人和用户代理就更好了。

fields @timestamp, @message
| parse @message '* - - [*] "* * *" * * "*" "*"' as remote_addr, timestamp, request_type, location, protocol, response_code, body_bytes_sent, referrer, user_agent
| display @timestamp, remote_addr, request_type, location, protocol, response_code, body_bytes_sent, referrer, user_agent
| sort @timestamp desc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接