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 ↓ ↓ ↓
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
:
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语法,我还是习惯用图来说明吧:
从图中可以看出主要包含以下几大部分内容:
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.
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:
Utilisez la pile technologique K8S pour créer une série d'articles personnels sur le cloud privé
Utilisez TICK pour créer un centre de surveillance visuelle de conteneurs Docker
Expliquer la configuration du serveur Nginx à partir d'une liste de configuration
Construction d'un centre de surveillance de visualisation de conteneurs Docker
Utilisez ELK pour créer le centre de journalisation des applications conteneurisées Docker
Construction d'un centre de suivi de la chaîne d'appels de microservices
Sur l' article original le plus pragmatique, capable de lire, reproductible pour rendre public le numéro CodeSheep , abonnez-vous ⬇️⬇️⬇️