26 octobre 2016 Sorties

Logstash 5.0.0

Par Suyog Rao

Ça y est, Logstash 5.0.0 est arrivé. Cinq version alphas, une version beta et une version RC plus tard, nous sommes fiers de vous annoncer la sortie officielle de la plus grosse mise à jour de Logstash. Et il n'y a pas que Logstash de concerné mais bien la totalité de la Suite Elastic. Tout est disponible sur Elastic Cloud essayez-les dès maintenant.

Si vous n'en pouvez plus d'attendre, allez directement sur la page de téléchargement Logstash. Mais nous vous conseillons de lire attentivement la liste des modifications majeures. Si vous préférez lire l'intégralité des notes d'information sur la version, cliquez ici.

Modifications majeures

Nous conseillons aux utilisateurs de lire la liste des modifications majeures avant de mettre les anciennes versions à niveau.

À la une

Un thème important pour Logstash dans cette version était l'amélioration du troubleshooting. L'amélioration des performances de chaque nouvelle version est une constante ; avec la version 5.0.0, nous avons fait un grand pas en avant. Ci-dessous figurent les principales caractéristiques de cette version :

Logstash n'est plus une boîte noire

La nouvelle fonction de surveillance apporte de la visibilité sur le temps de traitement dans les pipelines de Logstash et dans ses plugins. Ce composant recueille différents types de statistiques opérationnelles pendant que Logstash traite vos données, et toutes ces informations peuvent être requêtées via nos API. La plupart des API ont été élaborées après Elasticsearch, c'est pourquoi nous avons fait en sorte de préserver la cohérence avec les endpoints et même pour les réponses JSON. Les API de surveillance peuvent être regroupées en quatre grands ensembles :

  • API d'info sur les noeuds : informations statiques sur l'instance Logstash et son environnement comme JVM, infos sur le système d'exploitation, etc.
  • API d'info sur les plugins : informations sur tous les plugins de Logstash qui sont actuellement installés.
  • API de stats des noeuds : plusieurs stats sur le temps de traitement, comme les stats des événements traités aux différentes étapes, les stats des processeurs et les stats de système.
  • API des threads en action : trouver quelle partie de Logstash occupe votre processeur.

Veuillez consulter la documentation de référence pour plus de détails.

Amélioration du logging

Dans la lignée de notre thème « plus de visibilité sur les tâches internes de Logstash », nous avons amélioré le framework de logging interne. Tout d'abord, nous sommes passés à Log4j2, la bibliothèque de logging de Java. Les utilisateurs pourront dorénavant obtenir des logs de différentes granularités jusqu'au niveau du simple plugin. Pour augmenter la granularité et les niveaux de log, il est possible de modifier les propriétés du fichier log4j2 et de redémarrer Logstash, mais c'est fastidieux et ça coupe inutilement le service. Nous avons donc préféré exposer les API qui peuvent être utilisées pour mettre à jour dynamiquement les niveaux de logging. Ces réglages sont actifs immédiatement et ne nécessitent aucun redémarrage. Autre avantage de passer à Log4j2 : les politiques de rotation des fichiers peuvent être directement configurées à l'aide du fichier propriétés.

Performance : Evénement Java

Dans cette version, nous avons complètement retravaillé une partie importante de l'infrastructure du pipeline de Logstash en Java. Le flux de données dans Logstash est encapsulé à l'aide d'un objet interne (event) qui est transmis aux plugins, utilisé pour les conditionnels, les vérifications de référence de champ et qui restera sur le disque à l'avenir. Qu'est-ce que ça signifie pour les utilisateurs ? Dans nos test de performance, nous avons constaté une augmentation du rendement à travers plusieurs configurations. Dans certains cas, nous avons observé jusqu'à 75 % d'augmentation dans les événements traités via Logstash.

Si vous êtes développeur de plugins ou si vous assurez la maintenance d'un plugin personnalisé, nous vous encourageons à lire cette section afin d'adapter votre code à la nouvelle API du plugin.

