0

logstash の nginx カスタム ログ形式の使用に関する良い記事を見つけました。トピックのコメントの1つに次のものがあります。

注意: 2 つ (リファラー、ユーザー エージェント) から 4 つ (リクエスト メソッド、remote_user) をエンド ユーザーが設定できるため、JSON が無効になる可能性があります (つまり、ユーザー エージェントを "} に設定します)。

nginx が JSON を明示的にサポートしていない限り、手動で JSON を作成することはお勧めしません。

この問題を回避するには、カスタム ログ形式をどのように使用すればよいですか?

4

3 に答える 3

3

コンテンツを含む grok を作成する

NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}

そしてフィルター

filter {
    grok {
        patterns_dir => ["Grok_DIR"]
        match => { "message" => "%{NGINXACCESS}" }
    }
}
于 2014-12-01T02:25:18.863 に答える
0

nginxの最近のバージョンでは問題ないと思います:

nginx 1.1.6 の変更点 2011 年 10 月 17 日

*) Change: now the 0x7F-0x1F characters are escaped as \xXX in an
   access_log.

nginx 0.7.0 での変更点 2008 年 5 月 19 日

*) Change: now the 0x00-0x1F, '"' and '\' characters are escaped as \xXX
   in an access_log.
   Thanks to Maxim Dounin.
于 2014-07-14T18:15:27.787 に答える