linux - plataforma - Elasticsearch no puede escribir en archivos de registro
logstash elasticsearch (11)
Creo que ha instalado su elasticsearch usando yum o apt-get. La mejor forma de hacerlo es escribiendo:
$ sudo service elasticsearch start
o algo similar, como la forma en que comenzaría servicios como nginx, etc.
Esto funciona para mi.
Me gustaría activar registros de elasticsearch.
Cuando ejecuto los binarios de elasticsearch, me doy cuenta de que tengo problemas con el registro: ¡la configuración no se puede cargar!
Aquí está el resultado:
~ $ 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''.
Me estoy ejecutando bajo linuxmint 17 y usando los últimos ES.
En mi caso, estaba intentando iniciar elasticsearch desde la descarga de tar para que pueda ejecutar múltiples instancias separadas fácilmente sin definiciones de servicio.
Lo que funcionó para mí fue subir un directorio y lanzar elasticsearch usando bin/elasticsearch
lugar de simplemente elasticsearch
mientras estaba en el directorio bin.
Ahora comenzó sin problemas sin enlaces simbólicos, archivos de servicio u otros cambios.
Estoy ejecutando elasicsearch con el usuario elasticsearch, así que usé este comando:
sudo su elasticsearch -c ''./bin/elasticsearch -d --default.path.conf=/etc/elasticsearch''
del directorio donde está instalado elasticsearch. Tuve que hacer:
sudo chown -R elasticsearch:elasticsearch .
allí porque de lo contrario no tendrá acceso de escritura a los archivos de registro. No sé cómo funcionaría esto a través de las secuencias de comandos de inicio de Debian, pero parece que funciona bien así.
Me metí en el mismo problema y me preguntaba cómo podrían perderlo en el script de instalación de búsqueda elástica. Entonces, después de excavar aquí, es lo que encontré:
Parece que instaló la búsqueda elástica usando yum o apt-get o de lo contrario habría tenido el directorio ''config'' en ES_HOME.
La comprobación de init.d / elasticsearch muestra lo siguiente:
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
Entonces, todas las variables se inicializan correctamente y luego pasan como parámetros de línea de comando.
Entonces, la mejor manera para que comiences es usando el servicio:
>sudo service elasticsearch start
Se asegurará de que todos los parámetros de configuración y registro se pasen al comando principal.
Compruebe los registros en
/var/log/$NAME
que sería ''/ var / log / elasticsearch`
Puede hacer enlaces simbólicos, pero si simplemente desea señalar elasticsearch al directorio de configuración deseado, puede usar lo siguiente:
/usr/share/elasticsearch/bin/elasticsearch --default.path.conf=/etc/elasticsearch/
Si ha instalado elasticsearch en sistemas Debian utilizando dpkg, la configuración predeterminada se puede encontrar en /etc/elasticsearch/
Tendrás 2 archivos yml:
-
elasticsearch.yml
-
logging.yml
Puede editar el archivo elasticsearch (cambiar el derecho de acceso o copiar el archivo en su directorio principal de elasticsearch). Para configurar su ruta de registro (l.167).
#path.logs: /path/to/logs
#e.g:
path.logs: /usr/share/elasticsearch/logs
Asegúrate de tener acceso correcto en él. Entonces intenta
cd /usr/share/elasticsearch/
bin/elasticsearch start
y revisa el publish_adress
dado en la terminal
También puedes definir más parámetros. Espero que esto ayude.
Si ha instalado un .deb y desea iniciar sudo / usr / share / elasticsearch / bin / elasticsearch
Tu tienes que hacer :
cd /usr/share/elasticsearch
sudo ln -s /etc/elasticsearch config
Si instaló elasticsearch utilizando un administrador de paquetes como yum
o apt-get
no debería iniciar elasticsearch de esta manera. Intente utilizar el servicio: por ejemplo /etc/init.d/elasticsearch
o utilizando el comando sudo service elasticsearch start
También debe comprobar si el archivo logging.yml está en la ubicación mencionada en el seguimiento de la pila: /usr/share/elasticsearch/config
Usar sudo
para comenzar elasticsearch no es bueno, puedes hacer sudo elasticsearch
para ejecutar como el usuario de elasticsearch, pero prefiero usar la llamada de servicio como se describe en la segunda oración.
Espero que ayude
Si necesita ejecutarlo en primer plano, pero no como servicio, simplemente especifique explícitamente el directorio de configuración.
$ /usr/share/elasticsearch/bin/elasticsearch -Des.path.conf=/etc/elasticsearch
En este caso, elasticsearch podrá encontrar todos sus archivos de configuración.
Siguiendo esto funcionó para mí.
Su archivo elasticsearch.yml así como también el archivo logging.yml estarán en la carpeta / etc / elasticsearch.
Cree una carpeta config en su carpeta elasticsearch en / usr / share y mueva los archivos .yml a la carpeta config
Su archivo logging.yml
así como logging.yml
archivo logging.yml
estarán en la carpeta /etc/elasticsearch
.
Cree una carpeta config en su carpeta elasticsearch
en /usr/share
y mueva los archivos .yml a la carpeta config
Ahora ejecuta /bin/elasticsearch start
y funcionará.