Comment faire pour résoudre les problèmes courants liés à la pile ELK

introduction

Ce didacticiel est un guide de dépannage ELK Stack (Elasticsearch, Logstash, Kibana). Cela suppose que vous ayez suivi Comment installer Elasticsearch , Logstash et Kibana (ELK Stack) sur Ubuntu 14.04, mais il peut être utile pour dépanner d’autres configurations ELK générales.

Ce didacticiel est structuré comme une série de problèmes courants et de solutions potentielles à ces problèmes, ainsi que des étapes vous permettant de vérifier que les divers composants de votre pile ELK fonctionnent correctement. En tant que tel, n’hésitez pas à parcourir les sections relatives aux problèmes que vous rencontrez.

Problème: Avertissement de modèle d’index Kibana No par défaut

Lorsque vous accédez à Kibana via un navigateur Web, vous pouvez rencontrer une page avec cet avertissement:

Kibana warning:Warning No default index pattern. You must select or create one to continue.
...
Unable to fetch mapping. Do you have indices matching the pattern?

Voici une capture d’écran de l’avertissement:

image: https: //assets.digitalocean.com/articles/elk/troubleshoot-no-default-index-pattern.png [Avertissement: aucun modèle d’index par défaut. Vous devez en sélectionner ou en créer un pour continuer.]

«Impossible d’extraire le mappage» indique qu’Elasticsearch ne contient aucune entrée correspondant au modèle + logstash - * + par défaut. En règle générale, cela signifie que vos journaux ne sont pas stockés dans Elasticsearch en raison de problèmes de communication entre Logstash et Elasticsearch et / ou de votre expéditeur de journaux (par exemple, Filebeat) à Logstash. En d’autres termes, vos journaux ne parviennent pas à parcourir la chaîne de Filebeat à Logstash en passant par Elasticsearch pour une raison quelconque.

image: https: //assets.digitalocean.com/articles/elk/elk-infrastructure.png [La pile ELK]

Pour résoudre les problèmes de communication entre Logstash et Elasticsearch, exécutez la procédure https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-elk-stack-issues#logstash-how-to-check-if- il exécute les sections [Dépannage de Logstash]. Pour résoudre les problèmes de communication entre Filebeat et Logstash, exécutez la procédure https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-elk-stack-issues#filebeat-how-to-check-if- it-is-is-running [Dépannage de Filebeat].

Si vous avez configuré Logstash pour utiliser un modèle d’index autre que celui par défaut, vous pouvez résoudre le problème en spécifiant le modèle d’index approprié dans la zone de texte.

Problème: Kibana impossible de se connecter à Elasticsearch

Lorsque vous accédez à Kibana via un navigateur Web, vous pouvez rencontrer une page avec cette erreur:

Kibana error:Fatal Error
Kibana: Unable to connect to Elasticsearch

Error: Unable to connect to Elasticsearch
Error: Bad Gateway
...

Voici une capture d’écran de l’erreur:

image: https: //assets.digitalocean.com/articles/elk/troubleshoot-unable-connect-elasticsearch.png [Impossible de se connecter à Elasticsearch]

Cela signifie que Kibana ne peut pas se connecter à Elasticsearch. Elasticsearch n’est peut-être pas en cours d’exécution ou Kibana peut être configuré pour rechercher Elasticsearch sur le mauvais hôte et le mauvais port.

Pour résoudre ce problème, assurez-vous qu’Elasticsearch est en cours d’exécution en suivant les sections de dépannage Elasticsearch. Assurez-vous ensuite que Kibana est configuré pour se connecter à l’hôte et au port sur lequel Elasticsearch est exécuté.

Par exemple, si Elasticsearch est exécuté sur + localhost + sur le port + 9200 +, assurez-vous que Kibana est configuré de manière appropriée.

Ouvrez le fichier de configuration Kibana:

sudo vi /opt/kibana/config/kibana.yml

Ensuite, assurez-vous que + elasticsearch_url + est défini correctement.

/opt/kibana/config/kibana.yml excerpt:# The Elasticsearch instance to use for all your queries.
elasticsearch_url: "http://localhost:9200"

Sauvegarder et quitter.

Maintenant, redémarrez le service Kibana pour mettre vos modifications en place:

sudo service kibana restart

Après le redémarrage de Kibana, ouvrez Kibana dans un navigateur Web et vérifiez que l’erreur a été résolue.

Problème: Kibana n’est pas accessible

