首页 > 解决方案 > 如何将日志收集到 Elasticsearch

问题描述

我有不同服务器(许多机器)中的 Web 应用程序日志。如何在安装了 Elastic search 和 Kibana 的系统中收集这些日志。当我搜索时,我只找到了显示 setup where logslogstashbeats和are all together 的教程。elasticsearchkibana

标签: elasticsearchelastic-stack

解决方案


由于您有许多机器会产生日志,因此您需要使用 Filebeat、Logstash、Elasticsearch 和 Kibana 设置 ELK 堆栈。

  • 您需要在每台机器上设置filebeat实例。

filebeat.yml它会在每台机器上监听你的日志文件并将它们转发到你在配置文件中提到的logstash实例,如下所示:

#=========================== Filebeat inputs =============================

filebeat.inputs:

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /path_to_your_log_1/ELK/your_log1.log
    - /path_to_your_log_2/ELK/your_log2.log

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["private_ip_of_logstash_server:5044"]
  • Logstash 服务器监听 5044 端口并通过 logstash 配置文件流式传输所有日志:

    input {
          beats { port => 5044 }      
    }
    filter {
        # your log filtering logic is here
    }
    output {
            elasticsearch {
                hosts => [ "elasticcsearch_server_private_ip:9200" ]
                index => "your_idex_name"
            }
    }
    
  • 在 logstash 中,您可以过滤日志并将其拆分为字段并将它们发送到 elasticsearch。

  • Elasticsearch 将我们通过 logstash 发送的所有数据保存在索引中。
  • elasticsearch 数据库中的所有数据都可以通过 Kibana 读取。我们可以使用 kibana 根据我们的数据创建具有多种图表类型的仪表板。

以下是带有 filebeat 的 ELK 的基本架构:


推荐阅读