如何从 Splunk 中的 Json 字符串中提取键值字段
How to extract Key Value fields from Json string in Splunk
我有 json 格式的 Splunk 搜索结果,如下所示:
"{
"Name": "RUNQDATA",
"RunId": "2021021701",
"Details": <{
"RunQID": "796562",
"TQID": "796562",
"Ent": {
"NAME": "Inv",
"Store": {
"NAME": "FSW",
"TYPE": "QUEUE",
"USERNAME": "abc"
}
},
"ADD_COUNT": "5740",
"UPDATE_COUNT": "0",
"DELETE_COUNT": "0"
}>,
"status": "success",
}"
如何从中提取 ADD_COUNT 或 UPDATE_COUNT 等字段?我尝试了 spath 和其他选项,但无法获得所需的结果。可能是因为 json 包含 <>.
在此感谢任何帮助。
确认。如果删除了尖括号,则 spath
命令将解析整个内容。 spath
命令不处理格式错误的 JSON.
如果您无法更改事件的格式,那么您将不得不使用 rex
命令来提取字段,如此 运行-anywhere 示例
| makeresults
| eval _raw="{
\"Name\": \"RUNQDATA\",
\"RunId\": \"2021021701\",
\"Details\": <{
\"RunQID\": \"796562\",
\"TQID\": \"796562\",
\"Ent\": {
\"NAME\": \"Inv\",
\"Store\": {
\"NAME\": \"FSW\",
\"TYPE\": \"QUEUE\",
\"USERNAME\": \"abc\"
}
},
\"ADD_COUNT\": \"5740\",
\"UPDATE_COUNT\": \"0\",
\"DELETE_COUNT\": \"0\"
}>,
\"status\": \"success\",
}"
| rex "UPDATE_COUNT\": \"(?<UPDATE_COUNT>\d+)"
| rex "DELETE_COUNT\": \"(?<DELETE_COUNT>\d+)"
我有 json 格式的 Splunk 搜索结果,如下所示:
"{
"Name": "RUNQDATA",
"RunId": "2021021701",
"Details": <{
"RunQID": "796562",
"TQID": "796562",
"Ent": {
"NAME": "Inv",
"Store": {
"NAME": "FSW",
"TYPE": "QUEUE",
"USERNAME": "abc"
}
},
"ADD_COUNT": "5740",
"UPDATE_COUNT": "0",
"DELETE_COUNT": "0"
}>,
"status": "success",
}"
如何从中提取 ADD_COUNT 或 UPDATE_COUNT 等字段?我尝试了 spath 和其他选项,但无法获得所需的结果。可能是因为 json 包含 <>.
在此感谢任何帮助。
确认。如果删除了尖括号,则 spath
命令将解析整个内容。 spath
命令不处理格式错误的 JSON.
如果您无法更改事件的格式,那么您将不得不使用 rex
命令来提取字段,如此 运行-anywhere 示例
| makeresults
| eval _raw="{
\"Name\": \"RUNQDATA\",
\"RunId\": \"2021021701\",
\"Details\": <{
\"RunQID\": \"796562\",
\"TQID\": \"796562\",
\"Ent\": {
\"NAME\": \"Inv\",
\"Store\": {
\"NAME\": \"FSW\",
\"TYPE\": \"QUEUE\",
\"USERNAME\": \"abc\"
}
},
\"ADD_COUNT\": \"5740\",
\"UPDATE_COUNT\": \"0\",
\"DELETE_COUNT\": \"0\"
}>,
\"status\": \"success\",
}"
| rex "UPDATE_COUNT\": \"(?<UPDATE_COUNT>\d+)"
| rex "DELETE_COUNT\": \"(?<DELETE_COUNT>\d+)"