web-dev-qa-db-fra.com

Elasticsearch ne peut pas écrire dans les fichiers journaux

Je souhaite activer les journaux d'Elasticsearch.

Lorsque j'exécute des binaires elasticsearch, je me rends compte que j'ai des problèmes de journalisation: la configuration ne peut pas être chargée!

Voici la sortie:

~ $ Sudo /usr/share/elasticsearch/bin/elasticsearch
Failed to configure logging...
org.elasticsearch.ElasticsearchException: Failed to load logging configuration
    at org.elasticsearch.common.logging.log4j.LogConfigurator.resolveConfig(LogConfigurator.Java:117)
    at org.elasticsearch.common.logging.log4j.LogConfigurator.configure(LogConfigurator.Java:81)
    at org.elasticsearch.bootstrap.Bootstrap.setupLogging(Bootstrap.Java:94)
    at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.Java:178)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:32)
Caused by: Java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config
    at Sun.nio.fs.UnixException.translateToIOException(UnixException.Java:86)
    at Sun.nio.fs.UnixException.rethrowAsIOException(UnixException.Java:102)
    at Sun.nio.fs.UnixException.rethrowAsIOException(UnixException.Java:107)
    at Sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.Java:55)
    at Sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.Java:144)
    at Sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.Java:97)
    at Java.nio.file.Files.readAttributes(Files.Java:1686)
    at Java.nio.file.FileTreeWalker.walk(FileTreeWalker.Java:109)
    at Java.nio.file.FileTreeWalker.walk(FileTreeWalker.Java:69)
    at Java.nio.file.Files.walkFileTree(Files.Java:2602)
    at org.elasticsearch.common.logging.log4j.LogConfigurator.resolveConfig(LogConfigurator.Java:107)
    ... 4 more
log4j:WARN No appenders could be found for logger (node).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
Java HotSpot(TM) Server VM warning: You have loaded library /usr/share/elasticsearch/lib/sigar/libsigar-x86-linux.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.

Je cours sous linuxmint 17 et j'utilise la dernière ES.

39
4m1nh4j1

Si vous avez installé elasticsearch à l'aide d'un gestionnaire de packages comme yum ou apt-get vous ne devez pas lancer elasticsearch de cette façon. Essayez d'utiliser le service: par exemple /etc/init.d/elasticsearch ou en utilisant la commande Sudo service elasticsearch start

Vous devez également vérifier si le fichier logging.yml se trouve à l'emplacement mentionné dans la trace de pile: /usr/share/elasticsearch/config

Utiliser Sudo pour démarrer elasticsearch n'est pas bon, vous pouvez faire Sudo elasticsearch pour s'exécuter en tant qu'utilisateur elasticsearch, mais je préfère utiliser l'appel de service comme décrit dans la deuxième phrase.

J'espère que ça t'as aidé

39
Jettro Coenradie

Votre elasticsearch.yml fichier ainsi que logging.yml le fichier sera dans le /etc/elasticsearch dossier.

Créez un dossier de configuration dans votre dossier elasticsearch dans /usr/share et déplacez les fichiers .yml dans le dossier config

Exécutez maintenant /bin/elasticsearch start et cela fonctionnera.

10
user3890091

Suivre cela a fonctionné pour moi.

Votre fichier elasticsearch.yml ainsi que le fichier logging.yml seront dans le dossier/etc/elasticsearch.

Créez un dossier de configuration dans votre dossier elasticsearch dans/usr/share et déplacez les fichiers .yml vers le dossier de configuration

7
Kwame

Vous pouvez faire des liens symboliques, mais si vous voulez simplement pointer elasticsearch vers le répertoire de configuration souhaité, vous pouvez utiliser ce qui suit:

/usr/share/elasticsearch/bin/elasticsearch --default.path.conf=/etc/elasticsearch/

4
Michael Doyle

Si vous avez installé elasticsearch dans les systèmes Debian à l'aide de dpkg, la configuration par défaut se trouve dans /etc/elasticsearch/

