定義ファイルからELKのLogstashプラグイン構造を説明する

画像

テキストごとに1つの画像



概要概要

現在の分散システムの ログ収集、ログ分析、ログ処理、視覚化 ホットテクノロジーはもちろん非スタックの実施形態ELK(E lasticSearch、L ogstash、K ibana)はL→E→Kからデータパイプラインパイプを構成する必要があります。

  • Logstash:データソースに接続して、ログ、トランザクション、またはその他のデータを収集、フィルタリング、処理します

  • ElasticSearch:オープンソースの分散型RESTful検索エンジンであり、ELKのデータストレージの場所として大まかに理解できます。

  • Kibana:Elasticsearchデータを分析して視覚的なレポートにレンダリングし、効率的に分析します

また、前回の記事 ELKを使用したDockerコンテナ化アプリケーションのログセンターの構築では、ELKを使用して、Dockerコンテナ化アプリケーションのログセンターとして機能するデータパイプラインを構築しました。

注: この記事は、My public account CodeSheep最初に公開されました。以下の注意を長押しするスキャンしてサブスクライブできます↓↓↓        

画像



Logstashについて最初に話す理由

 Logstashのデータソース 「ダイレクトバット」、パイプラインELKの最遠位端の位置データとして 、その主な役割は  、さまざまな構造化または非構造化の生データ(通常はログデータとして)を収集、分析することです 。「注文から注文までデータの 負担はLogstashの肩にかかっているため、その役割は非常に重要です。

Logstashと言えば、プラグインメカニズムと言えば、 その機能のほとんどすべてがプラグインによって実現されるため、柔軟性があり、使いやすいです。

  • データ収集に関して 、Logstashはさまざまなデータソースをサポートするための入力プラグインを提供します

  • データ分析に関して 、Logstashは、入力された生データの高度な処理をサポートするフィルタープラグインを提供します

  • データ出力に関して 、Logstashは、標準コンソール、ファイル、ElasticSearchを含むさまざまなデータベースなど、さまざまな場所への結果データの出力をサポートするさまざまな出力プラグインも提供します。



Logstashプラグイン管理

LogstashプラグインはRubyを使用して開発されています。非常に初期のバージョン1.5.0以降から、Logstashのプラグインモジュールとコアモジュールは別々に保守されています。プラグインはRubyGemsパッケージマネージャーを使用して管理および保守します。 。したがって、Logstashプラグインは本質的に自己完結型のRubyGemsです。

RubyGems(略してgems)は、Rubyコンポーネントをパッケージ化するためのRubyパッケージングシステムです。これは、Rubyプログラムとライブラリを配布するための標準形式と、パッケージのインストールを管理するためのツールを提供します。

すべてのLogstashプラグインは、Webサイトで検索できます rubygems.org

画像

プラグインの一般的な操作は次のとおりです。

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

オンラインでインストールできます:

bin/plugin install [插件名称]

当然也可以将插件提前下载到本地,然后本地安装:

bin/plugin install path/logstash-xxx-x.x.x.gem
  • 卸载插件

bin/plugin uninstall [插件名称]
  • 更新插件

bin/plugin update [插件名称]

其会将插件更新到最新的版本



Logstash 插件语法结构

Logstash 插件的定义其实使用的就是一套其自定义的 DSL语法,我还是习惯用图来说明吧:

画像

从图中可以看出主要包含以下几大部分内容:

1. 需要的依赖

该部分一般会用require语法引入如下依赖:

require "logstash/XXX/base"
require "logstash/namespace"
  • 前者引入 特定类型插件的依赖

  • 后者引入 模块命名空间

2. 类定义

需要用 class语法给每一个插件定义一个类,后面我会用实际代码说明

3. 配置插件名字

通过 config_name 语法来给插件取一个名字,这个名字将会用到 Logstash.conf 配置文件的插件配置之中

4. 配置选项设置

可以使用 config 语法来按需定义任意个配置项。可以设置配置选项的名字、数据类型、默认值以及是否为必选项:

举例:

config :percentage, :validate => :number, :default =>100
  • :percentage:定义配置项的名字

  • :validate:配置指定参数的数据类型,如此处为 number类型

  • :default:指定配置项的默认值

  • :required:用于指定配置项是否必选

5. 插件方法

每一种类型的插件都需要实现一些方法,如下表所示:

插件类型 插件方法
输入插件 register、 run
过滤器插件 register、 filter
输出插件 register、 receive
编解码插件 登録、エンコード、デコード

Logstashプラグインのビジネス処理機能は、上記のプラグインメソッドのビジネスロジックの実装に由来します。

さて、理論的な部分はここに要約されています。Logstashプラグインによって定義されたソースコードの例を見てみましょう



Logstashプラグイン定義ファイルの分析例

 分析の例として、Logstashフィルタープラグインのソースコードlogstash-filter( Logstashプラグインの 公式Webサイトで提供されている例)を取り上げ ます。スズメは小さいですが、すべての内臓があります。コード分​​析は図にマークされており、繰り返されません。


画像

もちろん、ここでの例は入門的な例です。結局のところ、限られた記事で複雑すぎるLogstashプラグインのソースコードを提供することは不可能です。ソースコードを前のセクションの内容と比較すると、Logstashのプラグインのソース構造を理解するのは難しいことではないと思います。

特定のデータ要件に基づいて特定のニーズを満たすLogstashプラグインをカスタマイズおよび開発する例を示す予定です。



追記

  • 私の個人ブログ:www.codesheep.cn


興味がある場合は、コンテナ化とマイクロサービスに関する著者の記事を読むこともできます。



公開番号CodeSheepを作成するための、より実用的で、読みやすく、再現可能な元の記事については、⬇️⬇️⬇️を購読してください。

画像


おすすめ

転載: blog.51cto.com/15127562/2663985