我在Sping Boot 应用程序中显示Docker容器中运行的Kibana记录器信息时遇到问题。运行此命令(docker-compose -d)后,所有包含ELK的容器都在Docker中运行。我使用此URL(http://localhost:5601)打开Kibana。然后我创建了一个与Logstash相关的索引。我在Kibana中看不到任何与我的项目信息相关的记录器。
下面是屏幕截图。
我该如何修复它?
下面是我的logstash.conf文件。
input {
tcp {
port => 5000
}
file {
path => "C:/Users/{username}/IdeaProjects/SpringBootElk/Springboot-Elk.log"
sincedb_path => "/dev/null"
start_position => "beginning"
}
}
output {
stdout{
codec => rubydebug
}
elasticsearch {
hosts => "elasticsearch:9200"
}
}
下面是日志文件配置,位于docker-compose.yml中
services:
logstash:
image: docker.elastic.co/logstash/logstash:7.15.2
user: root
command: -f /etc/logstash/conf.d/
volumes:
- ./elk/logstash/:/etc/logstash/conf.d/
- ./Users/{username}/IdeaProjects/SpringBootElk/Springboot-Elk.log:/Springboot-Elk.log
ports:
- "5000:5000"
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
depends_on:
- elasticsearch
以下是我的项目文件:My Project
1条答案
按热度按时间ckx4rj1h1#
您可能需要在Docker-compose配置中添加另一个卷,以便将本地主机的
C:/Users/...
文件夹Map到Docker容器,否则在Docker容器中运行的Logstash将无法看到您的文件系统。注意:如果它不适用于您的Windows环境,您可能需要选中this thread。
然后,您可以修改
file
输入,如下所示:**更新:**因此您有两种模式...
1.您从IntelliJ运行应用程序,日志将在您的本地主机上生成,并且可以正常工作
1.您从docker-compose运行应用程序,日志在应用程序的容器中生成,在另一个容器中运行的Logstash看不到它们
在这种情况下,您需要在容器之间共享一个卷。下面,我们定义了一个名为
app-logs
的共享卷。app
容器将在/path/to/Springboot-Elk.log
中生成日志(您可能需要根据应用程序配置调整路径),而logstash
容器将在/tmp/logs
中看到它们。因此,现在您的Logstash容器既可以读取在本地主机上运行的应用程序生成的日志,也可以读取在自己的容器中运行的应用程序生成的日志。