【问题标题】:logstash filter how to create two (or above ) outputs for the one inputlogstash 过滤器如何为一个输入创建两个(或以上)输出
【发布时间】:2018-03-10 06:39:13
【问题描述】:

我通过 http poller 获取一个 json

  {
 "id":12345
 "name":"",
 "lastname":"",
 "age":12,
 "address":{"city":"XXXX" , "street":"ZZZZ" }
 }

我希望这能在我的输出中生成两个文档:

人:

 {
"id":12345
"name":"",
"lastname":"",
"age":12
  }

地址:

 {
"city":"XXXX" , 
"street":"ZZZZ" 
  }

意思是我在输入中有一个事件

在输入阶段获得一个输入:

input {
  http_poller {
    urls => {
      test1 => "http://localhost:8080"
    }
}

在过滤阶段我想:

  1. 创建人员事件(将其标记为 P)
  2. 创建地址事件(标记为A)

在输出阶段我想:

  1. 在 ES 中发送 P 到 P 类型
  2. 将A发送到ES中的A类型

【问题讨论】:

    标签: elasticsearch logstash logstash-configuration


    【解决方案1】:

    您可以通过clone filter 实现这一目标。

    首先,您需要安装默认未捆绑的插件:

    bin/logstash-plugin install logstash-filter-clone
    

    然后你可以像这样修改你的 Logstash 配置:

    input {
      http_poller {
        urls => {
          test1 => "http://localhost:8080"
        }
        type => "A"
      }
    }
    filter {
        clone {
            clones => [ "P" ]
            add_tag => [ "P" ]
        }
        if [type] == "P" {
            mutate {
                remove_field => [ "address" ]
            }
        } else {
            mutate {
                add_tag => [ "A" ]
                remove_field => [ "id", "name", "lastname", "age" ]
            }
        }
    }
    output {
        elasticsearch {
            hosts => ["localhost:9200"]
            document_type => "%{type}"
        }
    }
    

    【讨论】:

    • 你也可以为每个 url 类型制作吗?而不是所有的网址都有一个?
    • 您可以使用多个http_poller 输入:-)
    • 是的,我对 puller 的问题是没有我需要的 ssl 验证的情况下工作的能力,有什么建议吗?
    • 不,根据官方插件不支持,我找不到支持的人?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2011-04-25
    相关资源
    最近更新 更多