【问题标题】:Tool for parsing nginx log解析nginx日志的工具
【发布时间】:2012-05-18 06:43:33
【问题描述】:

我计划将网页请求的请求日志从 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 中。

谢谢

【问题讨论】:

  • 自己写这样的工具应该不会太难。我前段时间做过。
  • 任何指针 - 什么语言或任何开源工具的链接?
  • 正则表达式的基本知识将允许您使用任何语言进行操作。阅读正则表达式。
  • 没有什么比 rsyslog 更好更快了

标签: json mongodb nginx hive hdfs


【解决方案1】:

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

【讨论】:

【解决方案2】:

Logstash 是一个很好的工具来做这样的事情。 http://www.logstash.net

【讨论】:

    【解决方案3】:

    我会建议使用以下模式的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}
    

    对于错误日志:

     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})?
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2014-11-01
        • 2013-12-01
        • 1970-01-01
        • 2017-07-07
        • 1970-01-01
        • 2017-02-06
        • 2018-06-19
        • 1970-01-01
        • 2013-04-02
        相关资源
        最近更新 更多