我想激活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。
答案 0 :(得分:39)
如果使用像yum
或apt-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)
我遇到了同样的问题,并想知道他们如何在弹性搜索的安装脚本中错过它。所以,经过一些挖掘,我发现了:
看起来您使用yum或apt-get安装了弹性搜索,否则您将拥有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
因此,所有变量都已正确初始化,然后作为命令行参数传递。
因此,您开始使用该服务的最佳方式是:
>sudo service elasticsearch start
它将确保将所有config和log参数传递给主命令。
检查/var/log/$NAME
下的'/ var / log / elasticsearch`