0

私は、クライアントがredisに送信し、logstashでredisから読み取り、それをESに送信する荷送人として 'filebeat'を使用しています。Logstashフィルタ - 半分のjsonライン解析

私は、次の例のライン解析しようとしている:私は、フィールド名を持つようにしたい最後に

09:24:01.969 watchdog - INFO - 100.140.2 PASSED: Mobile:Mobile[].popover["mc1814"].select(2,) :706<<<<<<<<<<<<<<<<<<< {"actionDuration":613}

を:値を持つ「actionDuration」:613

をあなたが見ることができるようにそれは部分的にjsonだ。 - 私はadd_fieldとmatchでgrokフィルタを使用しようとしましたが、私はfilebeatとlogstashのいくつかの設定を変更しようとしました。

私は基本的な設定を使用しています: filebeat.conf:

filebeat.prospectors:

  • input_type: log

    paths:

    • /sketch/workspace/sanity-dev-kennel/out/*.log

    fields:

    • type: watchdog
    • BUILD_ID: 82161

が、私が好むfilebeat側でそれを行う可能性がありますが、それはLogstash側にも良いことだ場合。

どうもありがとう、 モシェ

答えて

0

部分の書式設定のこの種のは、最高のLogstash側ではなく、荷主に処理されます。 FileBeatで利用可能なフィルタ/変換は、これまでのものではありません。しかし、Logstashフィルタパイプラインはあります。

この基本的な例では、受信メッセージを2つのフィールドに分割します。 plain_prefixおよびjson_segmentである。 json{}フィルタを使用して、JSONデータをイベントに解析します。最後に、mutate {}フィルタを使用して、すでに解析されて含まれているので、イベントからjson_segmentフィールドを削除します。

注:.*?は、このフィルタでは重要です。このようにして、最初の{以降はJSONセグメントの一部とみなされます。 .*を使用すると、JSONセグメントはの最後の{のすべてになります。これは複雑なJSONデータ構造に問題があります。

+0

素早く答えてくれてありがとう、 私は次のエラー取得しています: 「json_errorを」:「エラーはJSONをデコード:JSON:型マップの移動値にアンマーシャリング番号[文字列]インターフェース{}できない」、 –

+0

それはdoesnの私にはうまくいきません、私はELK 5.1.1のスタックバージョンを使用しています、BTWには最後にjsonのないログがいくつかあります。 –

+0

それを解決するアイデアがありますか? –

関連する問題