Vous aurez 2 fichiers yml:

  • elasticsearch.yml
  • logging.yml

Vous pouvez modifier le fichier elasticsearch (modifier le droit d'accès ou copier le fichier dans votre répertoire elasticsearch principal). Pour configurer votre chemin de journal (l.167).

    #path.logs: /path/to/logs
    #e.g:        
    path.logs: /usr/share/elasticsearch/logs

Assurez-vous que vous disposez des droits d'accès appropriés. Alors essaye

    cd /usr/share/elasticsearch/ 
    bin/elasticsearch start

et vérifiez le publish_adress donné dans le terminal

Vous pouvez également définir plus de paramètres. J'espère que cette aide.

3
c24b

Si vous avez installé un .deb et que vous souhaitez démarrer Sudo/usr/share/elasticsearch/bin/elasticsearch

Tu dois faire :

cd /usr/share/elasticsearch

Sudo ln -s /etc/elasticsearch config
2
user1344381

Je pense que vous avez installé votre elasticsearch en utilisant yum ou apt-get La meilleure façon de le faire est de taper:

$ Sudo service elasticsearch start

ou quelque chose de similaire, comme la façon dont vous démarrez des services comme nginx, etc.

Ça marche pour moi.

1
wonook

Si vous devez l'exécuter au premier plan, mais pas en tant que service, spécifiez simplement le répertoire de configuration de manière explicite.

$ /usr/share/elasticsearch/bin/elasticsearch -Des.path.conf=/etc/elasticsearch

Dans ce cas, elasticsearch pourra trouver tous vos fichiers de configuration.

1
Roman Tataurov

Dans mon cas, j'essayais de lancer elasticsearch à partir du téléchargement tar afin de pouvoir exécuter facilement plusieurs instances distinctes sans définitions de service.

Ce qui a fonctionné pour moi, c'était de monter un répertoire et de lancer elasticsearch en utilisant bin/elasticsearch au lieu de simplement elasticsearch tout en étant dans le répertoire bin.

Maintenant, il n'a démarré aucun problème sans liens symboliques, fichiers de service ou autres modifications.

0
Chris Magnuson

Je suis entré dans le même problème et je me demandais comment ils pouvaient le manquer dans le script d'installation de la recherche élastique. Donc, après avoir creusé, voici ce que j'ai trouvé:

  1. Il semble que vous ayez installé la recherche élastique en utilisant yum ou apt-get, sinon vous auriez eu le répertoire 'config' sous ES_HOME.

  2. La vérification de init.d/elasticsearch montre ce qui suit:

    DAEMON_OPTS="-d -p $PID_FILE --default.path.home=$ES_HOME --default.path.logs=$LOG_DIR --default.path.data=$DATA_DIR --default.path.conf=$CONF_DIR"

    :

    # Start Daemon

    start-stop-daemon -d $ES_HOME --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS

  3. Ainsi, toutes les variables sont correctement initialisées puis passées en tant que paramètres de ligne de commande.

  4. Ainsi, la meilleure façon de commencer est d'utiliser le service:

    >Sudo service elasticsearch start

  5. Il s'assurera que tous les paramètres de configuration et de journal sont passés à la commande principale.

  6. Vérifiez les journaux sous /var/log/$NAME ce serait '/ var/log/elasticsearch`

0
SriSri

J'exécute elasicsearch avec l'utilisateur elasticsearch, j'ai donc utilisé cette commande:

Sudo su elasticsearch -c './bin/elasticsearch -d --default.path.conf=/etc/elasticsearch'

depuis le répertoire où elasticsearch est installé. Devais faire:

Sudo chown -R elasticsearch:elasticsearch .

là-dedans, car sinon, il n'aura pas accès en écriture aux fichiers journaux. Je ne sais pas comment cela fonctionnerait via les scripts de démarrage Debian, mais cela semble bien fonctionner comme ça.

0
gitaarik