1

AWS で ELB のアクセス ログを有効にして、logstash + elasticsearch + kibana のセットアップに送信しています。私はlogstashのgrokフィルターを使用して、ログを解析してkibanaで表示およびソートできる個別のフィールドにしていますが、Amazonがそれらのログで提供する最後のフィールドである「リクエスト」フィールドを解析するのが困難です。実際には3つの部分が含まれています。HTTP メソッド、URL 自体、および HTTP バージョン。

これらの 3 つを使用できる独立したフィールドに分離するにはどうすればよいですか?

ありがとうベンヤミン

4

1 に答える 1

1

grok フィルターの最後の要素を置き換えるために、このようなものはどうでしょうか?

\"%{WORD:verb} %{NOTSPACE:request} HTTP/%{NUMBER:httpversion}\"

これまでlogstashを実際に管理したことはありませんでしたが、組み込みフィルターのソースコードを見て、これをまとめました。その一部は、他の組み込みフィルターの上に構築されていることが明らかです。

https://github.com/elasticsearch/logstash/blob/v1.4.1/patterns/grok-patterns

このパターンは 3 つの要素を抽出する必要があります。「動詞」は「GET」をキャプチャし、「httpversion」は数値の HTTP バージョンをキャプチャし、「リクエスト」は残りをキャプチャします。

メッセージ内の二重引用符リテラルをエスケープするためのバックスラッシュについても推測していることは認めますが、これは、ELB がログに記録するものと一致するようにリテラル クォートを含める論理的な方法のようです。ここで示した最後の二重引用符は、フィルター文字列式の終了引用符ではないことに注意してください。これは各行の最後のものと一致するため、その引用は上記の直後に続きます。

于 2014-06-12T14:34:11.973 に答える