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

Parsing a JSON Array into separate JSON events Losgstash?

我目前遇到的情况是 logstash 从 azure 事件中心提取一个 JSON 数组,我需要将其拆分为多个事件。

我从事件中心获得的日志如下所示:

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

我尝试过使用 split 和 json 过滤器,但我似乎无法让它正常工作。我基本上想拆分数组,以便 logstash 将记录中的每个 JSON 日志作为单独的事件发送到弹性,解析为 json.

我还需要 rename/parse 个人 JSON 登录到 ECS,所以目前认为我需要将记录解析为 json,然后将输出解析为 json在发送到弹性之前做一些变异重命名过滤器,除非在 logstash 中使用弹性索引管道进行解析 JSON 来解析到 ECS 会更容易。

我当前的过滤器部分是:

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。

如果您的输入将数据解析为 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 数组并将每个子记录放入原始事件的克隆中。

试试吧!!