如何从 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+)"