Мне нужна помощь в извлечении поля/значения "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
}
ТИА
Было бы полезно знать некоторые из регулярных выражений, которые вы пробовали, чтобы мы не повторяли их.
Вы пробовали использовать команду spath
для разбора JSON?
Возможно, эта команда rex
поможет
| rex "allowedSourceAddressPrefix\\\\\":\\\\\"(?<allowedSourceAddressPrefix>[^\\\]+)"
Я подозреваю, что предложение сообщества не удалось, потому что нет поля properties
. В моем ответе используется поле _raw
, чтобы избежать зависимости от любых других извлечений.
Да, вы меня поняли, ну, сообщество тоже предложило без свойств. Это мое дополнение, и рекомендация сообщества тоже работает. Но почему бы не упомянуть поле, я имею в виду, почему оно работает только для _raw?
Если rex
работает только с полем _raw, то это должно быть потому, что конкретное поле не существует или имеет другое содержимое, чем ожидалось.
Вау, отлично, это сработало. Я пытался выполнить следующую команду с помощью сообщества splunk. Следующая команда хорошо работала с примером makeresults, но не работала с фактическими данными. Вы работаете с фактическими данными, еще раз спасибо. И если бы вы могли сообщить мне, что не так в следующей команде? <splunkCommand> | rex field=properties "allowedSourceAddressPrefix\\\\\":\\\\\"(?<allowedSourceAddressPrefix>.*?)\\\\\"" <splunkCommand>