logstash 将JSON数组解析为单独的JSON事件Losgstash?

ljsrvy3e  于 2022-12-16  发布在  Logstash
关注(0)|答案(1)|浏览(244)

我目前遇到的情况是,logstash从azure事件中心提取JSON数组,我需要将其拆分为多个事件。
我从事件中心获得的日志如下所示:

{"records": [{JSON LOG},{JSON LOG},{JSON LOG},...,{JSON LOG}]}

我试过使用split和json过滤器,但似乎不能让它工作。我基本上想拆分数组,以便logstash将记录中的每个JSON日志作为一个单独的事件发送到弹性,解析为json。
我还需要将各个JSON日志重命名/解析到ECS中,因此目前我认为我需要将记录解析为json,然后将输出解析为json,然后在发送到弹性之前执行一些变异重命名过滤器,除非在logstash中使用弹性索引管道解析到ECS中的JSON更容易。
我当前的筛选器部分是:

filter {    
    #Split results into individual events
    json {
        source => "message"
    }

    #add a target_index field for the final index to send to
    mutate {
        replace => [ "[@metadata][target_index]", "logs-eventhub" ]
    } 
}

有人能提供一些关于如何在logstash中进行多个JSON解析的见解吗?这样我就可以在自己的事件中将每条记录解析为JSON。

kuuvgm7e

kuuvgm7e1#

如果您的输入将数据解析为JSON格式,则不需要json过滤器,只需像下面这样使用the split filter

filter {    
    #Split results into individual events
    split {
        source => "records"
    }

    #add a target_index field for the final index to send to
    mutate {
        replace => [ "[@metadata][target_index]", "logs-eventhub" ]
    } 
}

split过滤器要做的是克隆原始事件,拆分records数组,并将每个子记录放入原始事件的克隆中。
试试吧!!

相关问题