0

假设我有一个这样的堆栈:logstash-forwarder -> logstash -> elasticsearch -> kibana

我想知道是否可以使用 logstash-forwarder 监控整个目录并根据过滤器将日志发送到不同的弹性搜索集群。用例:

我有一些程序可以将日志打印到同一目录。这些日志可能包含两种类型的消息 - “私人”或调试。同样,这些消息可以出现在相同的日志文件中。我知道可以给某些文件一个不同的类型,并用 if 过滤它们到不同的输出。我不知道当某个日志可以包含不止一种类型的日志消息时您可以做什么。

有没有办法拆分它们?我想限制某些用户对带有私人信息的日志消息的访问,我想到了两个不同的弹性搜索集群,每个集群都有自己的 Kibana 和 LDAP。

BR

4

1 回答 1

3

让您的过滤器根据消息内容添加一个新字段,并使用该字段来决定此消息应发送到哪个输出。

事件流程:

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
        }
    }

}
于 2014-09-30T08:07:46.690 回答