Recherche de site Web

Configuration de Logstash sur les droplets pour transférer les journaux Nginx vers Managed OpenSearch


Introduction

Garder une trace des journaux du serveur Web est essentiel au bon fonctionnement de votre site Web, à la résolution des problèmes et à la compréhension du comportement des utilisateurs. Si vous utilisez Nginx, il produit des journaux d'accès et d'erreurs remplis d'informations précieuses. Pour gérer et analyser ces journaux, vous pouvez utiliser Logstash pour les traiter et les transmettre et Managed OpenSearch de DigitalOcean pour indexer et visualiser les données.

Dans ce didacticiel, nous vous expliquerons comment installer Logstash sur un Droplet, le configurer pour collecter vos journaux Nginx et les envoyer à DigitalOcean Managed OpenSearch.

Conditions préalables

  • Un compte DigitalOcean Cloud et un Droplet Ubuntu opérationnels.

  • Nginx doit être configuré et les journaux doivent être générés sur votre Droplet. Pour installer nginx sur un Droplet, reportez-vous à ce tutoriel sur Comment installer Ngnix sur Ubuntu.

  • Le cluster OpenSearch devrait être en cours d’exécution et vous devriez y avoir accès. Consultez Comment créer des clusters OpenSearch pour plus de détails.

  • La connaissance de Nginx, Logstash et OpenSearch est bénéfique.

Cas d'utilisation

Vous pourriez avoir besoin de cette configuration si vous souhaitez :

  • Surveiller et dépanner : suivez les performances et les erreurs du serveur Web en analysant les journaux en temps réel.
  • Analyser les performances : obtenez des informations sur les modèles de trafic Web et les métriques du serveur.
  • Centraliser la journalisation : regroupez les journaux de plusieurs serveurs Nginx dans une seule instance OpenSearch pour une gestion plus facile.

Remarque : Le temps d'installation doit être d'environ 30 minutes.

Étape 1 - Installation de Logstash sur les gouttelettes

Logstash peut être installé à l'aide de fichiers binaires disponibles ici ou de référentiels de packages adaptés à votre système d'exploitation. Pour une gestion et des mises à jour plus faciles, l'utilisation de référentiels de packages est généralement recommandée. Vous pouvez utiliser le gestionnaire de paquets APT sur les systèmes basés sur Debian tels que Ubuntu, tandis que sur les systèmes basés sur Red Hat tels que CentOS ou RHEL, vous pouvez utiliser yum. Les deux méthodes garantissent que Logstash est correctement intégré à l’infrastructure de gestion des packages de votre système, simplifiant ainsi l’installation et la maintenance.

Dans cette section, nous vous guiderons tout au long de l'installation de Logstash à l'aide des gestionnaires de packages apt et yum, en veillant à ce que vous puissiez configurer Logstash sur votre Droplet quelle que soit votre distribution Linux.

Pour trouver le système d'exploitation, exécutez la commande suivante :

cat /etc/os-release

Pour les systèmes basés sur APT (Ubuntu/Debian)

1. Téléchargez et installez la clé de signature publique :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

2.Installez apt-transport-https s'il n'est pas déjà installé :

sudo apt-get install apt-transport-https

3.Ajoutez et enregistrez la définition du référentiel Logstash dans votre liste de sources apt :

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Remarque : Assurez-vous de ne pas utiliser les commandes add-apt-repository car elles pourraient ajouter une entrée deb-src qui n'est pas prise en charge. Si vous rencontrez une erreur liée à une entrée deb-src, supprimez-la du fichier /etc/apt/sources.list. Si vous avez ajouté l'entrée deb-src, vous verrez une erreur semblable à la suivante :

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Si vous supprimez simplement l'entrée deb-src du fichier /etc/apt/sources.list, l'installation devrait fonctionner comme prévu.

4.Mettez à jour l'index du package pour inclure le nouveau référentiel :

sudo apt-get update

