Ajout de filtres Logstash pour améliorer la journalisation centralisée (Logstash Forwarder)

introduction

Logstash est un outil puissant pour la centralisation et l’analyse des journaux, qui peut vous aider à fournir une vue d’ensemble de votre environnement et à identifier les problèmes avec vos serveurs. Un moyen d’accroître l’efficacité de votre configuration Logstash consiste à collecter des journaux d’applications importants et à structurer les données de journal en utilisant des filtres, de manière à ce que les données puissent être facilement analysées et interrogées. Nous construirons nos filtres autour de modèles «grok», qui analyseront les données des journaux en informations utiles.

Ce guide est une suite de la https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-1-7-logstash-1-5-and-kibana-4-1-elk-stack -on-ubuntu-14-04 [Comment installer Elasticsearch 1.7, Logstash 1.5 et Kibana 4.1 (ELK Stack) sur Ubuntu 14.04], et se concentre principalement sur l’ajout de filtres pour divers journaux d’application courants.

Conditions préalables

Pour suivre ce didacticiel, vous devez disposer d’un serveur Logstash en état de fonctionnement et d’un moyen d’envoyer vos journaux à Logstash. Si vous n’avez pas configuré Logstash, voici un autre tutoriel qui vous aidera à démarrer: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-1-7-logstash-1-5 -and-kibana-4-1-elk-stack-on-ubuntu-14-04 [Comment installer Elasticsearch 1.7, Logstash 1.5 et Kibana 4.1 (ELK Stack) sous Ubuntu 14.04].

Hypothèses du serveur Logstash:

  • Logstash est installé dans + / opt / logstash +

  • Vous recevez des journaux de Logstash Forwarder sur le port 5000

  • Vos fichiers de configuration Logstash se trouvent dans + / etc / logstash / conf.d +

  • Vous avez un fichier d’entrée nommé + 01-lumberjack-input.conf +

  • Vous avez un fichier de sortie nommé + 30-lumberjack-output.conf +

Hypothèses relatives au redirecteur Logstash:

Si votre configuration diffère de ce que nous supposons, ajustez simplement ce guide en fonction de votre environnement.

Vous devrez peut-être créer le répertoire + patterns + en exécutant cette commande sur votre serveur Logstash:

sudo mkdir -p /opt/logstash/patterns
sudo chown logstash:logstash /opt/logstash/patterns

À propos de Grok

Grok fonctionne en analysant les modèles de texte, en utilisant des expressions régulières et en les affectant à un identifiant.

La syntaxe pour un motif grok est +% {:} +. Un filtre Logstash comprend une séquence de modèles Grok qui correspond et attribue divers éléments d’un message de journal à différents identificateurs, ce qui correspond à la structure des journaux.

Pour en savoir plus sur grok, visitez la page Logstash grok et la page https://github.com/elasticsearch/logstash/blob/v1.4.2. / patterns / grok-patterns [Liste des motifs par défaut de Logstash].

Comment utiliser ce guide

Chaque section principale qui suit comprendra les détails de configuration supplémentaires nécessaires à la collecte et au filtrage des journaux pour une application donnée. Pour chaque application que vous souhaitez journaliser et filtrer, vous devrez apporter des modifications de configuration à la fois sur le serveur d’applications et sur le serveur Logstash.

Sous-section de transitaire Logstash

Les sous-sections Logstash Forwarder concernent le serveur d’applications qui envoie ses journaux. La configuration supplémentaire de files doit être ajoutée au fichier + / etc / logstash-forwarder.conf + directement après les lignes suivantes:

 "files": [
   {
     "paths": [
       "/var/log/syslog",
       "/var/log/auth.log"
      ],
     "fields": { "type": "syslog" }
   }

Assurez-vous que la configuration supplémentaire est avant le +] + qui ferme la section «fichiers». Cela inclut les fichiers journaux appropriés à envoyer à Logstash et les identifie comme un type spécifique (qui sera utilisé par les filtres Logstash). Le Logstash Forwarder doit être rechargé pour que les modifications prennent effet.

Sous-section des modèles de logstash

S’il existe une sous-section Logstash Patterns, elle contiendra des modèles Grok pouvant être ajoutés à un nouveau fichier dans + / opt / logstash / patterns + sur le serveur Logstash. Cela vous permettra d’utiliser les nouveaux modèles dans les filtres Logstash.

Sous-section de filtre de logstash

Les sous-sections Filtre Logstash incluront un filtre pouvant être ajouté à un nouveau fichier, entre les fichiers de configuration d’entrée et de sortie, dans + / etc / logstash / conf.d + sur le serveur Logstash. Le filtre détermine la façon dont le serveur Logstash analyse les fichiers journaux pertinents. N’oubliez pas de redémarrer le serveur Logstash après l’ajout d’un nouveau filtre pour charger vos modifications.

