logstash 在Sping Boot 应用程序(ELK)的Docker容器中运行的Kibana中看不到日志信息

z3yyvxxp  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(179)

我在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

ckx4rj1h

ckx4rj1h1#

您可能需要在Docker-compose配置中添加另一个卷,以便将本地主机的C:/Users/...文件夹Map到Docker容器,否则在Docker容器中运行的Logstash将无法看到您的文件系统。

volumes:
  - ./elk/logstash/:/etc/logstash/conf.d/
  - "C:/Users/{username}/IdeaProjects/SpringBootElk:/tmp/logs"

注意:如果它不适用于您的Windows环境,您可能需要选中this thread
然后,您可以修改file输入,如下所示:

file {
        path => "/tmp/logs/*"
        sincedb_path => "/dev/null"
        start_position => "beginning"
}

**更新:**因此您有两种模式...

1.您从IntelliJ运行应用程序,日志将在您的本地主机上生成,并且可以正常工作
1.您从docker-compose运行应用程序,日志在应用程序的容器中生成,在另一个容器中运行的Logstash看不到它们
在这种情况下,您需要在容器之间共享一个卷。下面,我们定义了一个名为app-logs的共享卷。app容器将在/path/to/Springboot-Elk.log中生成日志(您可能需要根据应用程序配置调整路径),而logstash容器将在/tmp/logs中看到它们。
因此,现在您的Logstash容器既可以读取在本地主机上运行的应用程序生成的日志,也可以读取在自己的容器中运行的应用程序生成的日志。

services:
  logstash:
    ...
    volumes:
      - ./elk/logstash/:/etc/logstash/conf.d/
      - "C:/Users/{username}/IdeaProjects/SpringBootElk:/tmp/logs"
      - app-logs:/tmp/logs
    ...
  app:
    ...
    volumes:
      - app-logs:/path/to/Springboot-Elk.log
    ...

volumes:
  app-logs:

相关问题