Elasticsearch无法写入日志文件

我想激活elasticsearch的日志。

当我运行elasticsearch二进制文件,我意识到我有logging问题:configuration不能被加载!

这是输出:

~ $ 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'. 

我在linuxmint 17下运行,并使用最新的ES。

如果您使用像yumapt-get这样的软件包pipe理器来安装elasticsearch,则不应该以这种方式启动elasticsearch。 尝试使用该服务:例如/etc/init.d/elasticsearch或使用命令sudo service elasticsearch start

您还应该检查logging.yml文件是否位于堆栈跟踪中提到的位置: /usr/share/elasticsearch/config

使用sudo启动elasticsearch是不好的,你可以做sudo elasticsearch作为elasticsearch用户运行,但是我更喜欢使用第二句中描述的服务调用。

希望有所帮助

您的elasticsearch.yml文件以及logging.yml文件将位于/etc/elasticsearch文件夹中。

/usr/share的elasticsearch文件夹中创build一个configuration文件夹,并将.yml文件移动到config文件夹中

现在运行/bin/elasticsearch start ,它将工作。

以下这对我工作。

您的elasticsearch.yml文件以及logging.yml文件将位于/ etc / elasticsearch文件夹中。

在/ usr / share的elasticsearch文件夹中创build一个configuration文件夹,并将.yml文件移动到config文件夹中

你可以做符号链接,但是如果你只是想将elasticsearch指向想要的config目录,你可以使用下面的代码:

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

如果您已经使用dpkg在Debian系统中安装了elasticsearch,则默认configuration可以在/etc/elasticsearch/

你将有2个XML文件:

  • elasticsearch.yml
  • logging.yml

您可以编辑elasticsearch文件(更改访问权限或将文件复制到您的主elasticsearch目录中)。 configuration你的日志path(l.167)。

  #path.logs: /path/to/logs #eg: path.logs: /usr/share/elasticsearch/logs 

确保你有正确的访问权限。 然后尝试

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

并检查terminal中给出的publish_adress

你也可以定义更多的参数。 希望这个帮助。

如果你已经安装了一个.deb并且想启动sudo / usr / share / elasticsearch / bin / elasticsearch

你必须做 :

 cd /usr/share/elasticsearch sudo ln -s /etc/elasticsearch config 

我认为你已经使用yum或者apt-get来安装你的elasticsearch了。这样做的最好方法是input:

 $ sudo service elasticsearch start 

或者任何类似的东西,比如你开始像nginx这样的服务的方式

这个对我有用。

如果你需要在前台运行,而不是服务,只需明确指定configuration目录。

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

在这种情况下,elasticsearch将能够find你所有的configuration文件。

在我的情况下,我试图从tar下载启动elasticsearch,以便我可以轻松地运行多个单独的实例,而无需服务定义。

对我来说,工作是在bin目录下使用bin/elasticsearch而不是elasticsearch来启动elasticsearch。

现在,没有任何符号链接,服务文件或其他更改,就没有问题了。

我正在用elasticsearch运行elasicsearch,所以我使用了这个命令:

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

从弹性search安装的目录。 不得不做:

 sudo chown -R elasticsearch:elasticsearch . 

在那里虽然因为否则它不会有写访问日志文件。 我不知道这是如何通过debian启动脚本工作,但这似乎正常工作。

我遇到了同样的问题,并想知道如何在弹性search的安装脚本中错过它。 所以,经过一番挖掘,我发现:

  1. 它看起来像你使用yum或apt-get安装了弹性search,否则你会在ES_HOME下有'config'目录。

  2. 检查init.d / elasticsearch显示如下:

    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. 所以,所有的variables都被正确地初始化,然后作为命令行parameter passing。

  4. 所以,开始使用该服务的最佳方式是:

    >sudo service elasticsearch start

  5. 这将确保所有的configuration和日志parameter passing给主命令。

  6. 检查/var/log/$NAME下的/var/log/$NAME ,这将是'/ var / log / elasticsearch`