【ELKで教える】Logstashプラグイン開発実装例

Yuxian: CSDN コンテンツ パートナー、CSDN の新人スター メンター、フルスタック クリエイティブ スター クリエイター、51CTO (トップ セレブ + エキスパート ブロガー)、Github オープン ソース愛好家 (ゴーゼロ ソース コードの二次開発、ゲーム バックエンド アーキテクチャ https: https:/ /github.com/Peakchen)

 

Logstash は、データを収集、処理、出力するためのストリーム処理ツールです。Logstash プラグインは、モジュール形式で Logstash に新しい機能とデータ処理を追加できる拡張メカニズムです。プラグインを使用すると、データ入力、フィルタリング、出力、コーデックなどのさまざまな機能を実装できます。

Logstash プラグインは Ruby 言語で記述され、Logstash プラグイン API に基づいて開発され、RubyGems を通じてパッケージ化および配布できます。プラグインには、入力プラグイン、フィルター プラグイン、コーデック プラグイン、出力プラグインなどが含まれる場合があります。

入力プラグインは、ファイル、ネットワーク、MQ などからデータを取得するなど、データ ソースからデータを取得するために使用されます。

フィルタリング プラグインは、データの変換、フィルタリング、集計などのデータ処理に使用されます。

コーデック プラグインは、JSON、CSV、XML などの形式でのデータの解析とエンコードなど、データのエンコードとデコードに使用されます。

出力プラグインは、ファイル、ネットワーク、MQ などへの出力など、ターゲットにデータを出力するために使用されます。

Logstash プラグインを使用することで、さまざまなデータ処理および分析シナリオを実現できます。例えば:

  • データの収集と処理: 入力プラグインを使用してさまざまなデータ ソースからデータを収集し、フィルター プラグインを使用してデータを処理および変換し、最後に出力プラグインを使用してデータをターゲットに出力します。
  • データの集計と分析: フィルタリング プラグインを使用して、平均値や統計などの計算など、データを集計および分析します。
  • データのクリーニングと変換: フィルタリング プラグインを使用して、無効なデータのフィルタリングやデータ形式の変換など、データのクリーニングと変換を行います。
  • リアルタイム監視と早期警告: 入力プラグインを使用してデータ ソースからデータを取得し、フィルター プラグインを使用して異常データの検出、高負荷の早期警告など、データをリアルタイムで監視および警告します。 、など。

Logstash プラグインの開発には、Ruby 言語と Logstash プラグイン API をマスターする必要があります。学習と実践のために、Logstash の公式ドキュメントとサンプルを参照できます。

関連する文献や資料へのリンクをいくつか示します。

Logstash プラグインは、モジュール形式で Logstash に新しい機能とデータ処理を追加できる拡張メカニズムです。以下は、入力文字列を大文字に変換するカスタム フィルター プラグインを実装する簡単な Logstash プラグイン開発例です。

  1. プラグインディレクトリを作成する

まず、プラグインのコードと構成ファイルを保存するためのプラグイン ディレクトリを作成する必要があります。ルート ディレクトリに logstash という名前のディレクトリを作成して、mypluginカスタム プラグインを保存できます。

logstash/
  |- bin/
  |- data/
  |- myplugin/
  |   |- lib/
  |   |- myplugin.gemspec
  |   |- Gemfile
  |   |- Gemfile.lock
  |- ... 

mypluginディレクトリの下に、次のファイルとディレクトリを作成する必要があります。

  • lib/: プラグイン コードを保存するために使用されます。
  • myplugin.gemspec: プラグイン名、バージョン、依存関係、その他の情報を含むプラグイン メタデータ ファイル。
  • GemfileおよびGemfile.lock: プラグインを管理するための依存関係ライブラリ。
  1. プラグインコードを書く

プラグインコードを記述するためのlib/ディレクトリに という名前のファイルを作成しますlogstash/filters/myplugin.rb以下は、入力文字列を大文字に変換する簡単なプラグイン コードの例です。

