Как извлечь поля из экранированного JSON (вложенного) в splunk?

Мне нужна помощь в извлечении поля/значения "allowedSourceAddressPrefix" из JSON. Это поле представляет собой экранированную строку JSON внутри вложенного JSON. Ниже приведено дерево JSON.

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

AllowSourceAddressPrefix принимает значения одного IP-адреса (или) нескольких IP-адресов (или) *.

Я пробовал различные шаблоны rex, но не смог извлечь необходимое поле. Любая помощь приветствуется. Ниже приведен JSON с обязательным полем.

properties: {
  "User": "[email protected]",
  "/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
}

ТИА

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Было бы полезно знать некоторые из регулярных выражений, которые вы пробовали, чтобы мы не повторяли их.

Вы пробовали использовать команду spath для разбора JSON?

Возможно, эта команда rex поможет

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

Вау, отлично, это сработало. Я пытался выполнить следующую команду с помощью сообщества splunk. Следующая команда хорошо работала с примером makeresults, но не работала с фактическими данными. Вы работаете с фактическими данными, еще раз спасибо. И если бы вы могли сообщить мне, что не так в следующей команде? <splunkCommand> | rex field=properties "allowedSourceAddressPrefix\\\\\":\\\\\"(?<allowedSourceAddr‌​essPrefix>.*?)\\\\\"‌​" <splunkCommand>

r0r0n0a 22.03.2022 17:08

Я подозреваю, что предложение сообщества не удалось, потому что нет поля properties. В моем ответе используется поле _raw, чтобы избежать зависимости от любых других извлечений.

RichG 22.03.2022 17:28

Да, вы меня поняли, ну, сообщество тоже предложило без свойств. Это мое дополнение, и рекомендация сообщества тоже работает. Но почему бы не упомянуть поле, я имею в виду, почему оно работает только для _raw?

r0r0n0a 22.03.2022 17:34

Если rex работает только с полем _raw, то это должно быть потому, что конкретное поле не существует или имеет другое содержимое, чем ожидалось.

RichG 22.03.2022 17:37

Другие вопросы по теме