我想使用 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 }
}
欢迎更多想法。