假设我有一个这样的堆栈:logstash-forwarder-> logstash-> elasticsearch-> kibana
我想知道是否有可能使用logstash-forwarder监视整个目录,并将日志发送到基于过滤器的不同的 elasticsearch集群。用例:
我有一些程序可以将日志打印到同一目录。这些日志可能包含两种类型的消息-“私有(private)”或调试。同样,这些消息可以在相同的日志文件中显示。
我知道可以为某些文件提供不同的类型,并使用if过滤它们到不同的输出。我不知道当某条日志可以包含多种类型的日志消息时可以做什么。
有没有办法拆分它们?我想限制某些用户使用私有(private)信息访问日志消息,我想到了两个不同的elasticsearch集群,每个集群都有自己的Kibana和LDAP。
BR
最佳答案
让您的过滤器根据消息内容添加一个新字段,并使用该字段来确定此消息应转到哪个输出。
事件流:
logstash-forwarder --> broker ---> logstash-indexer | --> elasticsearch public
| --> elasticsearch private
伪配置:
input {
# broker input
}
filter {
# structure message
grok {}
filter {
if [action] == "login" {
add_field => { "privacy" => 'private' }
} else {
add_field => { "privacy" => 'public' }
}
}
}
output {
if [privacy] == "private" {
elasticsearch {
# private elasticsearch instance
}
}
if [privacy] == "public" {
elasticsearch {
# public elasticsearch instance
}
}
}
关于elasticsearch - logstash-过滤日志并发送到不同的Elasticsearch集群,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26113152/