5

我想使用 Elastic Stack 进行日志聚合,从 10 台机器中获取日志。我希望在 10 台机器上安装 Filebeat 并从每台机器上获取日志并将其发送到安装在单独机器上的集中式 Logstash 服务器。在单独的机器上,安装了 Logstash Elasticsearch 和 Kibana。我需要 Logstash,因为我想在使用节拍收集日志后对数据进行处理和解析。

根据这个架构,我面临一些识别和解析日志的问题。如何让logstash识别一次从多个beats服务器收集日志?我可以在 logstash-beats 插件中指定多个主机,以便 logstash 一次解析来自 10 台机器的所有日志吗?

我是否应该在所有 10 台机器中定义单独的 document_type 作为 Filebeat 配置的一部分,稍后可以在 Logstash 中使用它,以便我在过滤器插件中定义多种类型(使用通配符 - tomcat*)。

单机设置的示例 Filebeat 配置:-

################### Filebeat Configuration Example #########################
############################# Filebeat ####################################
filebeat:
  prospectors:
    -
      paths:
        - /location/to/file/catalina.out
      document_type: tomcat1
      scan_frequency: 5s
      input_type: log

output:
  logstash:
    hosts: ["<host-of-the-machine-on-which-logstash-is-installed>:5044"]
  console:
    pretty: true
  shipper:
  logging:
  files:
    rotateeverybytes: 10485760 # = 10MB

这种类型的设置将在所有 10 台机器上完成,其中 document_type 的值只会改变。

单机的示例 Logstash 配置:-

input {
    beats   {
        host => "ip/of/machine/1"
        port => 5044
    }
}
filter {
    ........................
    ........................
    ........................
}
output{
    elasticsearch {
        hosts => "localhost:9200"
        index => "logs-%{+YYYY.MM.dd}"
    }
    stdout { codec => rubydebug }
}

欢迎更多想法。

4

1 回答 1

3

Actually the host parameter for beats input plugin means The IP address to listen on. This is not the ip for filebat and actually not required at all.

So just specifying port to listen must be enough and I think the configuration you show will work. Logstash will listen logs from all 10 machines and will process them.

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html#plugins-inputs-beats-host

于 2016-08-15T14:24:21.757 回答