Logstash-内部アーキテクチャ

この章では、Logstashの内部アーキテクチャとさまざまなコンポーネントについて説明します。

Logstashサービスアーキテクチャ

Logstashは、さまざまなサーバーやデータソースからのログを処理し、配送業者として動作します。荷送人はログを収集するために使用され、これらはすべての入力ソースにインストールされます。のようなブローカーRedis, Kafka または RabbitMQ インデクサーのデータを保持するためのバッファーである場合、フェイルオーバーインスタンスとして複数のブローカーが存在する可能性があります。

のようなインデクサ Lucene検索パフォーマンスを向上させるためにログにインデックスを付けるために使用され、出力はElasticsearchまたは他の出力先に保存されます。出力ストレージのデータは、Kibanaやその他の視覚化ソフトウェアで利用できます。

Logstash内部アーキテクチャ

Logstashパイプラインは3つのコンポーネントで構成されています Input, Filters そして Output。入力部分は、のログフォルダなどの入力データソースを指定してアクセスする責任があります。Apache Tomcat Server

Logstashパイプラインを説明する例

Logstash構成ファイルには、Logstashの3つのコンポーネントに関する詳細が含まれています。この場合、というファイル名を作成していますLogstash.conf

次の構成では、入力ログ「inlog.log」からデータをキャプチャし、フィルターなしで出力ログ「outlog.log」に書き込みます。

Logstash.conf

Logstash構成ファイルは、からデータをコピーするだけです。 inlog.log 入力プラグインを使用してファイルを作成し、ログデータをにフラッシュします outlog.log 出力プラグインを使用したファイル。

input {
   file {
      path => "C:/tpwork/logstash/bin/log/inlog.log"
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/outlog.log"
   }
}

Logstashを実行する

Logstashは –f 設定ファイルを指定するオプション。

C:\logstash\bin> logstash –f logstash.conf

inlog.log

次のコードブロックは、入力ログデータを示しています。

Hello tutorialspoint.com

outlog.log

Logstash出力には、メッセージフィールドに入力データが含まれています。Logstashは、タイムスタンプ、入力ソースのパス、バージョン、ホスト、タグなどの他のフィールドも出力に追加します。

{
   "path":"C:/tpwork/logstash/bin/log/inlog1.log",
   "@timestamp":"2016-12-13T02:28:38.763Z",
   "@version":"1", "host":"Dell-PC",
   "message":" Hello tutorialspoint.com", "tags":[]
}

可能な限り、Logstashの出力には、入力ログを通じて提供されたデータ以上のものが含まれています。出力には、エラーなどの追加メッセージを表すために使用されるソースパス、タイムスタンプ、バージョン、ホスト名、およびタグが含まれます。

フィルタを使用してデータを処理し、ニーズに役立てることができます。次の例では、フィルターを使用してデータを取得しています。これにより、出力がGETやPOSTなどの動詞とそれに続くデータのみに制限されます。Unique Resource Identifier

Logstash.conf

このLogstash構成では、という名前のフィルターを追加します grok入力データを除外します。パターンシーケンス入力ログと一致する入力ログイベントは、エラーのある出力先にのみ到達します。Logstashは、出力イベントに「_grokparsefailure」という名前のタグを追加します。これは、grokフィルターパターンシーケンスと一致しません。

Logstashは、Apacheなどの一般的なサーバーログを解析するための多くの組み込み正規表現パターンを提供します。ここで使用されるパターンは、get、postなどの動詞の後に、URIが続くことを想定しています。

input {
   file {
      path => "C:/tpwork/logstash/bin/log/inlog2.log"
   }
}
filter {
   grok {
      match => {"message" => "%{WORD:verb} %{URIPATHPARAM:uri}"}
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/outlog2.log"
   }
}

Logstashを実行する

次のコマンドを使用して、Logstashを実行できます。

C:\logstash\bin> logstash –f  Logstash.conf

inlog2.log

入力ファイルには、デフォルトの区切り文字で区切られた2つのイベント、つまり改行区切り文字が含まれています。最初のイベントはGROkで指定されたパターンと一致し、2番目のイベントは一致しません。

GET /tutorialspoint/Logstash
Input 1234

outlog2.log

2番目の出力イベントには「_grokparsefailure」タグが含まれていることがわかります。これは、grokフィルターパターンと一致しないためです。ユーザーは、を使用して、出力内のこれらの一致しないイベントを削除することもできます。‘if’ 出力プラグインの条件。

{
   "path":"C:/tpwork/logstash/bin/log/inlog2.log",
   "@timestamp":"2016-12-13T02:47:10.352Z","@version":"1","host":"Dell-PC","verb":"GET",
   "message":"GET /tutorialspoint/logstash", "uri":"/tutorialspoint/logstash", "tags":[]
}
{
   "path":"C:/tpwork/logstash/bin/log/inlog2.log",
   "@timestamp":"2016-12-13T02:48:12.418Z", "@version":"1", "host":"Dell-PC",
   "message":"t 1234\r", "tags":["_grokparsefailure"]
}