Le composant Nginx de la pile ELK sert de proxy inverse à Kibana. Si Nginx ne fonctionne pas ou n’est pas configuré correctement, vous ne pourrez pas accéder à l’interface Kibana. Cependant, comme les autres composants ELK ne dépendent pas de Nginx, ils peuvent très bien fonctionner correctement.

Cause: Nginx n’est pas en cours d’exécution

Si Nginx n’est pas en cours d’exécution et que vous essayez d’accéder à votre pile ELK dans un navigateur Web, une erreur similaire à celle-ci peut s’afficher:

Nginx Error:This webpage is not available
ERR_CONNECTION_REFUSED

Cela indique généralement que Nginx n’est pas en cours d’exécution.

Vous pouvez vérifier le statut du service Nginx avec cette commande:

sudo service nginx status

S’il signale que le service n’est pas en cours d’exécution ou n’est pas reconnu, résolvez votre problème en suivant les instructions de la page https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-. elk-stack-on-ubuntu-14-04 # install-nginx [Section Installer Nginx] du tutoriel sur la pile ELK. S’il indique que le service est en cours d’exécution, vous devez reconfigurer Nginx en suivant les mêmes instructions.

Cause: Nginx fonctionne mais ne peut pas se connecter à Kibana

Si Kibana n’est pas accessible et que vous recevez une erreur +502 Bad Gateway +, Nginx est en cours d’exécution mais ne parvient pas à se connecter à Kibana.

image: https: //assets.digitalocean.com/articles/elk/troubleshoot-nginx-502.png [Nginx 502 Bad Gateway]

La première étape pour résoudre ce problème consiste à vérifier si Kibana est en cours d’exécution avec cette commande:

sudo service kibana status

Si Kibana ne fonctionne pas ou n’est pas reconnu, suivez les instructions de la page https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu. -14-04 # install-kibana [Section Install Kibana] du tutoriel sur la pile ELK.

Si cela ne résout pas le problème, il se peut que votre configuration Nginx pose problème. Vous devez consulter la partie configuration du site https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04#install- nginx [section Install Nginx] du didacticiel de la pile ELK. Vous pouvez consulter les journaux d’erreurs Nginx pour trouver des indices:

sudo tail /var/log/nginx/error.log

Cela devrait vous expliquer exactement pourquoi Nginx ne peut pas se connecter à Kibana.

Cause: Impossible d’authentifier l’utilisateur

Si l’authentification de base est activée et que vous ne parvenez pas à passer à l’étape de l’authentification, consultez les journaux des erreurs Nginx pour déterminer les spécificités du problème.

image: https: //assets.digitalocean.com/articles/elk/troubleshoot-unable-to-authenticate.png [Authentification requise]

Pour examiner les erreurs Nginx récentes, utilisez cette commande:

sudo tail /var/log/nginx/error.log

Si vous voyez une erreur + utilisateur n’a pas été trouvé, l’utilisateur n’existe pas dans le fichier` + htpasswd`. Ce type d’erreur est indiqué par l’entrée de journal suivante:

Nginx error logs (user was not found):2015/10/26 12:11:57 [error] 3933#0: *242 user "NonExistentUser" was not found in "/etc/nginx/htpasswd.users", client: 108.60.145.130, server: example.com, request: "GET / HTTP/1.1", host: "45.55.252.231"

Si vous voyez une erreur + password discal + +, l’utilisateur existe mais vous avez fourni un mot de passe incorrect. Ce type d’erreur est indiqué par l’entrée de journal suivante:

Nginx error logs (user password mismatch):2015/10/26 12:12:56 [error] 3933#0: *242 user "kibanaadmin": password mismatch, client: 108.60.145.130, server: example.com, request: "GET / HTTP/1.1", host: "45.55.252.231"

La solution à ces deux erreurs consiste à fournir les informations de connexion appropriées ou à modifier votre fichier + htpasswd + existant avec les identifiants de connexion que vous prévoyez exister. Par exemple, pour créer ou écraser un utilisateur appelé + kibanaadmin + dans le fichier + htpasswd.users +, utilisez cette commande:

sudo htpasswd /etc/nginx/htpasswd.users

Indiquez ensuite le mot de passe souhaité et confirmez-le.

