如何管理来自多个节拍的输入到集中式Logstash

时间:2016-08-13 09:20:57

标签: elasticsearch logstash kibana-4 logstash-configuration filebeat

我想使用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 }
}

欢迎提出更多想法。

1 个答案:

答案 0 :(得分:3)

实际上beats输入插件的host参数意味着The IP address to listen on.这不是filebat的ip,实际上根本不需要。

所以只要指定要监听的端口就足够了,我认为你显示的配置会起作用。 Logstash将监听来自所有10台机器的日志,并将对其进行处理。

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