Elasticsearch无法写入日志文件

时间:2014-07-26 21:59:01

标签: linux logging elasticsearch linuxmint

我想激活elasticsearch的日志。

当我运行elasticsearch二进制文件时,我意识到我的日志记录存在问题:无法加载配置!

这是输出:

~ $ 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。

11 个答案:

答案 0 :(得分:39)

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

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

使用sudo启动弹性搜索并不好,您可以sudo elasticsearch作为弹性搜索用户运行,但我更喜欢使用第二句中所述的服务调用。

希望有所帮助

答案 1 :(得分:10)

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

elasticsearch的{​​{1}}文件夹中创建配置文件夹,并将.yml文件移至配置文件夹

现在运行/usr/share它会起作用。

答案 2 :(得分:7)

这对我有用。

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

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

答案 3 :(得分:4)

您可以执行符号链接,但如果您只想将elasticsearch指向所需的配置目录,则可以使用以下命令:

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

答案 4 :(得分:3)

如果您使用dpkg在Debian系统中安装了elasticsearch,则可以在/etc/elasticsearch/找到默认配置

您将拥有2个yml文件:

  • elasticsearch.yml
  • logging.yml

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

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

确保您可以正确访问它。 然后尝试

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

并检查终端

中提供的publish_adress

您还可以定义更多参数。希望这有帮助。

答案 5 :(得分:2)

如果您已安装.deb并想启动sudo / usr / share / elasticsearch / bin / elasticsearch

你必须这样做:

cd /usr/share/elasticsearch

sudo ln -s /etc/elasticsearch config

答案 6 :(得分:1)

我认为您已使用yum或apt-get安装了elasticsearch 执行此操作的最佳方法是键入:

$ sudo service elasticsearch start

或类似的东西,比如启动nginx等服务的方式

它对我有用。

答案 7 :(得分:1)

如果您需要在前台运行它,而不是因为服务只是明确指定配置目录。

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

在这种情况下,elasticsearch将能够找到所有配置文件。

答案 8 :(得分:0)

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

对我来说有用的是在bin目录中使用bin/elasticsearch而不是elasticsearch上一个目录并启动elasticsearch。

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

答案 9 :(得分:0)

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

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

来自安装了elasticsearch的目录。不得不这样做:

sudo chown -R elasticsearch:elasticsearch .

虽然因为否则它将无法对日志文件进行写访问。我不知道这将如何通过debian启动脚本工作,但这似乎工作得很好。

答案 10 :(得分:0)

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

  1. 看起来您使用yum或apt-get安装了弹性搜索,否则您将拥有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. 因此,所有变量都已正确初始化,然后作为命令行参数传递。

  4. 因此,您开始使用该服务的最佳方式是:

    >sudo service elasticsearch start

  5. 它将确保将所有config和log参数传递给主命令。

  6. 检查/var/log/$NAME下的'/ var / log / elasticsearch`

  7. 下的日志