Logstash-parsing-the-logs
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"
]
}