logstash - 过滤日志并发送到不同的elasticsearch集群

时间:2014-09-30 05:07:24

标签: elasticsearch logstash logstash-grok logstash-forwarder

让我们说我有这样的堆栈:logstash-forwarder - > logstash - > elasticsearch - > kibana

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

我有一些程序可以将日志打印到同一目录。这些日志可能包含两种类型的消息 - " private"或调试。同样,这些消息可以在相同日志文件中使用。 我知道可以为某些文件提供不同的类型,并使用if到不同的输出对它们进行过滤。我不知道的是,当某个日志可以包含多种类型的logmessage时,你可以做些什么。

有没有办法拆分它们?我想限制对某些用户使用私有信息访问logmessages,我想到了两个不同的elasticsearch集群,每个集群都有自己的Kibana和LDAP。

BR

1 个答案:

答案 0 :(得分: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
        }
    }

}