[ELK を通じて教える] Logstash の入力、フィルター、出力プラグイン

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 を使用してファイルからデータを読み取り、フィルタリングし、Elasticsearch に出力する方法を示す簡単な Logstash 実装例です。

  1. 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

このファイルには、タイムスタンプ、ログ レベル、クラス名、ログ メッセージなどのフィールドを含む、いくつかの単純なログ情報が含まれています。

  1. 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 に出力します。

  1. Logstash を起動し、構成ファイルを指定します。
bin/logstash -f logstash.conf

これにより、Logstash が起動し、logstash.conf構成ファイルがロードされます。

  1. Elasticsearch で出力を表示します。
GET /logstash-2023.08.04/_search
{
  "query": {
    "match_all": {}
  }
}

このクエリは、現在 Elasticsearch に保存されているすべてのログ データを返します。各フィールドの値が正しく識別され、分離されていることがわかります。

おすすめ

転載: blog.csdn.net/feng1790291543/article/details/132102675