5.Installez Logstash à l'aide du gestionnaire de packages apt :

sudo apt-get install logstash

6.Démarrez Logstash et activez-le pour qu'il démarre automatiquement au démarrage :

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash est maintenant installé et exécuté sur votre système.

Pour les systèmes basés sur YUM (CentOS/RHEL)

1. Téléchargez et installez la clé de signature publique pour le référentiel Logstash :

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2.Créez un fichier de référentiel pour Logstash dans /etc/yum.repos.d/. Par exemple, créez un fichier nommé logstash.repo. Vous pouvez copier et coller le contenu ci-dessous pour créer le fichier et mettre à jour le contenu :

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Le référentiel est prêt à être utilisé.

3.Installez Logstash à l'aide du gestionnaire de packages YUM :

sudo yum install logstash

4.Démarrez Logstash et activez-le pour qu'il démarre automatiquement au démarrage :

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash est maintenant installé et exécuté sur votre système.

Étape 2 - Installation du plugin de sortie Open Search

Vous pouvez installer le plugin de sortie OpenSearch en exécutant la commande suivante :

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

Vous pouvez trouver plus d'informations sur le plugin sur ce référentiel de plugins logstash-output-opensearch.

Étape 3 - Configuration de Logstash pour envoyer les journaux Nginx à OpenSearch

Un pipeline Logstash se compose de trois étapes principales : entrée, filtre et sortie. Les pipelines Logstash utilisent des plugins. Vous pouvez utiliser des plugins communautaires ou créer les vôtres.

  • Saisie : cette étape collecte des données provenant de diverses sources. Logstash prend en charge de nombreux plugins d'entrée pour gérer les sources de données telles que les fichiers journaux, les bases de données, les files d'attente de messages et les services cloud.
  • Filtre : cette étape traite et transforme les données collectées lors de l'étape de saisie. 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 magasins de données comme OpenSearch.

Créons maintenant un pipeline.

1.Créez le fichier de configuration Logstash sur /etc/logstash/conf.d/nginx-to-opensearch.conf avec le contenu suivant :

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_access"]
  }
  file {
    path => "/var/log/nginx/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_error"]
  }
}
filter {
  if "nginx_access" in [tags] {
    grok {
      match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  } else if "nginx_error" in [tags] {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  }
}
output {
  if "nginx_access" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_access-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  } else if "nginx_error" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_error-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  }
}

Remplacer :

  • OpenSearch-Hostname avec le nom d'hôte de votre serveur OpenSearch.
  • avec votre mot de passe OpenSearch.

2.Appliquez la nouvelle configuration en redémarrant Logstash :

sudo systemctl restart logstash

3. Vérifiez les journaux Logstash pour vous assurer qu'il traite et transmet correctement les données :

sudo tail -f /var/log/logstash/logstash-plain.log

Répartition de la configuration nginx-to-opensearch.conf

SAISIR

Le bloc input configure deux entrées de fichier pour lire les journaux :

Journaux Nginx : Chemins : /var/log/nginx/access.log (pour les journaux d'accès) /var/log/nginx/error.log (pour les journaux d'erreurs) Position de départ : beginning – Lit à partir du début des fichiers journaux. Chemin Sincedb : /dev/null – Désactive le suivi pour la lecture continue. Balises : ["nginx_access"] pour les journaux d'accès ["nginx_error"] pour les journaux d'erreurs

Remarque : Assurez-vous que le service Logstash a accès aux chemins d'entrée.

FILTRE

Le bloc filter traite les journaux en fonction de leurs balises :

Traitement des journaux : Journaux d'accès : Utilise un filtre grok pour analyser le format du journal d'accès, en extrayant des champs tels que client_ip, timestamp, method, request, http_version, response, bytes, referrer et user_agent. Supprime le message d'origine et certains champs de métadonnées.

