Logstash-internal-architecture
Logstash-内部アーキテクチャ
この章では、Logstashの内部アーキテクチャとさまざまなコンポーネントについて説明します。
Logstashサービスアーキテクチャ
Logstashは、さまざまなサーバーおよびデータソースからのログを処理し、荷送人として動作します。 荷送人はログを収集するために使用され、これらはすべての入力ソースにインストールされます。 Redis、Kafka または RabbitMQ などのブローカーは、インデクサーのデータを保持するバッファーです。フェールオーバーインスタンスとして複数のブローカーが存在する場合があります。
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 ファイルにログデータをフラッシュします。
Logstashを実行する
Logstashは –f オプションを使用して構成ファイルを指定します。
inlog.log
次のコードブロックは、入力ログデータを示しています。
outlog.log
Logstashの出力には、メッセージフィールドの入力データが含まれます。 Logstashは、タイムスタンプ、入力ソースのパス、バージョン、ホスト、タグなどの他のフィールドも出力に追加します。
可能な限り、Logstashの出力には、入力ログから提供されたデータ以上のものが含まれています。 出力には、ソースパス、タイムスタンプ、バージョン、ホスト名、タグが含まれます。これらは、エラーなどの追加メッセージを表すために使用されます。
フィルターを使用してデータを処理し、ニーズに合わせてデータを有用にすることができます。 次の例では、フィルターを使用してデータを取得します。これは、GETまたはPOSTなどの動詞の後に Unique Resource Identifier が続くデータのみに出力を制限します。
Logstash.conf
このLogstash構成では、入力データを除外するために grok という名前のフィルターを追加します。 パターンシーケンスの入力ログと一致する入力ログイベントは、エラーのある出力先にのみ到達します。 Logstashは、出力イベントに「_grokparsefailure」という名前のタグを追加しますが、これはgrokフィルターパターンシーケンスと一致しません。
Logstashは、Apacheなどの一般的なサーバーログを解析するための多くの組み込み正規表現パターンを提供します。 ここで使用するパターンは、get、postなどの動詞の後に均一なリソース識別子が続くことを想定しています。
Logstashを実行する
次のコマンドを使用してLogstashを実行できます。
inlog2.log
入力ファイルには、デフォルトの区切り文字、つまり改行区切り文字で区切られた2つのイベントが含まれています。 最初のイベントはGROkで指定されたパターンと一致し、2番目のイベントは一致しません。
outlog2.log
grokフィルターパターンと一致しないため、2番目の出力イベントに「_grokparsefailure」タグが含まれていることがわかります。 ユーザーは、出力プラグインで 'if' 条件を使用することにより、これらの一致しないイベントを出力から削除することもできます。