2017-01-15 1 views
-1

ブラケットに一貫したgrokエラーが発生しています。私はブラケットを '\'でエスケープしました。私もワイルドカードでそれをだまそうとしました。 Grokデバッガは正しく解析されますが、本番環境では解析できません。括弧のない他のパターンが解析されているのと同じ動作を示す2つのエントリがあります。Grokが角かっこで失敗する

'%{WORD:type} [%{INT:pid}]'が問題です。

#Jan 15 13:35:44 firewall sshd[1468]: Accepted publickey for john from 192.168.1.16 port 62529 ssh2: ..... 
AUTHLOG1 (%{SYSLOGTIMESTAMP:timestamp} %{WORD:src_host} %{WORD:type}\[%{INT:pid}\]: Accepted publickey for %{USERNAME:user} from %{IP:src_ip} port %{INT:port} %{WORD:protocol}*) 

#Jan 15 13:35:44 firewall systemd-logind[1221]: New session 481 of user john. 
AUTHLOG4 (%{SYSLOGTIMESTAMP:timestamp} %{WORD:src_host} (?<type>[a-z-]+)\[%{INT:pid}\]: Removed session %{INT:session}.) 

AUTHLOG (?:%{AUTHLOG1}|%{AUTHLOG2}|%{AUTHLOG3}|%{AUTHLOG4}|%{AUTHLOG5}|%{AUTHLOG6}) 

if [type] == "authlog" { 
     grok { 
       match => { "message" => "%{AUTHLOG}"} 
       patterns_dir => ["/etc/logstash/grok"] 
     } 
    } 
+0

[ツアー](https://stackoverflow.com/tour)にアクセスし、[How To Ask](https://stackoverflow.com/help/how-to-ask)を読み、[MCVE] (https://stackoverflow.com/help/mcve)。 –

+0

エラーの内容 – sweaver2112

+0

私は木場で「tags:_grokparsefailure」を取得しています。 Logstashは正しく解析していません。 –

答えて

0

あなたはその設定でたくさん噛んでいます。

まず、syslogのものを最初に取り出してみてください。それぞれのラインに共通しているので、ラインの一致と解除が容易で、他のパターンでよりユニークなものだけが解析されます。言い換えれば、 "日付A |日付B |日付C"をしないで、日付を引いてからA、B、Cを探します。

次に、使用しようとしている正規表現がどのように見えるかを想像してください。私は "|"非常に小さなパターン( "On | Off"タイプのもの)を除いて。私は、パフォーマンスを測定していないが、私はそれが書かれて見ることを好む:

match => { message => [ 
    "Pattern 1 %{WORD} ...", 
    "Pattern 2 %{WORD} ..." 
    ] 
} 

あなたの本当の質問に答える開始するには、正規表現の括弧は、文字クラス、例えばを示すために使用されています"[a-z]" grokにあなたがリテラルブラケットを意味するようにするには、開いているブラケットだけをエスケープする必要があります。 "\ foo]"(閉じた括弧は、開いた括弧とペアにしないことによって魔法を失ったため)。読みやすさのために両方をエスケープするとうまくいくはずです(例:\ [foo \])。

あなたの例には、各入力行に適用する6つのパターンが含まれています。 grokparsefailureは、それらのどれも一致していないことだけを伝えます。理由を調べるには、一致すると予想される単一のパターンを見てください。エラーが明白でない場合は、パターンと入力行をgrokデバッガに渡します。パターンの後半を切り取り、一致するかどうかを確認します。あなたが壊れた部分を見つけるまで繰り返す。

あなたのケースでは、デバッガにパターンを貼り付けるだけで、入力に何も表示されていないときに、パターンの周りにかっこがあるのはなぜかと思いました。それらを取り出して(そして最後にアスタリスク)、私はそれが一致すると思います。

+0

アドバイスをいただきありがとうございます。ここで試すものがたくさんあります –

0

わかりました。どのように私が括弧を逃れたかとは何の関係もありませんでした。私は予約語 'type'を変数として使用しました。

関連する問題