2

Web ページ リクエストのリクエスト ログを 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に変換するか、ハイブ、HDFSに配置するための単純なパーサーが必要です。

ありがとう

4

4 に答える 4

3

おそらく、nginx ログ形式をより JSON に似たものに設定する方が、はるかに優れたソリューションになるでしょう。 http://nginx.org/r/log_format

于 2012-05-18T16:57:36.903 に答える
2

Logstash は、そのようなことを行うための優れたツールです。 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

Node.js モジュールをインストールする場合は、コマンド ラインでも使用できます。 https://npmjs.org/package/ginx

于 2013-04-30T00:01:14.037 に答える