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

时间:2020-01-15 05:33:13

标签: docker elk

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 我在一台服务器上运行Logstash,Elasticsearch和Kibana的图像。

注意:我没有在此服务器上运行filebeat图像。

  1. 在Filebeat配置文件中,我们设置文件的输出地址。 Filebeat如下Logstash的IP地址和端口 在另一台服务器上运行。

    output.logstash:
      hosts: ["ELK Server IP:5044"]
    
  2. 现在,我为文件拍打创建了一个构成文件,如下所示

    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的图像并撰写 项目正在运行的服务器上的文件。

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