【问题标题】:Elasticsearch can't write to log filesElasticsearch 无法写入日志文件
【发布时间】:2014-09-18 11:57:52
【问题描述】:

我想激活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。

【问题讨论】:

    标签: linux logging elasticsearch linux-mint


    【解决方案1】:

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

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

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

    希望有帮助

    【讨论】:

    • 但是,如果你想在同一台机器上启动第二个节点,你应该用sudo /usr/share/elasticsearch/bin/elasticsearch --default.path.conf=/etc/elasticsearch/启动它。
    • 这是我的问题。使用 .deb 文件安装在 LM 17 上,但通过该服务启动对我有用。谢谢!
    【解决方案2】:

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

    /usr/shareelasticsearch 文件夹中创建一个配置文件夹,并将.yml 文件移动到配置文件夹

    现在运行/bin/elasticsearch start,它就可以工作了。

    【讨论】:

    • 我发现符号链接更容易:ln -s /etc/elasticsearch/ /usr/share/elasticsearch/config
    【解决方案3】:

    如果你在Debian系统中使用dpkg安装了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

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

    【讨论】:

      【解决方案4】:

      这对我有用。

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

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

      【讨论】:

      • 我创建了符号链接,因为配置通常驻留在 /etc 中,我会忘记它们以后应该放在哪里(例如 /usr/share/elasticsearch/config/elasticsearch.yml -&gt; /etc/elasticsearch/elasticsearch.yml
      【解决方案5】:

      我认为你已经使用 yum 或 apt-get 安装了你的 elasticsearch 最好的方法是输入:

      $ sudo service elasticsearch start
      

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

      它对我有用。

      【讨论】:

      • 不是解决方案还是问题
      【解决方案6】:

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

      你必须这样做:

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

      【讨论】:

        【解决方案7】:

        你可以做符号链接,但如果你只是想将elasticsearch指向所需的配置目录,你可以使用以下:

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

        【讨论】:

          【解决方案8】:

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

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

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

          【讨论】:

            【解决方案9】:

            在我的例子中,我试图从 tar 下载启动 elasticsearch,这样我就可以在没有服务定义的情况下轻松运行多个单独的实例。

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

            现在它在没有任何符号链接、服务文件或其他更改的情况下启动没有问题。

            【讨论】:

              【解决方案10】:

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

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

              来自安装 elasticsearch 的目录。必须做的:

              sudo chown -R elasticsearch:elasticsearch .
              

              在那里,因为否则它将没有对日志文件的写访问权。我不知道这将如何通过 debian 启动脚本工作,但这似乎可以正常工作。

              【讨论】:

                【解决方案11】:

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

                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. 因此,您开始的最佳方式是使用该服务:

                  &gt;sudo service elasticsearch start

                5. 它将确保将所有配置和日志参数传递给主命令。

                6. 检查/var/log/$NAME 下的日志,即'/var/log/elasticsearch`

                【讨论】:

                  猜你喜欢
                  • 2021-01-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-01-25
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-10-10
                  • 1970-01-01
                  相关资源
                  最近更新 更多