Si vous voyez une erreur + No such file or directory`, le fichier` + htpasswd` spécifié dans la configuration de Nginx n’existe pas. Ce type d’erreur est indiqué par l’entrée de journal suivante:

Nginx error logs (htpasswd file does not exist):2015/10/26 12:17:38 [error] 3933#0: *266 open() "/etc/nginx/htpasswd.users" failed (2: No such file or directory), client: 108.60.145.130, server: example.com, request: "GET / HTTP/1.1", host: "45.55.252.231"

Ici, vous devriez créer un nouveau fichier + / etc / nginx / htpasswd.users + et ajouter un utilisateur (+ kibanaadmin + dans cet exemple), avec cette commande:

sudo htpasswd -c /etc/nginx/htpasswd.users

Entrez un nouveau mot de passe et confirmez-le.

Maintenant, essayez de vous authentifier en tant qu’utilisateur que vous venez de créer.

Logstash: Comment vérifier s’il est en cours d’exécution

Si Logstash n’est pas en cours d’exécution, vous ne pourrez ni recevoir ni analyser les journaux d’expéditeurs de journaux, tels que Filebeat, ni stocker les journaux traités dans Elasticsearch. Cette section vous montrera comment vérifier si Logstash fonctionne normalement.

Vérifier que le service est en cours d’exécution

La chose la plus fondamentale à vérifier est l’état de l’état de Logstash:

sudo service logstash status

Si Logstash est en cours d’exécution, vous verrez cette sortie:

Logstash status (OK):logstash is running

Sinon, si le service ne fonctionne pas, vous verrez ce message:

Logstash status (Bad):logstash is not running

Si Logstash n’est pas en cours d’exécution, essayez de le démarrer avec cette commande:

sudo service logstash start

Puis vérifiez à nouveau son statut, après plusieurs secondes. Logstash est une application Java qui indique «en cours d’exécution» quelques secondes après chaque tentative de démarrage. Il est donc important d’attendre quelques secondes avant de vérifier l’état «non en cours d’exécution». S’il signale «ne fonctionne pas», il est probablement mal configuré. Les deux sections suivantes traitent du dépannage des problèmes courants de Logstash.

Problème: Logstash n’est pas en cours d’exécution

Si Logstash n’est pas en cours d’exécution, il existe quelques causes potentielles. Cette section couvrira une variété de cas courants où Logstash échouera et proposera des solutions potentielles.

Cause: la configuration contient une erreur de syntaxe

Si Logstash contient des erreurs dans ses fichiers de configuration, situés dans le répertoire + / etc / logstash / conf.d +, le service ne pourra pas démarrer correctement. La meilleure chose à faire est de consulter les journaux Logstash pour savoir pourquoi cela échoue.

Ouvrez deux sessions de terminal sur votre serveur afin de pouvoir afficher les journaux Logstash tout en essayant de démarrer le service.

Dans la première session de terminal, nous examinerons les journaux:

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

Cela affichera les dernières entrées du journal, ainsi que toutes les futures entrées du journal.

Dans la deuxième session de terminal, essayez de démarrer le service Logstash:

sudo service logstash start

Revenez à la première session de terminal pour consulter les journaux générés au démarrage de Logstash.

Si vous voyez des entrées de journal contenant des messages d’erreur, essayez de lire le (s) message (s) pour déterminer ce qui ne va pas. Voici un exemple des journaux d’erreurs que vous pouvez voir si la configuration de Logstash comporte une erreur de syntaxe (accolades mal assorties):

Logstash logs (Syntax error):...
{:timestamp=>"2015-10-28T11:51:09.205000-0400", :message=>"Error: Expected one of #, => at line 12, column 6 (byte 209) after input {\n  lumberjack {\n    port => 5043\n    type => \"logs\"\n    ssl_certificate => \"/etc/pki/tls/certs/logstash-forwarder.crt\"\n    ssl_key => \"/etc/pki/tls/private/logstash-forwarder.key\"\n  \n}\n\n\nfilter {\n  if "}
{:timestamp=>"2015-10-28T11:51:09.228000-0400", :message=>"You may be interested in the '--configtest' flag which you can\nuse to validate logstash's configuration before you choose\nto restart a running system."}

Le dernier message indiquant que nous pourrions être intéressés par la validation de la configuration indique que la configuration contient une erreur de syntaxe. Le message précédent fournit un message d’erreur plus spécifique, dans ce cas, il manque une accolade fermante dans la section + input + de la configuration. Pour résoudre ce problème, modifiez la partie incriminée de votre configuration Logstash:

sudo vi /etc/logstash/conf.d/

Recherchez la ligne contenant l’entrée incorrecte et corrigez-la, puis enregistrez-la et quittez-la.

Maintenant, sur le deuxième terminal, démarrez le service Logstash:

sudo service logstash start

Si le problème a été résolu, il ne devrait y avoir aucune nouvelle entrée de journal (Logstash n’enregistre pas un démarrage réussi). Après quelques secondes, vérifiez l’état du service Logstash:

sudo service logstash status

Si cela fonctionne, vous avez résolu le problème.

Vous pouvez avoir un problème de configuration différent de notre exemple. Nous aborderons quelques autres problèmes de configuration courants de Logstash. Comme toujours, si vous êtes capable de comprendre la signification de l’erreur, essayez de la réparer vous-même.

Cause: les fichiers SSL n’existent pas

Une autre cause fréquente de non-exécution de Logstash est un problème lié au certificat SSL et aux fichiers de clé. Par exemple, s’ils n’existent pas là où votre configuration Logstash les spécifie, vos journaux afficheront une erreur comme celle-ci:

Logstash logs (SSL key file does not exist):{:timestamp=>"2017-12-01T16:51:31.656000+0000", :message=>"Invalid setting for beats input plugin:\n\n  input {\n    beats {\n      # This setting must be a path\n      # File does not exist or cannot be opened /etc/pki/tls/certs/logstash-forwarder.crt\n      ssl_certificate => \"/etc/pki/tls/certs/logstash-forwarder.crt\"\n      ...\n    }\n  }", :level=>:error}
{:timestamp=>"2017-12-01T16:51:31.671000+0000", :message=>"Invalid setting for beats input plugin:\n\n  input {\n    beats {\n      # This setting must be a path\n      # File does not exist or cannot be opened /etc/pki/tls/private/logstash-forwarder.key\n      ssl_key => \"/etc/pki/tls/private/logstash-forwarder.key\"\n      ...\n    }\n  }", :level=>:error}
{:timestamp=>"2017-12-01T16:51:31.685000+0000", :message=>"Error: Something is wrong with your configuration.", :level=>:error}

Pour résoudre ce problème particulier, vous devez vous assurer que vous avez un fichier de clé SSL (https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-4-on -ubuntu-14-04 # generate-ssl-certificates [en générer un] si vous l’avez oublié) et qu’il est placé à l’emplacement approprié (+ / etc / pki / tls / private / logstash-forwarder.key +, dans l’exemple). Si vous avez déjà un fichier de clé, assurez-vous de le déplacer à l’emplacement approprié et assurez-vous que la configuration Logstash y pointe.

Maintenant, démarrez le service Logstash:

sudo service logstash start

Si le problème a été résolu, il ne devrait y avoir aucune nouvelle entrée de journal. Après quelques secondes, vérifiez l’état du service Logstash:

sudo service logstash status

Si cela fonctionne, vous avez résolu le problème.

Problème: Logstash est en cours d’exécution mais ne stocke pas les journaux dans Elasticsearch

Si Logstash est en cours d’exécution mais ne stocke pas de journaux dans Elasticsearch, c’est qu’il ne peut pas atteindre Elasticsearch. En règle générale, cela est dû au fait que Elasticsearch n’est pas en cours d’exécution. Si tel est le cas, les journaux Logstash afficheront des messages d’erreur tels que:

Logstash logs (Elasticsearch isn't running):{:timestamp=>"2017-12-01T16:53:29.571000+0000", :message=>"Connection refused (Connection refused)", :class=>"Manticore::SocketException", :backtrace=>[], :level=>:error}

Dans ce cas, assurez-vous qu’Elasticsearch est en cours d’exécution en suivant les étapes de dépannage Elasticsearch.

Vous pouvez également voir des erreurs comme ceci:

Logstash logs (Logstash is configured to send its output to the wrong host):{:timestamp=>"2017-12-01T16:56:26.274000+0000", :message=>"Attempted to send a bulk request to Elasticsearch configured at '[\"http://localhost:9200/\"]', but Elasticsearch appears to be unreachable or down!", :error_message=>"Connection refused (Connection refused)", :class=>"Manticore::SocketException", :client_config=>{:hosts=>["http://localhost:9200/"], :ssl=>nil, :transport_options=>{:socket_timeout=>0, :request_timeout=>0, :proxy=>nil, :ssl=>{}}, :transport_class=>Elasticsearch::Transport::Transport::HTTP::Manticore, :logger=>nil, :tracer=>nil, :reload_connections=>false, :retry_on_failure=>false, :reload_on_failure=>false, :randomize_hosts=>false}, :level=>:error}
{:timestamp=>"2017-12-01T16:57:49.090000+0000", :message=>"SIGTERM received. Shutting down the pipeline.", :level=>:warn}

Cela indique que la section + output + de votre configuration Logstash peut pointer vers le mauvais hôte. Pour résoudre ce problème, assurez-vous qu’Elasticsearch est en cours d’exécution et vérifiez votre configuration Logstash:

sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

Vérifiez que la ligne + hôtes ⇒ [" "] + pointe vers l’hôte qui exécute Elasticsearch

Logstash output configuration excerptoutput {
 elasticsearch {
   hosts => ["localhost:9200"]
   sniffing => true
. . .

Sauvegarder et quitter. Cet exemple suppose qu’Elasticsearch est exécuté sur + localhost +.

Redémarrez le service Logstash.

sudo service logstash restart

Ensuite, recherchez les erreurs dans les journaux Logstash.

Filebeat: Comment vérifier s’il est en cours d’exécution

Filebeat s’exécute sur vos ordinateurs * Client * et expédie les journaux sur votre serveur ELK. Si Filebeat ne fonctionne pas, vous ne pourrez pas envoyer vos différents journaux à Logstash. En conséquence, les journaux ne seront pas stockés dans Elasticsearch et ils n’apparaîtront pas dans Kibana. Cette section vous montrera comment vérifier si Filebeat fonctionne normalement.

Vérifiez que les journaux sont correctement expédiés

Le moyen le plus simple de déterminer si Filebeat envoie correctement les journaux à Logstash consiste à rechercher les erreurs Filebeat dans le journal syslog.

sudo tail /var/log/syslog | grep filebeat

Si tout est configuré correctement, vous devriez voir certaines entrées du journal lorsque vous arrêtez ou démarrez le processus Filebeat, mais rien d’autre.

Si vous ne voyez aucune entrée de journal, vous devez vérifier que Filebeat est en cours d’exécution.

Vérifier que le service est en cours d’exécution

La chose la plus fondamentale à vérifier est le statut de Filebeat:

sudo service filebeat status

Si Filebeat est en cours d’exécution, vous verrez cette sortie:

Output* filebeat is running

Sinon, si le service ne fonctionne pas, vous verrez ce message:

Output * filebeat is not running

Si Filebeat n’est pas en cours d’exécution, essayez de le démarrer avec cette commande:

sudo service filebeat start

Puis vérifiez à nouveau le statut. Si cela ne résout pas le problème, les sections suivantes vous aideront à résoudre vos problèmes Filebeat. Nous aborderons les problèmes courants de Filebeat et leur résolution.

Problème: Filebeat n’est pas en cours d’exécution

Si Filebeat ne fonctionne pas sur votre ordinateur * client *, il existe plusieurs causes possibles. Cette section couvrira une variété de cas courants où Filebeat ne fonctionnera pas et proposera des solutions potentielles.

Cause: la configuration contient une erreur de syntaxe

Si Filebeat contient des erreurs dans son fichier de configuration, qui se trouve dans + / etc / filebeat / filebeat.yml +, le service ne pourra pas démarrer correctement. Il se fermera immédiatement avec des erreurs telles que:

OutputLoading config file error: YAML config parsing failed on /etc/filebeat/filebeat.yml: yaml: line 13: could not find expected ':'. Exiting.

Dans ce cas, il y a une faute de frappe dans le fichier de configuration. Pour résoudre ce problème, modifiez la partie incriminée de la configuration Filebeat. Pour obtenir des conseils, suivez la sous-section * Configurer Filebeat * du https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14- 04 # set-up-filebeat- (add-client-servers) [Configurer Filebeat (Ajouter des serveurs client)]) du didacticiel de la pile ELK.

Après avoir modifié la configuration de Filebeat, essayez de redémarrer le service:

sudo service filebeat start

Si aucune erreur ne s’affiche, le problème est résolu.

Cause: le certificat SSL est manquant ou invalide

Les communications entre Filebeat et Logstash nécessitent un certificat SSL pour l’authentification et le cryptage. Si Filebeat ne démarre pas correctement, vous devez rechercher dans le syslog des erreurs semblables à celles-ci:

OutputError Initialising publisher: open /etc/pki/tls/certs/logstash-forwarder.crt: no such file or directory

Cela indique que le fichier + logstash-forwarder.crt + ne se trouve pas à l’emplacement approprié. Pour résoudre ce problème, copiez le certificat SSL du serveur ELK sur votre machine client en suivant les sous-sections appropriées de la page https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and- kibana-elk-stack-on-ubuntu-14-04 # set-up-filebeat- (add-client-servers) [Section Configuration de Filebeat (Ajout de serveurs clients)] du didacticiel de la pile ELK.

Après avoir placé le fichier de certificat SSL approprié à l’emplacement approprié, essayez de redémarrer Filebeat.

Si le certificat SSL n’est pas valide, les journaux devraient ressembler à ceci:

syslog (Certificate is invalid):transport.go:125: SSL client failed to connect with: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "elk.example.com")

Notez que le message d’erreur indique que le certificat existe mais n’est pas valide. Dans ce cas, vous devez suivre les règles https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04#generate. -ssl-certificates [section Générer des certificats SSL] du didacticiel de pile ELK, puis copiez le certificat SSL sur la machine cliente (https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-) et-kibana-elk-stack-on-ubuntu-14-04 # set-up-filebeat- (serveurs-add-client) [Configuration de Filebeat (ajout de serveurs client)]).

Après vous être assuré que le certificat est valide et qu’il se trouve au bon emplacement, vous devrez redémarrer Logstash (sur le serveur ELK) pour le forcer à utiliser la nouvelle clé SSL:

sudo service logstash restart

Ensuite, démarrez Filebeat (sur la machine cliente):

sudo service filebeat start

Vérifiez à nouveau les journaux pour vous assurer que le problème a été résolu.

Problème: Filebeat ne peut pas se connecter à Logstash

Si Logstash (sur le serveur ELK) n’est pas accessible par Filebeat (votre serveur client), vous verrez les entrées du journal des erreurs comme ceci:

syslog  (Connection refused):transport.go:125: SSL client failed to connect with: dial tcp 203.0.113.4:5044: getsockopt: connection refused

Les raisons courantes pour lesquelles Logstash est inaccessible sont les suivantes:

  • Logstash n’est pas en cours d’exécution (sur le serveur ELK)

  • Les pare-feu sur l’un ou l’autre serveur bloquent la connexion sur le port + 5043 +

  • Filebeat n’est pas configuré avec l’adresse IP, le nom d’hôte ou le port appropriés

Pour résoudre ce problème, vérifiez d’abord que Logstash est en cours d’exécution sur le serveur ELK en suivant les sections de dépannage de Logstash de ce guide. Deuxièmement, vérifiez que le pare-feu ne bloque pas le trafic réseau. Troisièmement, vérifiez que Filebeat est configuré avec l’adresse IP correcte (ou le nom d’hôte) et le port du serveur ELK.

La configuration de Filebeat peut être modifiée avec cette commande:

sudo vi /etc/filebeat/filebeat.yml

Après avoir vérifié que les informations de connexion Logstash sont correctes, essayez de redémarrer Filebeat:

sudo service filebeat restart

Consultez à nouveau les journaux de Filebeat pour vous assurer que le problème a été résolu.

Pour obtenir des instructions générales sur Filebeat, suivez la sous-section * Configurer Filebeat * du site https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu- 14-04 # set-up-filebeat- (add-client-servers) [Configurer Filebeat (Ajouter des serveurs client)] du tutoriel sur la pile ELK.

Elasticsearch: Comment vérifier s’il est en cours d’exécution

Si Elasticsearch ne fonctionne pas, aucune de vos piles ELK ne fonctionnera. Logstash ne pourra pas ajouter de nouveaux journaux à Elasticsearch et Kibana ne pourra pas extraire de journaux à partir de Elasticsearch pour la génération de rapports. Cette section vous montrera comment vérifier si Elasticsearch fonctionne normalement.

Vérifier que le service est en cours d’exécution

La chose la plus fondamentale à vérifier est le statut du service Elasticsearch:

sudo service elasticsearch status

Si Elasticsearch est en cours d’exécution, vous verrez cette sortie:

Elasticsearch status (OK): * elasticsearch is running

Sinon, si le service ne fonctionne pas, vous verrez ce message:

Elasticsearch status (Bad): * elasticsearch is not running

Dans ce cas, vous devriez suivre les sections suivantes, qui traitent du dépannage d’Elasticsearch.

Vérifier qu’il répond aux requêtes HTTP

Par défaut, Elasticsearch répond aux requêtes HTTP sur le port + 9200 + (cela peut être personnalisé, dans son fichier de configuration, en spécifiant une nouvelle valeur + http.port +). Nous pouvons utiliser + curl + pour envoyer des requêtes à, et récupérer des informations utiles à partir de Elasticsearch.

Envoyez une requête HTTP GET en utilisant curl avec cette commande (en supposant que votre Elasticsearch soit accessible à + ​​localhost +):

curl localhost:9200

Si Elasticsearch est en cours d’exécution, vous devriez voir une réponse ressemblant à ceci:

Output{
 "name" : "Hildegarde",
 "cluster_name" : "elasticsearch",
 "cluster_uuid" : "E8q9kr-0RxycYhSLNx8xeA",
 "version" : {
   "number" : "2.4.6",
   "build_hash" : "5376dca9f70f3abef96a77f4bb22720ace8240fd",
   "build_timestamp" : "2017-07-18T12:17:44Z",
   "build_snapshot" : false,
   "lucene_version" : "5.5.4"
 },
 "tagline" : "You Know, for Search"
}

Vous pouvez également vérifier la santé de votre cluster Elasticsearch avec cette commande:

curl localhost:9200/_cluster/health?pretty

Votre sortie devrait ressembler à ceci:

Output{
 "cluster_name" : "elasticsearch",
 "status" : "yellow",
 "timed_out" : false,
 "number_of_nodes" : 1,
 "number_of_data_nodes" : 1,
 "active_primary_shards" : 6,
 "active_shards" : 6,
 "relocating_shards" : 0,
 "initializing_shards" : 0,
 "unassigned_shards" : 6,
 "delayed_unassigned_shards" : 0,
 "number_of_pending_tasks" : 0,
 "number_of_in_flight_fetch" : 0,
 "task_max_waiting_in_queue_millis" : 0,
 "active_shards_percent_as_number" : 50.0
}

Notez que si votre cluster Elasticsearch est constitué d’un seul nœud, votre cluster aura probablement le statut + yellow +. Ceci est normal pour un cluster à un seul nœud; vous pouvez passer à un statut + green + en ajoutant au moins un nœud à votre cluster Elasticsearch.

Problème: Elasticsearch n’est pas en cours d’exécution

Si Elasticsearch n’est pas en cours d’exécution, les causes possibles sont nombreuses. Cette section couvrira une variété de cas courants où Elasticsearch échouera et proposera des solutions potentielles.

Cause: cela n’a jamais été commencé

Si Elasticsearch ne fonctionne pas, il n’a peut-être pas été démarré en premier lieu; Elasticsearch ne démarre pas automatiquement après l’installation. La solution à cela est de le démarrer manuellement la première fois:

sudo service elasticsearch start

Cela devrait indiquer que Elasticsearch est en train de démarrer. Attendez environ 10 secondes, puis vérifiez à nouveau le statut de Elasticsearch.

Cause: le service Elasticsearch n’a pas été activé et le serveur a redémarré.

Si Elasticsearch fonctionnait correctement mais ne fonctionnait plus, il pourrait ne pas être activé correctement. Par défaut, le service Elasticsearch n’est pas activé pour démarrer au démarrage, vous devez explicitement permettre à Elasticsearch de démarrer automatiquement au démarrage:

sudo update-rc.d elasticsearch defaults 95 10

Elasticsearch devrait maintenant démarrer automatiquement au démarrage. Vérifiez que cela fonctionne en redémarrant votre serveur.

Cause: Elasticsearch est mal configuré

Si Elasticsearch contient des erreurs dans son fichier de configuration, situé dans + / etc / elasticsearch / elasticsearch.yml +, le service ne pourra pas démarrer correctement. La meilleure chose à faire est de rechercher dans le journal des erreurs Elasticsearch des indices sur les raisons de son échec.

Ouvrez deux sessions de terminal sur votre serveur afin de pouvoir afficher les journaux Elasticsearch tout en essayant de démarrer le service.

Dans la première session de terminal, nous examinerons les journaux:

tail -f /var/log/elasticsearch/elasticsearch.log

Cela affichera les dernières entrées du journal, ainsi que toutes les futures entrées du journal.

Dans la deuxième session de terminal, essayez de démarrer le service Elasticsearch:

sudo service elasticsearch start

Revenez à la première session de terminal pour consulter les journaux générés lors du démarrage d’Elasticsearch.

Si vous voyez des entrées de journal qui indiquent des erreurs ou des exceptions (par exemple, + ERROR,` + Exception` ou + erreur), essayez de trouver une ligne indiquant la cause de l’erreur. Voici un exemple des journaux d’erreurs que vous verrez si Elasticsearch + network.host + est défini sur un nom d’hôte ou une adresse IP non résolvable:

Elasticsearch logs (Bad):...
[2015-10-27 15:24:43,495][INFO ][node                     ] [Shadrac] starting ...
[2015-10-27 15:24:43,626][ERROR][bootstrap                ] [Shadrac] Exception
org.elasticsearch.transport.BindTransportException: Failed to resolve host [null]
   at org.elasticsearch.transport.netty.NettyTransport.bindServerBootstrap(NettyTransport.java:402)
   at org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:283)
   at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
   at org.elasticsearch.transport.TransportService.doStart(TransportService.java:153)
   at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
   at org.elasticsearch.node.internal.InternalNode.start(InternalNode.java:257)
   at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:160)
   at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:248)
   at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
Caused by: java.net.UnknownHostException: : unknown error
...

Notez que la dernière ligne des exemples de journaux indique qu’une erreur + UnknownHostException: + s’est produite. Cet exemple particulier indique que le + réseau.host + est défini sur + nom_hôte incorrect +, ce qui ne résout rien. Dans une configuration Elasticsearch à un seul nœud, cela doit être défini sur + localhost + ou + 127.0.0.1 +.

Pour résoudre ce problème, éditez le fichier de configuration Elasticsearch:

sudo vi /etc/elasticsearch/elasticsearch.yml

Recherchez la ligne contenant la mauvaise entrée et corrigez-la. Dans le cas de l’exemple, nous devrions chercher la ligne qui spécifie + network.host: nomhôte incorrect + et changez-la afin qu’elle ressemble à ceci:

/etc/elasticsearch/elasticsearch.yml extrait

...
network.host:
...

Sauvegarder et quitter.

Maintenant, sur le deuxième terminal, démarrez le service Elasticsearch:

sudo service elasticsearch start

Si le problème a été résolu, vous devriez voir des journaux sans erreur indiquant que Elasticsearch a démarré. Cela pourrait ressembler à quelque chose comme ça:

Elasticsearch logs (Good):...
[2015-10-27 15:29:21,980][INFO ][node                     ] [Garrison Kane] initializing ...
[2015-10-27 15:29:22,084][INFO ][plugins                  ] [Garrison Kane] loaded [], sites []
[2015-10-27 15:29:22,124][INFO ][env                      ] [Garrison Kane] using [1] data paths, mounts [[/ (/dev/vda1)]], net usable_space [52.1gb], net total_space [58.9gb], types [ext4]
[2015-10-27 15:29:24,532][INFO ][node                     ] [Garrison Kane] initialized
[2015-10-27 15:29:24,533][INFO ][node                     ] [Garrison Kane] starting ...
[2015-10-27 15:29:24,646][INFO ][transport                ] [Garrison Kane] bound_address {inet[/127.0.0.1:9300]}, publish_address {inet[localhost/127.0.0.1:9300]}
[2015-10-27 15:29:24,682][INFO ][discovery                ] [Garrison Kane] elasticsearch/WJvkRFnbQ5mLTgOatk0afQ
[2015-10-27 15:29:28,460][INFO ][cluster.service          ] [Garrison Kane] new_master [Garrison Kane][WJvkRFnbQ5mLTgOatk0afQ][elk-run][inet[localhost/127.0.0.1:9300]], reason: zen-disco-join (elected_as_master)
[2015-10-27 15:29:28,561][INFO ][http                     ] [Garrison Kane] bound_address {inet[/127.0.0.1:9200]}, publish_address {inet[localhost/127.0.0.1:9200]}
[2015-10-27 15:29:28,562][INFO ][node                     ] [Garrison Kane] started
...

Maintenant, si vous vérifiez l’état d’Elasticsearch, vous devriez voir qu’il fonctionne correctement.

Vous pouvez avoir un problème de configuration différent de notre exemple. Si vous êtes en mesure de comprendre la signification de l’erreur, essayez de la réparer vous-même. Si cela échoue, essayez de rechercher sur Internet des lignes d’erreur individuelles qui ne contiennent pas d’informations spécifiques à votre serveur (par exemple, l’adresse IP ou le nom du noeud Elasticsearch généré automatiquement).

Conclusion

J’espère que ce guide de dépannage vous a aidé à résoudre les problèmes que vous rencontriez lors de la configuration de votre pile ELK. Si vous avez des questions ou des suggestions, laissez-les dans les commentaires ci-dessous!