Logstash-parsing-the-logs

提供:Dev Guides
移動先:案内検索

Logstash-ログの解析

Logstashは入力プラグインを使用してログを受信し、フィルタープラグインを使用してデータを解析および変換します。 ログの解析と変換は、出力先に存在するシステムに従って実行されます。 Logstashはロギングデータを解析し、必要なフィールドのみを転送します。 後で、これらのフィールドは、宛先システムの互換性のある理解可能な形式に変換されます。

ログを解析する方法は?

ログの解析は、 GROK (知識のグラフィカルな表現)パターンを使用して実行され、Githubで見つけることができます-

[[1]]

Logstashは、ログのデータを、指定されたGROKパターンまたは「%\ {COMBINEDAPACHELOG}」のようなログを解析するためのパターンシーケンスと一致させます。これは、Apacheログに一般的に使用されます。

解析されたデータはより構造化されており、検索やクエリの実行が簡単です。 Logstashは、入力ログで指定されたGROKパターンを検索し、ログから一致する行を抽出します。 GROKデバッガーを使用して、GROKパターンをテストできます。

GROKパターンの構文は%\ {SYNTAX:SEMANTIC}です。 Logstash GROKフィルターは、次の形式で書かれています-

  • %\ {PATTERN:FieldName} *

ここで、PATTERNはGROKパターンを表し、fieldnameはフィールドの名前であり、出力の解析済みデータを表します。

たとえば、オンラインGROKデバッガーhttps://grokdebug.herokuapp.com/を使用する

入力

ログのエラー行のサンプル-

[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102]
   [client 192.168.1.1:25007] JSP Notice:  Undefined index: abc in
  /home/manu/tpworks/finddevguides.com/index.jsp on line 11

GROKパターンシーケンス

このGROKパターンシーケンスは、タイムスタンプの後にログレベル、プロセスID、トランザクションID、エラーメッセージが続くログイベントに一致します。

\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\]
   \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\]
   %{GREEDYDATA:errormsg}

出力

出力はJSON形式です。

{
   "day": [
      "Wed"
   ],
   "month": [
      "Dec"
   ],
   "loglevel": [
      "error"
   ],
   "pid": [
      "1234"
   ],
   "tid": [
      "3456829102"
   ],
   "clientip": [
      "192.168.1.1"
   ],
   "errormsg": [
      "JSP Notice:  Undefined index: abc in
     /home/manu/tpworks/finddevguides.com/index.jsp on line 11"
   ]
}