我们必须对正则表达式进行建模,以便在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"
}
}
}
出席结果是这样的:
我们尝试过类似的事情
[calledid]
REGEX = (?<=called).*"id":"(?P<calledid>.*?)(?=")
FORMAT = calledid::"$1"
WRITE_META = true
但是它无法正常工作,因为直到找到他的最后一个ID才匹配。如:
":{"id":"","version":"","acronym":""},"storage":{"id":"
谢谢。