【问题标题】:logstash - filter logs and send to different elasticsearch clusterlogstash - 过滤日志并发送到不同的弹性搜索集群
【发布时间】:2014-11-24 15:04:43
【问题描述】:

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

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

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

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

BR

【问题讨论】:

    标签: elasticsearch logstash logstash-grok logstash-forwarder


    【解决方案1】:

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

    事件流程:

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

    【讨论】:

    • 谢谢你,弗兰克。像魅力一样工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2021-06-24
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多