Maintenant que vous savez utiliser ce guide, le reste de ce guide vous montrera comment collecter et filtrer les journaux des applications!

Application: Nginx

Logstash Forwarder: Nginx

Sur vos serveurs * Nginx *, ouvrez le fichier de configuration + logstash-forwarder.conf +:

sudo vi /etc/logstash-forwarder.conf

Ajoutez ce qui suit dans la section «fichiers» pour envoyer les journaux d’accès Nginx sous le type «accès nginx» à votre serveur Logstash:

,
   {
     "paths": [
       "/var/log/nginx/access.log"
      ],
     "fields": { "type": "nginx-access" }
   }

Sauvegarder et quitter. Rechargez la configuration du redirecteur Logstash pour appliquer les modifications:

sudo service logstash-forwarder restart

Modèles de logstash: Nginx

Les modèles de journal Nginx ne sont pas inclus dans les modèles par défaut de Logstash, nous allons donc ajouter les modèles Nginx manuellement.

Sur votre * serveur Logstash *, créez un nouveau fichier de modèle appelé + nginx +:

sudo vi /opt/logstash/patterns/nginx

Puis insérez les lignes suivantes:

NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}

Sauvegarder et quitter. Le modèle NGINXACCESS analyse et attribue les données à divers identifiants (par ex. clientip, ident, auth, etc.).

Ensuite, changez la propriété du fichier de signatures en + logstash:

sudo chown logstash:logstash /opt/logstash/patterns/nginx

Filtre de journal: Nginx

Sur votre * serveur Logstash *, créez un nouveau fichier de configuration de filtre appelé + 11-nginx.conf +:

sudo vi /etc/logstash/conf.d/11-nginx.conf

Ajoutez ensuite le filtre suivant:

filter {
 if [type] == "nginx-access" {
   grok {
     match => { "message" => "%{NGINXACCESS}" }
   }
 }
}

Sauvegarder et quitter. Notez que ce filtre tentera de faire correspondre les messages de type «nginx-access» avec le modèle NGINXACCESS, défini ci-dessus.

Relancez maintenant Logstash pour recharger la configuration:

sudo service logstash restart

Maintenant, vos journaux Nginx seront rassemblés et filtrés!

Application: Serveur Web HTTP Apache

Les modèles de journal Apache sont inclus dans les modèles par défaut de Logstash, il est donc assez facile de configurer un filtre pour ce dernier.

  • Remarque: * Si vous utilisez une variante RedHat, telle que CentOS, les journaux se trouvent dans + / var / log / httpd + au lieu de + / var / log / apache2 +, qui est utilisé dans les exemples.

Logstash Forwarder

Sur vos serveurs * Apache *, ouvrez le fichier de configuration + logstash-forwarder.conf +:

sudo vi /etc/logstash-forwarder.conf

Ajoutez ce qui suit dans la section «fichiers» pour envoyer les journaux d’accès Apache de type «apache-access» à votre serveur Logstash:

,
   {
     "paths": [
       "/var/log//access.log"
      ],
     "fields": { "type": "apache-access" }
   }

Sauvegarder et quitter. Rechargez la configuration du redirecteur Logstash pour appliquer les modifications:

sudo service logstash-forwarder restart

Filtre Logstash: Apache

Sur votre * serveur Logstash *, créez un nouveau fichier de configuration de filtre appelé + 12-apache.conf +:

sudo vi /etc/logstash/conf.d/12-apache.conf

Ajoutez ensuite le filtre suivant:

filter {
 if [type] == "apache-access" {
   grok {
     match => { "message" => "%{COMBINEDAPACHELOG}" }
   }
 }
}

Sauvegarder et quitter. Notez que ce filtre tentera de faire correspondre les messages de type «apache-access» avec le modèle COMBINEDAPACHELOG, un des modèles Logstash par défaut.

Maintenant, redémarrez Logstash pour recharger la configuration:

sudo service logstash restart

Maintenant, vos journaux Apache seront rassemblés et filtrés!

Conclusion

Il est possible de collecter et d’analyser des journaux de tous types. Essayez d’écrire vos propres filtres et modèles pour d’autres fichiers journaux.

N’hésitez pas à commenter avec les filtres que vous aimeriez voir ou avec vos propres motifs!

Si vous ne connaissez pas bien Kibana, consultez le troisième didacticiel de cette série: How To Use Visualisations et tableaux de bord Kibana.