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。
如果您使用像yum
或apt-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的安装脚本中错过它。 所以,经过一番挖掘,我发现:
-
它看起来像你使用yum或apt-get安装了弹性search,否则你会在ES_HOME下有'config'目录。
-
检查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
-
所以,所有的variables都被正确地初始化,然后作为命令行parameter passing。
-
所以,开始使用该服务的最佳方式是:
>sudo service elasticsearch start
-
这将确保所有的configuration和日志parameter passing给主命令。
-
检查
/var/log/$NAME
下的/var/log/$NAME
,这将是'/ var / log / elasticsearch`