如何使用正则表达式在索引时间(带有tstats)的json字段中使用相同的子键从不同的父键中提取json字段?

时间:2019-10-30 11:47:30

标签: regex splunk

我们必须对正则表达式进行建模,以便在Splunk中(在索引时间)从事件中提取一些字段。这些字段将在使用tstats命令的搜索中使用。该正则表达式将在Splunk设置(transformation.conf)中的配置文件中使用。

我们要在索引时提取的字段的主要方面是它们具有相同的json键,但具有不同的父json键。

是否可以使用正则表达式对提取进行建模?

这是具有前面描述的结构(顺便说一下json)的Splunk事件的示例:

{
   "info":{
      "eventSource":"",
      "sourceType":"I/O",
      "status":{
         "code":"",
         "msg":"",
         "msgError":""
      },
      "transactionId":null,
      "traceId":null,
      "timestampStart":"2019-05-16T21:30:55.174Z",
      "timestampEnd":"2019-05-16T21:30:55.174Z",
      "companyIDCode":"",
      "channelIDCode":"",
      "branchCode":"",
      "searchFields":{
         "key_3":"value",
         "key_2":"value",
         "key_1":"value"
      },
      "annotation":{},
      "caller":{
         "id":"",
         "version":"",
         "acronym":""
      },
      "called":{
         "id":"",
         "version":"",
         "acronym":""
      },
         "storage":{
            "id":"",
            "start":"",
            "end":""
         }
      }
   },
   "headers":[],
   "payLoad":{
      "input":{
         "encoding":"1024",
         "ccsid":"1024",
         "data":"dati_in"
      },
      "output":{
         "encoding":"1024",
         "ccsid":"1024",
         "data":"dati_out"
      }
   }
}

出席结果是这样的:

  • callid-> aaa
  • callerversion-> 1
  • callerid-> bbb

我们尝试过类似的事情

[calledid]
REGEX = (?<=called).*"id":"(?P<calledid>.*?)(?=")
FORMAT = calledid::"$1"
WRITE_META = true

但是它无法正常工作,因为直到找到他的最后一个ID才匹配。如:

":{"id":"","version":"","acronym":""},"storage":{"id":"

谢谢。

0 个答案:

没有答案