假设我有一个这样的堆栈: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/

10-10 01:02
查看更多