Simple à utiliser

Fichier Settings : Les utilisateurs peuvent désormais régler les options de Logstash dans un fichier settings, logstash.yml, au lieu de recourir à des arguments de ligne de commande. Par exemple, vous pouvez spécifier les settings de pipeline, l'emplacement des fichiers de configuration et les options de logging dans un seul et même fichier.

Packages : les packs de Logstash (Debian, RPM) ont été remaniés pour cette version. Avant, Logstash utilisait le répertoire /opt/logstash pour installer les binaires, alors qu'Elasticsearch utilisait /usr/share et /var. Pour harmoniser l'expérience utilisateur à travers tous nos produits (un thème récurrent pour la version 5.0.0), nous avons modifié Logstash pour être compatible avec RPM et DEB d'Elasticsearch. De plus, nous avons ajouté un support systemd et upstart pour lancer Logstash en tant que service sur les plateformes *nix.

Intégrations avancées et nouveaux plugins

Elasticsearch Output : ce plugin fonctionne nativement avec Elasticsearch 5.0.0. Il est devenu threadsafe, de sorte à mieux tirer parti des récents changements dans l'architecture du pipeline. Les autres améliorations incluent un nouveau pool de connexion pour réutiliser de manière efficace les connexions vers Elasticsearch, un exponential backoff pour les tentatives de reconnexion et une meilleure gestion du sniffing.

Remarque : Logstash 5.0 est compatible avec Elasticsearch 5.x, 2.x et même 1.x.

Support Kafka 0.10 : Apache Kafka a sorti la version 0.9 et 0.10 il y a quelques semaines de cela. Elle apportait de nouvelles fonctionnalités de sécurité (SSL, auth client, contrôle d'accès), une API consommateur améliorée et bien plus encore. Cette version de Logstash fournit un support natif pour le cryptage SSL et l'authentification client dans Kafka.

Le filtre « dissect » : extraire les champs de données non structurées était une caractéristique très appréciée dans Logstash. Jusqu'à maintenant, le filtre Grok était le seul et unique moyen d'extraire des champs. Grok utilise des expressions régulières en interne, ce qui était potentiellement coûteux. En d'autres termes, pour les extractions de champs simples, utiliser Grok était aussi disproportionné que d'utiliser un marteau pour écraser une mouche. Le filtre dissect est une alternative pour l'extraction de champ qui permet de splitter à l'aide de délimiteurs. Aucune expression régulière n'est utilisée. Cela veut dire que le filtre dissect ne fonctionne que pour les lignes de logs dont la structure est bien connue. Il ne remplace pas Grok, mais nous espérons qu'il le complètera.

Google Protobuf Codec : un nouveau codec permettant d'analyser les messages protobuf et de les convertir en événements Logstash. Contribution de Inga Feick.

Language Filter : détecte la langue depuis des champs spécifiques. Un de ses cas d'utilisation serait pour régler le bon analyseur à appliquer par Elasticsearch. Contribution de Justin Bovee.

Versions préliminaires

Ci-dessous, vous trouverez les articles à propos de chacune des sorties préliminaires de 5.0 : 

Logstash 5.0.0-alpha1
Logstash 5.0.0-alpha2
Logstash 5.0.0-alpha3
Logstash 5.0.0-alpha4
Logstash 5.0.0-alpha5
Logstash 5.0.0-beta1

Feedback

Logstash 5.0.0 a représenté un effort considérable qui n'aurait pas été possible sans toutes les contributions, tous les feedbacks, tous les commentaires et toutes les demandes d'améliorations de la part de la communauté. Un grand merci à nos chargés de plugins qui ont aidé à façonner 5.0.0. Si vous avez participé au Programme Pioneer, notre équipe devrel vous contactera bientôt. De la part de toute l'équipe de Logstash, nous remercions tous nos utilisateurs pour leur utilisation et leur contribution à Logstash.

Allez-y, découvrez la nouvelle version 5.0.0 et dîtes-nous ce que vous en pensez !