2017-08-08 7 views
2

私の質問はlogstashのgrokフィルタについてです。 logstashフィルタについては、ログファイルを解析する必要があります。grokのカスタム正規表現

2017年7月31日09以下のサンプル・ログ・ステートメント:01:53135 - INFO [QuorumPeer [MYID = 1]/0:0:0:2181:0:0:0:0:0 ZooKeeperServer 617] @ - クライアント/10.191.202.89:56232

のために交渉タイムアウト5000とのセッション0x15d964d654646f4を設立、私は正規表現を使用して、[]の間で文を解析したいが、任意の成功を取得していませんか?ライン

  1. QuorumPeer上方から[MYID = 1]/0:0:0:0:0:0:0:0:2181は、IDをスレッドにマップされなければなりません。誰かがこのための正規表現で私を助けることができる
  2. ZooKeeperServer
  3. クラス名にマッピングする必要があり、行番号

でマッピングする必要がありますか? 1+ワード文字、そして0+ /以外の文字: - リテラル[

  • (?<threadid>\w+[^/]*/[\d:]+) - グループ "スレッドID"

  • +0

    はあなたが既に試したものを追加することはできますか? – TehSphinX

    +0

    confファイル全体を投稿すれば、これがどれくらい正確に行われているのか分かりますか?私は一日中、カスタム正規表現を作成する方法を理解しようと努力してきました。そして、キバナデバッガでも、私はそれを正しく行うことができません。ありがとう – Elijah

    答えて

    1

    あなたは

    \[(?<threadid>\w+[^/]*/[\d:]+):(?<classname>[^\]@]+)@(?<linenumber>\d+)\] 
    

    詳細

    • \[を使用することができます、/、次に1桁以上または:(これは調整可能ですあなたが合っていると思われるようなパターン。
    • :)それは(?<threadid>.*?[\d:]+)としても書くことができるが、それはその安全ではありません - コロン
    • (?<classname>[^\]@]+) - グループ「クラス名」:]以外の1以上の文字と@
    • @から@文字
    • (?<linenumber>\d+) - グループ "行番号":1桁以上
    • \] - リテラル]grokdebug.herokuapp.com

    オンラインテストの結果:

    enter image description here

    +0

    質問に答えるためにありがとう。私はハードコードQuorumPeer正規表現でしたくないです。以下のステートメントの場合は動作しません:[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn @ 178] – BobCoder

    +0

    @BobCoder答えを更新しました。 –