Yuxian: CSDN コンテンツ パートナー、CSDN の新しいスター メンター、51CTO (トップ セレブ + エキスパート ブロガー)、github オープン ソース愛好家 (ゴーゼロ ソース コードの二次開発、ゲーム バックエンド アーキテクチャ https://github.com/Peakchen)
Logstash は、データ処理、変換、送信のためのオープン ソース ツールであり、そのアーキテクチャには、入力プラグイン、フィルター、出力プラグインという 3 つの主要コンポーネントが含まれています。入力プラグインはデータ ソースからデータを収集する役割を果たし、フィルターはデータを処理、変換、クリーンアップすることができ、出力プラグインは処理されたデータをターゲット システムに送信します。
入力プラグイン: Logstash 入力プラグインは、データ ソースからデータを収集する役割を果たします。Logstash は、ファイル、ネットワーク、MQ、データベースなどの一般的なデータ ソースを含む、さまざまな入力プラグインをサポートしています。入力プラグインはデータをデコード、エンコード、圧縮して、データの整合性と可用性を確保できます。
フィルター: Logstash フィルター プラグインは、入力データを処理、変換、およびクリーンアップできます。Logstash は、データ分析、フィールド抽出、データ型変換、日付書式設定などの操作を実行できる、grok、mutate、date などのさまざまな組み込みフィルター プラグインを提供します。ユーザーは、特定のデータ処理ニーズを満たすカスタム フィルター プラグインを作成することもできます。
出力プラグイン: Logstash 出力プラグインは、処理されたデータをターゲット システムに送信します。Logstash は、Elasticsearch、Redis、Kafka、MySQL などの一般的なターゲット システムを含む、さまざまな出力プラグインをサポートしています。出力プラグインは、データの信頼性とセキュリティを確保するために、データのフォーマット、圧縮、暗号化などの操作を行うことができます。
Logstash は、次のシナリオでよく使用されます。
-
ログの処理と分析: Logstash は、さまざまなアプリケーションやシステムによって生成されたログ データを収集、分析、フィルター処理することができ、ログの監視、レポート分析、トラブルシューティングなどに使用できます。
-
データ収集と ETL: Logstash は、さまざまなデータ ソースからデータを収集し、変換してクリーンアップすることができ、データ ウェアハウス、データ分析、BI などに使用できます。
-
データ パイプラインとストリーム処理: Logstash は、あるシステムから別のシステムにデータを転送でき、リアルタイム ストリーミングとバッチ処理をサポートします。
Logstash の入力、フィルター、出力プラグインに関する文献へのリンクをいくつか示します。
-
Logstash 入力プラグインのドキュメント:入力プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash フィルター プラグインのドキュメント:フィルター プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash 出力プラグインのドキュメント:出力プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash grok フィルター プラグインのドキュメント: Grok フィルター プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash 日付フィルター プラグインのドキュメント:日付フィルター プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash jdbc 入力プラグインのドキュメント: Jdbc 入力プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash ファイル入力プラグインのドキュメント:ファイル入力プラグイン | Logstash リファレンス [8.9] | Elastic
-
Logstash Elasticsearch 出力プラグインのドキュメント: Elasticsearch 出力プラグイン | Logstash リファレンス [8.9] | Elastic
以下は、Logstash を使用してファイルからデータを読み取り、フィルタリングし、Elasticsearch に出力する方法を示す簡単な Logstash 実装例です。
sample.log
次の内容のサンプル データ ファイルを準備します。
2023-08-04 12:00:00,123 INFO [com.example.app] - Request received: GET /api/users/123
2023-08-04 12:00:01,234 ERROR [com.example.app] - Internal server error occurred
2023-08-04 12:00:02,345 WARN [com.example.app] - Slow response time: 500ms
このファイルには、タイムスタンプ、ログ レベル、クラス名、ログ メッセージなどのフィールドを含む、いくつかの単純なログ情報が含まれています。
logstash.conf
次の内容を含む config という名前の構成ファイルを作成します。
input {
file {
path => "/path/to/sample.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} \[%{DATA:class}\] - %{GREEDYDATA:message}" }
}
date {
match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}
この設定ファイルは、ファイル入力プラグイン、grok フィルター プラグイン、および Elasticsearch 出力プラグインを指定します。ファイルからデータを読み取り/path/to/sample.log
、grok フィルターを使用してログ データをさまざまなフィールドに解析し、次に日付フィルターを使用してタイムスタンプを Elasticsearch が受け入れ可能な時間形式に変換し、処理されたデータを Elasticsearch に出力します。
- Logstash を起動し、構成ファイルを指定します。
bin/logstash -f logstash.conf
これにより、Logstash が起動し、logstash.conf
構成ファイルがロードされます。
- Elasticsearch で出力を表示します。
GET /logstash-2023.08.04/_search
{
"query": {
"match_all": {}
}
}
このクエリは、現在 Elasticsearch に保存されているすべてのログ データを返します。各フィールドの値が正しく識別され、分離されていることがわかります。