Logstash は、データの処理、変換、転送のためのオープンソース ツールです。さまざまなソース (ファイル、データベース、MQ、Web サービスなど) からさまざまなターゲット (Elasticsearch、Redis、Kafka、MySQL など) へのデータを収集、変換、出力するための複数の入力、出力、およびフィルターをサポートします。 。
Logstash のアーキテクチャは、入力プラグイン、フィルター、出力プラグインの 3 つの主要コンポーネントで構成されています。入力プラグインはデータ ソースからデータを収集する役割を果たし、フィルターはデータを処理、変換、クリーンアップすることができ、出力プラグインは処理されたデータをターゲット システムに送信します。以下は、単純な Logstash アーキテクチャ図です。
+-------------------+
| Data Source |
+-------------------+
|
|
v
+-------------------+
| Logstash Input |
| Plugin |
+-------------------+
|
|
v
+-------------------+
| Logstash Filter |
| Plugin |
+-------------------+
|
|
v
+-------------------+
| Logstash Output |
| Plugin |
+-------------------+
|
|
v
+-------------------+
| Target System |
+-------------------+
以下は、Logstash を使用してファイルからデータを読み取り、フィルター処理し、コンソールに出力する方法を示す簡単な Logstash 実装例です。
logstash.conf
次の内容を含む config という名前の構成ファイルを作成します。
input {
file {
path => "/path/to/your/log/file.log"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
stdout {
codec => rubydebug
}
}
この設定ファイルは、ファイル入力プラグイン、grok フィルター プラグイン、およびコンソール出力プラグインを指定します。/path/to/your/log/file.log
ファイルからデータを読み取り、grok フィルターを使用してログ データを Apache ログ形式に解析し、処理されたデータをコンソールに出力します。
- Logstash を起動し、構成ファイルを指定します。
bin/logstash -f logstash.conf
これにより、Logstash が起動し、logstash.conf
構成ファイルがロードされます。
- コンソールで出力を表示します。
{
"host" => "your-hostname",
"@version" => "1",
"@timestamp" => "2022-01-01T00:00:00.000Z",
"path" => "/path/to/your/log/file.log",
"message" => "127.0.0.1 - - [01/Jan/2022:00:00:00 +0000] \"GET /index.html HTTP/1.1\" 200 1234",
"clientip" => "127.0.0.1",
"ident" => "-",
"auth" => "-",
"timestamp" => "01/Jan/2022:00:00:00 +0000",
"verb" => "GET",
"request" => "/index.html",
"httpversion" => "1.1",
"response" => "200",
"bytes" => "1234"
}
この出力には、解析された Apache ログ データが含まれており、各フィールドの値が正しく識別され、分離されていることがわかります。
Logstash は、データ処理、変換、送信のためのオープン ソース ツールであり、そのアーキテクチャには、入力プラグイン、フィルター、出力プラグインという 3 つの主要コンポーネントが含まれています。入力プラグインはデータ ソースからデータを収集する役割を果たし、フィルターはデータを処理、変換、クリーンアップすることができ、出力プラグインは処理されたデータをターゲット システムに送信します。
Logstash のワークフローは次のとおりです。
-
入力プラグインは、ファイル、データベース、MQ、Web サービスなどからのデータの読み取りなど、データ ソースからデータを収集します。
-
フィルターは、ログ データの解析、フィールドの置換、不要なデータのフィルターなど、データの処理、変換、クリーンアップを行います。
-
出力プラグインは、処理されたデータを Elasticsearch、Redis、Kafka、MySQL などのターゲット システムに送信します。
Logstash は、次のシナリオでよく使用されます。
-
ログの処理と分析: Logstash は、さまざまなアプリケーションやシステムによって生成されたログ データを収集、分析、フィルター処理することができ、ログの監視、レポート分析、トラブルシューティングなどに使用できます。
-
データ収集と ETL: Logstash は、さまざまなデータ ソースからデータを収集し、変換してクリーンアップすることができ、データ ウェアハウス、データ分析、BI などに使用できます。
-
データ パイプラインとストリーム処理: Logstash は、あるシステムから別のシステムにデータを転送でき、リアルタイム ストリーミングとバッチ処理をサポートします。
Logstash の概念とアーキテクチャに関する文献へのリンクをいくつか示します。
-
Logstash 公式ドキュメント: Logstash リファレンス [8.9] | Elastic
-
Logstash アーキテクチャと動作原理の紹介: https://www.elastic.co/blog/a-practical-introduction-to-logstash-architecture
-
Logstash 入力プラグインのドキュメント:入力プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash フィルター プラグインのドキュメント:フィルター プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash 出力プラグインのドキュメント:出力プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash のベスト プラクティスとパフォーマンス チューニング: https://www.elastic.co/blog/logstash-performance-tuning-part-1-pipelines-and-batching