将嵌套的JSON数组解析为Splunk表

时间:2019-08-02 02:03:09

标签: json splunk multivalue splunk-query

我在splunk中有以下带有嵌套数组的JSON事件-:

{
"items":
    [
        {
            "parts":
                [
                    {
                        "code":"1","var":"","pNum":"101","counter":1019
                    },
                    {
                        "code":"0","var":"","pNum":"102","counter":1029
                    }
                ],
            "se":"A1",
            "so":"111"
        },
        {
            "parts":
                [
                    {
                        "code":"1","var":"","pNum":"301","counter":3019
                    },
                    {
                        "code":"0","var":"","pNum":"302","counter":3029
                    }
                ],
            "se":"A3",
            "so":"333"
        },
        {
            "parts":
                [
                    {
                        "code":"0","var":"","pNum":"401","counter":4019
                    }
                ],
            "se":"A4",
            "so":"444"
        },
        {
            "parts":
                [
                    {
                        "code":"1","var":"","pNum":"501","counter":5019
                    }
                ],
            "se":"A5",
            "so":"555"
        }
    ],
"id":"x.9110790",
"cr":"x-273169"
}

我想将此JSON提取到下面的Splunk表-:

Output Splunk Table Format

我试图按如下方式使用spath,但它只会给出以下错误的结果-:

|制造商|评估_raw =“ {     \“项目\”:         [             {                 \“部分\”:                     [                         {                             \“ code \”:\“ 1 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 101 \”,\“计数器\”:1019                         },                         {                             \“ code \”:\“ 0 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 102 \”,\“计数器\”:1029                         }                     ],                 \“ se \”:\“ A1 \”,                 \“ so \”:\“ 111 \”             },             {                 \“部分\”:                     [                         {                             \“ code \”:\“ 1 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 301 \”,\“计数器\”:3019                         },                         {                             \“ code \”:\“ 0 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 302 \”,\“计数器\”:3029                         }                     ],                 \“ se \”:\“ A3 \”,                 \“ so \”:\“ 333 \”             },             {                 \“部分\”:                     [                         {                             \“ code \”:\“ 0 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 401 \”,\“计数器\”:4019                         }                     ],                 \“ se \”:\“ A4 \”,                 \“ so \”:\“ 444 \”             },             {                 \“部分\”:                     [                         {                             \“ code \”:\“ 1 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 501 \”,\“计数器\”:5019                         }                     ],                 \“ se \”:\“ A5 \”,                 \“ so \”:\“ 555 \”             }         ],     \“ id \”:\“ x.9110790 \”,     \“ cr \”:\“ x-273169 \”     }“ | spath |将项目重命名为* |表ID,cr,项目{}。*

splunk actual output

我正在尝试首次解析JSON类型的splunk日志。因此,请提供任何提示来解决此问题。 谢谢

1 个答案:

答案 0 :(得分:0)

@Kripz

可以请您尝试搜索吗?

  

|结果eval _raw =“ {\” items \“:[{\” parts \“:[{   \“ code \”:\“ 1 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 101 \”,\“计数器\”:1019},{   \“ code \”:\“ 0 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 102 \”,\“ counter \”:1029}],   \“ se \”:\“ A1 \”,\“ so \”:\“ 111 \”},{\“ parts \”:[{   \“ code \”:\“ 1 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 301 \”,\“计数器\”:3019},{   \“ code \”:\“ 0 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 302 \”,\“计数器\”:3029}],   \“ se \”:\“ A3 \”,\“ so \”:\“ 333 \”},{\“ parts \”:[{   \“ code \”:\“ 0 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 401 \”,\“计数器\”:4019}],   \“ se \”:\“ A4 \”,\“ so \”:\“ 444 \”},{\“ parts \”:[{   \“ code \”:\“ 1 \”,\“ var \”:\“ \”,\“ pNum \”:\“ 501 \”,\“计数器\”:5019}],   \“ se \”:\“ A5 \”,\“ so \”:\“ 555 \”}],\“ id \”:\“ x.9110790 \”,   \“ cr \”:\“ x-273169 \”}“ | kv | spath path = items {} output = items |   mvexpand项目|栏位ID项目|评估 raw = items | kv |改名   零件{}。*作为零件 * |评估   temp = mvzip(mvzip(Parts_code,Parts_counter),Parts_pNum)| mvexpand temp   | eval Parts_code = mvindex(split(temp,“,”),0)   ,Parts_counter = mvindex(split(temp,“,”),1),Parts_pNum = mvindex(split(temp,“,”),2)   |表格ID本身就是这样,所以Parts_code Parts_var Parts_counter Parts_pNum

检查我的博客是否相同:https://www.crestdatasys.com/blogs/how-to-extract-complex-field-from-nested-json-events-using-splunk-spl/