2

我计划将网页请求的请求日志从 mongo 迁移到 nginx 日志。是否有一些解析器/工具可用于解析日志并将其转换为 JSON,以使它们看起来更有意义,以便我可以查询它们?

当前的 mongo 日志格式:

{ "_id" : ObjectId("4f911646e4b00a6b7b103c77"), "mUpdatedAt" : NumberLong("1334908486975"), "playerError" : "", "playerState" : "paused", "requestUuid" : "d2c8c8aa-aeab-4f87-8db0-ed699ba19249" }

Nginx 日志格式:

115.249.242.17 - - [18/May/2012:05:40:49 +0000] "GET /flashlayer?videoId=NaN&duration=26.091&videoLoadTime=216&videoBitRate=1708 HTTP/1.1" 200 86 "-" "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0"

我可以在 mongoDB 上查询,我也希望对 nginx 日志进行同样的查询,为此我需要一个简单的解析器来读取 nginx 日志并转换为 JSON、CSV 或将其放入 hive、HDFS 中。

谢谢

4

4 回答 4

3

也许将您的 nginx 日志格式配置为更像 JSON 对您来说会是更好的解决方案。 http://nginx.org/r/log_format

于 2012-05-18T16:57:36.903 回答
2

Logstash is a great tool for doing stuff like that. http://www.logstash.net

于 2013-01-31T15:29:21.217 回答
1

我会建议使用以下模式的logstash:

对于 access.log :

NGINXACCESS %{IPORHOST:clientip} - %{USERNAME:remote_user} \[%{HTTPDATE:time_local}\] %{QS:request} %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}

对于error.log:

 NGINXERROR (?<timestamp>%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}[- ]%{TIME}) \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage}(?:, client: (?<clientip>%{IP}|%{HOSTNAME}))(?:, server: %{IPORHOST:server})(?:, request: %{QS:request})?(?:, host: %{QS:host})?(?:, referrer: \"%{URI:referrer})?
于 2014-07-08T08:23:25.070 回答
0

NodeJs 模块,如果您决定安装 Node.js,您也可以在命令行上使用它。 https://npmjs.org/package/ginx

于 2013-04-30T00:01:14.037 回答