Journaux d'erreurs : Vérifie la balise nginx_error et applique un filtre grok pour extraire des champs tels que timestamp, level, pid, tid et error_message. Supprime également les champs message et métadonnées.

SORTIR

Le bloc output achemine les événements vers OpenSearch en fonction de leurs balises :

Routage vers OpenSearch : Pour les journaux d'accès et d'erreurs, il spécifie : Hôtes : URL de l'instance OpenSearch. Utilisateur : doadmin pour l'authentification. Mot de passe : votre mot de passe OpenSearch. Indice : nginx_access-%{+YYYY.MM.dd} pour les journaux d'accès nginx_error-%{+YYYY.MM.dd} pour les journaux d'erreurs Paramètres SSL : active la vérification SSL et des certificats.

Étape 4 - Configurer OpenSearch

1.Ouvrez votre navigateur Web et accédez à l'URL du tableau de bord OpenSearch :

https://<OpenSearch-Hostname>

Remplacez OpenSearch-Hostname par le nom d'hôte de votre serveur OpenSearch.

2.Créez un modèle d'index. un. Dans la barre latérale gauche, accédez à Gestion > Gestion des tableaux de bord > Modèles d'indexation. b. Cliquez sur Créer un modèle d'index en haut à droite. c. Entrez nginx_access-* ou nginx_error-* comme modèle d'index pour correspondre à tous les index créés par Logstash et cliquez sur Étape suivante. d. Cliquez sur Créer un modèle d'index.

3.Assurez-vous que le modèle d'index est créé avec succès et visible dans la liste des modèles d'index.

4.Dans la barre latérale gauche, accédez à Découvrir et sélectionnez le modèle d'index que vous avez créé (nginx_access-* ou nginx_error-*). Vérifiez que les entrées du journal sont visibles et correctement indexées.

5.Créez des visualisations et des tableaux de bord. Consultez Comment créer un tableau de bord dans OpenSearch pour plus de détails.

Dépannage

Vérifier la connectivité

Vous pouvez vérifier que Logstash peut se connecter à OpenSearch en testant la connectivité :

curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"

Remplacer :

  • OpenSearch-Hostname avec le nom d'hôte de votre serveur OpenSearch.
  • avec votre mot de passe OpenSearch.

Ingestion de données

Vous pouvez vous assurer que les données sont correctement indexées dans OpenSearch à l'aide de la commande curl suivante :

curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"

Remplacer :

  • OpenSearch-Hostname avec le nom d'hôte de votre serveur OpenSearch.
  • avec votre mot de passe OpenSearch

Configuration du pare-feu et du réseau

Assurez-vous que les règles de pare-feu et les paramètres réseau autorisent le trafic entre Logstash et OpenSearch sur le port 25060.

Conclusion

Dans ce guide, vous avez appris à configurer Logstash pour collecter et transférer les journaux Nginx vers OpenSearch.

Vous avez expliqué comment utiliser les gestionnaires de packages apt ou yum, en fonction de votre distribution Linux, pour que Logstash soit opérationnel sur votre Droplet. Vous avez également créé et ajusté le fichier de configuration Logstash pour vous assurer que les journaux Nginx sont correctement analysés et envoyés à OpenSearch. Ensuite, vous configurez un modèle d'index dans les tableaux de bord OpenSearch pour vérifier que les journaux sont correctement indexés et sont visibles pour l'analyse. Une fois ces étapes terminées, vous devriez maintenant disposer d'une configuration fonctionnelle dans laquelle Logstash collecte les journaux Nginx et les envoie à OpenSearch. Cette configuration vous permet d'utiliser les puissants outils de recherche et de visualisation d'OpenSearch pour analyser les journaux de votre serveur.

Si vous rencontrez des problèmes, consultez les conseils de dépannage que nous avons fournis et reportez-vous à la documentation Logstash et OpenSearch pour plus d'aide. Une surveillance régulière permettra à votre système de journalisation de fonctionner correctement et efficacement.

Articles connexes: