如何从 splunk 中的转义 JSON(嵌套)中提取字段?

How to extract fields from an escaped JSON(nested) in splunk?

我正在寻求有关从 JSON 中提取“allowedSourceAddressPrefix”field/value 的帮助。该字段是嵌套 JSON 内的转义 JSON 字符串。以下是 JSON 树

- properties (extracted by splunk)
  - /subscription/..../.../  (dynamic field)
    - ports (escaped json)
      - allowedSourceAddressPrefix (nested json)

allowedSourceAddressPrefix 取单个 IP 地址(或)多个 IP 地址(或)*.

的值

我尝试了各种 rex 模式,但未能提取所需的字段,感谢您的帮助。以下是具有必填字段

的 JSON
properties: {
  "User": "johndoe@contoso.com",
  "/subscriptions/3483b2ca-02cf-4ff6-92af-99326c8fac7f/resourceGroups/apple-dev/providers/Microsoft.Compute/virtualMachines/gjappledev": "{\"id\":\"/subscriptions/3483b2ca-02cf-4ff6-92af-99326c8fac7f/resourceGroups/apple-dev/providers/Microsoft.Compute/virtualMachines/gjappledev\",\"ports\":[{\"number\":3389,\"allowedSourceAddressPrefix\":\"*\",\"endTimeUtc\":\"2022-03-21T1:50:39.1599446Z\"}]}",
  "Justification": null
}

TIA

了解您尝试过的一些正则表达式会有所帮助,因此我们不再重复。

您是否尝试过 spath 命令来解析 JSON?

也许这个 rex 命令会有所帮助

| rex "allowedSourceAddressPrefix\\\":\\\"(?<allowedSourceAddressPrefix>[^\\]+)"