运行 两台服务器上 docker 上的 ELK 堆栈

Run ELK stack on docker on two server

我想在 docker 上 运行 ELK,所以我 运行 ELK 堆栈和 filebeat 容器在一台服务器上,项目 运行 在另一台服务器上。

如何将项目日志文件传输到 ELK 运行ning 服务器?

最后,我找到了如下解决方案。如果您有任何其他想法,请推荐我。

  1. 我运行一台服务器上的Logstash、Elasticsearch、Kibana的镜像。

Note: I did not run the filebeat image on this server.

  1. 在Filebeat Configuration文件中,我们设置了 下面的 filebeat 是 Logstash 的 IP 地址和端口 运行在另一台服务器上。

    output.logstash:
      hosts: ["ELK Server IP:5044"]
    
  2. 现在我为filebeat创建了一个compose文件如下

    version: '2.2'
    services:
     filebeat:
        build:
          context: filebeat /
        volumes:
          # needed to access all docker logs (read only):
         - "/var/lib/docker/containers:/usr/share/dockerlogs/data:ro"
          # needed to access additional information about containers
         - "/var/run/docker.sock:/var/run/docker.sock"
        #cpu_count: 1
        cpus: 0.5
        mem_limit: 2G
    
  3. 我运行 filebeat 的图像通过使用这些设置和合成 项目 运行ning.

  4. 服务器上的文件

通过这些设置,Filebeat 可以从“/var/lib/docker/containers”读取日志文件并使用"hosts: [" ELK 服务器IP:5044“]”将日志文件传送到 Logstash。