FileBeat JSONログの収集
5647 ワード
FileBeat JSONログの収集
前言
FileBeatを使用してJSONログを収集してlogstashまたはelasticsearchに転送します.FileBeatのバージョンは5.5.0、Elasticsearchのバージョンは5.6.8です.
ファイル構成
単純な構成
filebeatのjson収集の構成について、主に注意しなければならないのは以下のいくつかの構成項目です.#keys_under_root , false
json.keys_under_root: true
# key, key
json.overwrite_keys: true
#message_key json , multiline ,
json.message_key: message
# error.message
json.add_error_key: true
参考となる公式文書
https://www.elastic.co/guide/en/beats/filebeat/6.2/configuration-filebeat-options.html
上のいくつかの構成項目は、いずれかを構成するとfilebeatがjson採集の機能をオンにします.構成が完了するとfilebeatは正常なログを取得するのと同じようにpathで構成されたjsonファイルパスを取得し、jsonメッセージのフィールドをesに格納します.
注意すべきは、この構成ではmultilineの構成について、multilineが構成されている場合は、複数のjsonログをマージする機能が開きます.この機能が必要でない場合は、ymlのmultilineの構成について必ずコメントしてください.
複数行の連結構成
上記の構成ではmultilineの構成について説明していますが、multilineが構成されている場合はmessage_を構成する必要があります.key.この2つの構成が完了した後、ログは次のjson体であると仮定します.{"id":"01","message":" ","logDate":"2019-1-16 17:39:31"}
{"id":"02","message":" ","logDate":"2019-1-16 17:40:20"}
filebeatはidが01とidが02の2つのログを自動的にマージし、esには対応するindexに1つのデータしか表示されず、messageは" "
です.したがって、改行のためには、元のjsonログのmessageに識別子を付けて、ログにマージする必要があるかどうかを識別する必要があります.例は以下の通り{"id":"01","message":"[01-2019] ","logDate":"2019-1-16 17:39:31"}
{"id":"02","message":" ","logDate":"2019-1-16 17:40:20"}
{"id":"03","message":"[03-2019] ","logDate":"2019-1-16 17:41:34"}
次にmultilineに関する構成は次のとおりです. # '[' , message '[',
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
同時構成processors:
- decode_json_fields:
fields: ['message']
target: json
構成が完了したらfilebeatを再起動すると、対応するesのログは2つになります.
そのうち第1条のmessage:[01-2019]
第二条のmessage:[03-2019]
このようにして、複数行のログのマージと分離を実現することができます(ちなみに、複数行のマージを必要としない場合はmultilineに注釈を付けることを忘れないでください.そうしないと、jsonのログがesの中ですべて1つに統合されていることに気づきます......).
#keys_under_root , false
json.keys_under_root: true
# key, key
json.overwrite_keys: true
#message_key json , multiline ,
json.message_key: message
# error.message
json.add_error_key: true
{"id":"01","message":" ","logDate":"2019-1-16 17:39:31"}
{"id":"02","message":" ","logDate":"2019-1-16 17:40:20"}
{"id":"01","message":"[01-2019] ","logDate":"2019-1-16 17:39:31"}
{"id":"02","message":" ","logDate":"2019-1-16 17:40:20"}
{"id":"03","message":"[03-2019] ","logDate":"2019-1-16 17:41:34"}
# '[' , message '[',
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
processors:
- decode_json_fields:
fields: ['message']
target: json