Yuxian: CSDN コンテンツ パートナー、CSDN の新しいスター メンター、51CTO (トップ セレブ + エキスパート ブロガー)、github オープン ソース愛好家 (ゴーゼロ ソース コードの二次開発、ゲーム バックエンド アーキテクチャ https://github.com/Peakchen)
Logstash は、データの収集、変換、送信のためのオープンソース ツールであり、次のようなさまざまなシナリオで広く使用されています。
-
ログの処理と分析: Logstash は、さまざまなアプリケーションやシステムによって生成されたログ データを収集、分析、フィルター処理することができ、ログの監視、レポート分析、トラブルシューティングなどに使用できます。たとえば、Logstash を使用すると、サーバー ログ、ネットワーク デバイス ログ、アプリケーション ログなどを収集し、検索と分析のために Elasticsearch に送信できます。
-
データ収集と ETL: Logstash は、さまざまなデータ ソースからデータを収集し、変換してクリーンアップすることができ、データ ウェアハウス、データ分析、BI などに使用できます。たとえば、Logstash を使用すると、データベースからのデータの抽出、ファイルからのデータの読み取り、API からのデータの取得などを行って、後続の処理のためにそれらを統一された形式と構造に変換できます。
-
データ パイプラインとストリーム処理: Logstash は、あるシステムから別のシステムにデータを転送でき、リアルタイム ストリーミングとバッチ処理をサポートします。たとえば、Logstash を使用して、Kafka からデータを読み取り、検索と分析のために Elasticsearch に送信したり、Elasticsearch からデータを読み取り、保存するために MySQL データベースに送信したりできます。
Logstash データの収集と変換に関する文献へのリンクをいくつか示します。
-
Logstash 公式ドキュメント: Logstash リファレンス [8.9] | Elastic
-
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 を使用して MySQL データベースからデータを読み取り、単純なデータ変換を実行し、それを Elasticsearch に出力する方法を示す、単純な Logstash 実装例です。
- MySQL データベースとテーブルを準備します。これらは次の SQL ステートメントを使用して作成できます。
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT,
email VARCHAR(50)
);
INSERT INTO test_table (name, age, email) VALUES
('John', 25, '[email protected]'),
('Mary', 30, '[email protected]'),
('Peter', 40, '[email protected]');
このテーブルには、名前、年齢、電子メール アドレスなどのフィールドを含む、いくつかの単純なデータが含まれています。
logstash.conf
次の内容を含む config という名前の構成ファイルを作成します。
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/test_db"
jdbc_user => "root"
jdbc_password => "password"
jdbc_driver_library => "/path/to/mysql-connector-java-8.0.26.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
statement => "SELECT * FROM test_table"
jdbc_paging_enabled => true
jdbc_page_size => 1000
}
}
filter {
mutate {
remove_field => ["@version", "host", "message"]
convert => { "age" => "integer" }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "test_index"
}
}
この設定ファイルは、jdbc 入力プラグイン、mutate フィルター プラグイン、および Elasticsearch 出力プラグインを指定します。MySQL データベースからテーブルのすべてのデータを読み取りtest_table
、mutate フィルターを使用してage
フィールドを整数型に変換し、処理されたデータを Elasticsearch に出力します。
jdbc_driver_library
ここでは、MySQL JDBC ドライバーのパスと名前をパラメーターの値として指定する必要があることに注意してください。
- Logstash を起動し、構成ファイルを指定します。
bin/logstash -f logstash.conf
これにより、Logstash が起動し、logstash.conf
構成ファイルがロードされます。
- Elasticsearch で出力を表示します。
GET /test_index/_search
{
"query": {
"match_all": {}
}
}
test_index
このクエリはインデックスに格納されているすべてのデータを返します。各フィールドの値が正しく解析および変換されていることがわかります。