require "logstash/filters/base"
require "logstash/namespace"

class LogStash::Filters::MyPlugin < LogStash::Filters::Base
  config_name "myplugin"

  # 过滤器的配置项
  config :field, :string, :default => "message"

  public
  def register
    # TODO:初始化插件
  end

  public
  def filter(event)
    # 获取输入字符串
    input = event.get(@field)

    # 转换为大写
    output = input.upcase

    # 更新事件数据
    event.set(@field, output)

    # 传递事件到下一个过滤器
    filter_matched(event)
  end
end

コードでは、LogStash::Filters::MyPluginクラスはLogStash::Filters::Baseクラスを継承して、これがフィルター プラグインであることを示します。config_name属性はプラグインの名前を指定し、config属性はプラグインの設定項目を指定しますが、ここではfield入力フィールド名を指定するために文字列型の設定項目nameを指定しています。

registerこのメソッドはプラグインを初期化するために使用され、いくつかの初期化コードをここに追加できます。

filterこのメソッドはイベント データを処理するために使用されます。ここでは入力文字列を取得し、大文字に変換し、イベント データを更新し、イベントを次のフィルターに渡します。

  1. プラグインのメタデータを定義する

プラグイン名、バージョン、依存関係、その他の情報を含む、ファイル内のプラグインのメタデータを定義しますmyplugin.gemspec以下に例を示します。

Gem::Specification.new do |s|
  s.name          = "logstash-filter-myplugin"
  s.version       = "1.0.0"
  s.author        = "Your Name"
  s.email         = "[email protected]"
  s.summary       = "Logstash filter plugin for converting input string to uppercase"
  s.description   = "A Logstash filter plugin that converts the input string to uppercase."
  s.homepage      = "https://github.com/your-github-account/logstash-filter-myplugin"
  s.license       = "Apache-2.0"
  s.platform      = Gem::Platform::RUBY
  s.requires      = [["logstash", ">= 6.0"]]
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 0.1.0", "< 2.0.0"
  s.add_development_dependency "logstash-devutils", "~> 0.8"
  s.files         = Dir["lib/**/*", "spec/**/*", "Gemfile", "Gemfile.lock", "myplugin.gemspec", "LICENSE.txt", "NOTICE.txt", "README.md"]
  s.require_paths = ["lib"]
end

メタデータでは、プラグイン名、バージョン、作成者、依存関係、その他の情報を指定する必要があります。

  1. プラグインをインストールする

mypluginディレクトリ内で次のコマンドを実行してプラグインをインストールします。

bin/logstash-plugin install --no-verify

これにより、プラグインがインストールされ、Logstash のプラグインのリストに追加されます。

  1. プラグインを設定する

Logstash 設定ファイルで、プラグインの名前と設定項目を指定します。以下に例を示します。

input {
  stdin {
  }
}

filter {
  myplugin {
    field => "message"
  }
}

output {
  stdout {
  }
}

この例では、stdinプラグインは標準入力からデータを読み取るために使用され、mypluginプラグインは入力文字列を大文字に変換するために使用され、stdoutプラグインは処理されたデータを標準出力に出力するために使用されます。

  1. ログスタッシュを実行する

次のコマンドを実行して Logstash を起動します。

bin/logstash -f myconfig.conf

これにより、構成ファイルが読み取られmyconfig.conf、Logstash が起動され、データの処理が開始されます。

  1. テストプラグイン

コマンド ラインに文字列 (例: ) を入力しhello world、Enter キーを押します。Logstash は受信データを読み取り、それをstdinプラグインに渡し、その後処理のためにプラグインに渡されmyplugin、最終的に stdout に出力されます。

出力は次のようになります。

HELLO WORLD

これは、プラグインが入力文字列を大文字に正常に変換したことを示します。

おすすめ

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