Introduction
La gestion efficace des journaux de serveur Web est cruciale pour maintenir la performance de votre site Web, pour résoudre les problèmes et pour obtenir des aperçus du comportement des utilisateurs. Apache est l’un des serveurs Web les plus populaires. Il génère des journaux d’accès et d’erreurs contenant des informations précieuses. Pour gérer et analyser ces journaux de manière efficace, vous pouvez utiliser Logstash pour traiter et les transmettre à l’OpenSearch géré par DigitalOcean pour l’indexation et la visualisation.
Dans ce tutoriel, nous vous guiderons à travers l’installation de Logstash sur une Droplet, configurez-le pour collecter vos journaux Apache et envoyez-les pour l’analyse à l’OpenSearch géré.
Prérequis
- Droplet/s avec un serveur Web Apache installé.
- Cluster OpenSearch géré
Étape 1 – Installez Logstash
Logstash peut être installé à l’aide de fichiers binaires ou via les dépôts de paquets. Pour une gestion et des mises à jour plus faciles, l’utilisation de dépôts de paquets est généralement recommandée.
Dans cette section, nous vous guiderons à travers l’installation de Logstash sur votre Droplet en utilisant à la fois le gestionnaire de paquets APT et YUM.
Identifions l’OS :
Pour les Systèmes basés sur APT (Ubuntu/Debian)
Téléchargez et installez la Clé de Signature Publique :
Vous pourriez avoir besoin d’installer le paquet apt-transport-https
sur Debian avant de continuer :
Enregistrez la définition du dépôt dans /etc/apt/sources.list.d/elastic-8.x.list
:
Utilisez la méthode echo
décrite ci-dessus pour ajouter le dépôt de Logstash. Ne n’utilisez pas add-apt-repository
car il ajoutera une entrée deb-src
également, mais nous n’offrons pas un paquet source. Si vous avez ajouté l’entrée deb-src
, vous verrez une erreur comme suit :
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
Supprimez simplement l’entrée deb-src
du fichier /etc/apt/sources.list
et l’installation devrait fonctionner comme prévu.
Exécutez sudo apt-get update
et le dépôt est prêt à être utilisé. Vous pouvez l’installer avec :
Pour les systèmes basés sur YUM (CentOS/RHEL)
Téléchargez et installez la clé de signature publique :
Ajoutez ce qui suit dans votre fichier /etc/yum.repos.d/logstash.repo
. Vous pouvez utiliser ‘tee’ pour mettre à jour et créer le fichier.
Votre dépôt est prêt à être utilisé. Vous pouvez l’installer avec :
Pour plus d’information, veuillez vous référer au guide Installing Logstash.
Étape 2 – Configurer Logstash pour envoyer les journaux à OpenSearch
Un pipeline Logstash se compose de trois étapes principales : l’entrée, le filtrage et la sortie. Les pipelines Logstash utilisent des plugins. Vous pouvez utiliser des plugins communautaires ou en créer vous-même.
-
Entrée : Cette étape collecte des données à partir de diverses sources. Logstash supporte de nombreux plugins d’entrée pour gérer des sources de données telles que les fichiers de journaux, les bases de données, les files de messages et les services cloud.
- Filtre : Cette étape traite et transforme les données collectées à l’étape d’entrée. Les filtres peuvent modifier, enrichir et structurer les données pour les rendre plus utiles et plus faciles à analyser.
- Sortie : Cette étape envoie les données traitées vers une destination. Les destinations peuvent inclure des bases de données, des fichiers et des stockages de données comme OpenSearch.
Étape 3 – Installation du plugin de sortie Open Search
Le plugin de sortie OpenSearch peut être installé en exécutant la commande suivante :
Plus d’informations peuvent être trouvées sur ce logstash-output-opensearch-plugin référentiel.
Maintenant, nous allons créer un pipeline :
Créez un nouveau fichier dans le dossier /etc/logstash/conf.d/ nommé apache_pipeline.conf
et copiez le contenu suivant.
Remplacez <OpenSearch_Host>
par le nom d’hôte du serveur OpenSearch et <OpenSearch_Password>
par votre mot de passe OpenSearch.
Voyons détailler la configuration ci-dessus.
-
ENTRÉE : Cette option permet de configurer une source d’événements. Le plugin d’entrée ‘file’ est utilisé ici.
-
path => “/var/log/apache2/access.log” : Indique le chemin vers le fichier journal d’accès Apache que Logstash lira.
Veuillez vous assurer que le service Logstash a accès au chemin d’entrée.
-
start_position => “beginning” : Définit où Logstash doit commencer à lire le fichier de journal. “beginning” indique que Logstash doit commencer à traiter le fichier à partir du début plutôt que de l’extrémité.
-
sincedb_path => “/dev/null”: Spécifie le chemin vers un fichier sincedb. Les fichiers sincedb sont utilisés par Logstash pour garder trace de la position actuelle dans les fichiers de logs, ce qui lui permet de reprendre où il en était en cas de redémarrage ou d’échecs.
-
tags => “apache_access”: Attribue une étiquette aux événements lus à cet entrée. Les étiquettes sont utiles pour identifier et filtrer les événements à l’intérieur de Logstash, souvent utilisées en aval dans les étapes de sortie ou de filtrage de la configuration. Nous utilisons des étiquettes pour ce dernier.
-
FILTRE : il s’agit de traiter les événements.
Débutant avec les conditionnelles :
Cela vérifie si l’étiquette
apache_access
existe dans le champ [tags] des événements de logs entrants. Nous utilisons cette condition pour appliquer le FILTRE GROK approprié pour les journaux d’accès et d’erreurs Apache. -
Filtre Grok (pour les journaux d’accès Apache) :
Le filtre grok
%{HTTPD_COMBINEDLOG}
est un modèle prédéfini dans Logstash utilisé pour parser le format de journal d’accès combiné Apache. Celui-ci extrait des champs tels que l’adresse IP, l’heure, la méthode HTTP, l’URI, le code de statut, etc., à partir du champ message des événements entrants. -
Filtre de modification
Supprimer
(optionnel) : Après l’analyse des journaux d’Apache, nous utilisons la modification-supprimer pour enlever certains champs. -
Autre condition : Le bloc else est exécuté si l’étiquette
apache_access
n’est pas présente dans [tags]. Ce bloc else contient un autre filtre GROK pour les journaux d’erreurs Apache.Ce filtre GROK
%{HTTPD24_ERRORLOG}
parse les messages conformes au format de journal d’erreurs Apache. Il extrait les champs pertinents pour les journaux d’erreurs, tels que l’horodatage, le niveau de log, le message d’erreur, etc.Les schémas GROK peuvent être trouvés à l’adresse : https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.
-
SORTIE : Le plugin de sortie envoie des événements vers une destination particulière.
Le bloc de sortie commence avec une condition if. Nous utilisons des conditionnels if ici
Cette condition if est utilisée pour router les journaux vers OpenSearch vers deux indexs distincts,
apache_error
etapache_access
.Explorons le plugin de sortie OpenSearch :
hosts => "https://XXX:25060" Votre nom d'hôte Open search user => "doadmin" Votre nom d'utilisateur Open search password => "XXXXX" Mot de passe OpenSearch index => "apache_error" Nom d'index dans OpenSearch ssl_certificate_verification => true SSL certificate verification activée
Étape 4 – Démarrer Logstash
Une fois la Pipeline configurée, démarrez le service Logstash :
Étape 5 – Dépannage
Vérifier la Connectivité
Vous pouvez vérifier que Logstash peut se connecter à OpenSearch en testant la connectivité :
Remplacez <your-opensearch-server> par le nom d’hôte du serveur OpenSearch et <your_username>, <your_password> par vos informations d’identification OpenSearch.
Ingestion de Données
Assurez-vous que les données sont correctement indexées dans OpenSearch :
Remplacez <your-opensearch-server> par le nom d’hôte du serveur OpenSearch et <your_username>, <your_password> par vos informations d’identification OpenSearch. De même, <your-index-name> par le nom de l’index.
Pare-feu et Configuration réseau
Assurez-vous que les règles du pare-feu et les paramètres réseau permettent le trafic entre Logstash et OpenSearch sur le port 25060
.
Journaux
Les journaux de Logstash se trouvent à /var/log/logstash/logstash-plain.log
Pour plus de détails, voir le Guide de résolution des problèmes .
Conclusion
Dans ce guide, nous avons passé en revue la configuration de Logstash pour collecter et transférer les journaux Apache vers OpenSearch. Voici un rapide résumé de ce que nous avons couvert :
Installation de Logstash : Nous avons expliqué comment utiliser les gestionnaires de paquets APT ou YUM, selon votre distribution Linux, pour installer Logstash sur votre Droplet.
Configuration de Logstash : Nous avons créé et ajusté le fichier de configuration de Logstash pour s’assurer que les journaux Apache sont correctement analysés et envoyés vers OpenSearch.
Vérification dans OpenSearch : Nous avons configuré un modèle d’index dans OpenSearch Dashboards pour confirmer que vos journaux sont correctement indexés et visibles pour l’analyse.
Avec ces étapes terminées, vous devez désormais avoir une configuration fonctionnelle où Logstash collecte les journaux Apache et les envoie vers OpenSearch.
Source:
https://www.digitalocean.com/community/tutorials/forward-apache-logs-to-opensearch-via-logstash