Expliquer la structure du plug-in Logstash dans ELK à partir d'un fichier de définition

image

Une image par texte



Aperçu

Collecte de journaux du système distribué actuel  , analyse des journaux, traitement des journaux, visualisation  technologie à chaud bien sûr mode de réalisation non-pile ELK ( E lasticSearch, L ogstash, K ibana) doit aller de L → E → K constituer un tuyau de pipeline de données:

  • Logstash : connectez - vous aux sources de données pour collecter, filtrer et traiter vos journaux, transactions ou autres données

  • ElasticSearch : est un moteur de recherche RESTful open source distribué, qui peut être globalement compris comme un lieu de stockage de données en ELK

  • Kibana : Analysez et restituez les données Elasticsearch dans des rapports visuels pour une analyse efficace

Et dans mon précédent article « Construire un journal Centre pour Docker conteneurisées Applications Utilisation ELK » , je ELK de construire un pipeline de données pour servir de centre de journal pour les applications conteneurisées Docker.

Remarque:  cet article a été publié pour la première fois sur My public account CodeSheep , vous pouvez appuyer longuement ou scanner l' avertissement ci-dessous pour vous abonner ↓ ↓ ↓        

image



Pourquoi parler de Logstash en premier

En tant que source de données  "bout direct"  de Logstash, les données de position dans le pipeline ELK  extrémité la plus distale , son rôle principal est  de collecter, analyser le filtre produit  une variété de données brutes structurées ou non structurées (généralement sous forme de données de journal), l'original  Le Le fardeau des données du  «désordre à l'ordre» incombe à Logstash, son rôle est donc très important.

En parlant de Logstash, je dois dire que le mécanisme du  plug-in , presque toutes ses fonctions sont réalisées par des plug-ins, il est donc flexible et facile à utiliser:

  • En ce qui concerne  la collecte de données , Logstash fournit des plugins d'entrée pour prendre en charge diverses sources de données

  • En ce qui concerne  l'analyse des données , Logstash fournit un plug-in de filtre pour prendre en charge le traitement sophistiqué des données brutes d'entrée

  • En ce qui concerne  la sortie des données , Logstash fournit également divers plug-ins de sortie pour prendre en charge la sortie des données de résultat vers divers endroits, tels que des consoles standard, des fichiers, diverses bases de données, y compris ElasticSearch, etc.



Gestion du plugin Logstash

Le plug-in Logstash est développé à l'aide de Ruby. Depuis la toute première version 1.5.0+, le module plug-in et le module principal de Logstash ont été maintenus séparément. Le plug-in utilise le gestionnaire de packages RubyGems pour le gérer et le maintenir . Le plugin Logstash est donc essentiellement un RubyGems autonome.

RubyGems (gems ​​pour faire court) est un système d'emballage Ruby pour l'empaquetage de composants Ruby. Il fournit un format standard pour la distribution des programmes et bibliothèques Ruby, ainsi qu'un outil pour gérer l'installation des packages.

Tous les plugins Logstash peuvent être recherchés sur le site Web  rubygems.org:

image

Les opérations courantes sur les plug-ins sont les suivantes:

  • Installer le plugin

Peut être installé en ligne:

bin/plugin install [插件名称]

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

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

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

bin/plugin update [插件名称]

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



Logstash 插件语法结构

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

image

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

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
编解码插件 enregistrer 、 encoder 、 décoder

La fonction de traitement métier du plugin Logstash provient de l'implémentation de la logique métier de la méthode de plugin ci-dessus!

Eh bien, la partie théorique se résume ici, prenons un exemple avec un code source défini par le plug-in Logstash !



Un exemple d'analyse d'un fichier de définition de plugin Logstash

Nous prenons  le code source d'un plug-in de filtre Logstash exemple de filtre - logstash donné par le site officiel du plug - in  Logstash  - in comme exemple d'analyse Le moineau est petit mais a tous les organes internes! L'analyse du code a été marquée sur la figure et ne sera pas répétée.


image

Bien sûr, l'exemple ici est un exemple d'introduction car après tout, il est impossible de donner un code source de plug-in Logstash trop compliqué dans un article limité. En comparant le code source avec le contenu de la section précédente, je pense qu'il ne devrait pas être difficile de comprendre la structure source du plug-in de Logstash.

Il est prévu de montrer un exemple de personnalisation et de développement d'un plug-in Logstash qui répond à des besoins spécifiques basés sur des exigences de données spécifiques.



Post-scriptum

  • Mon blog personnel: www.codesheep.cn


Si vous êtes intéressé, vous pouvez également prendre le temps de lire l'article de l'auteur sur la conteneurisation et les microservices:



Sur l' article original le plus pragmatique, capable de lire, reproductible pour rendre public le numéro CodeSheep , abonnez-vous ⬇️⬇️⬇️

image


Je suppose que tu aimes

Origine blog.51cto.com/15127562/2663985
conseillé
Classement