Amazon Cloudwatch Logs Insights анализирует с помощью регулярных выражений
Я пытаюсь извлечь эфемерное поле с parse
команда. К сожалению, формат журнала таков, что выражения glob ему недостаточно, поэтому мне нужно использовать регулярное выражение. С регулярным выражением все в порядке, но я просто не могу сделать команду извлечь что-либо.
Я пытаюсь с:
parse @endpoint /^([a-zA-Z_]+)[\/|?]*.*/ as @clean_endpoint
Первая группа - это то, что мне нужно, и я попробовал разные цитаты и т. Д. Это может быть просто глупая ошибка форматирования, но я просто не могу ее найти.
Практически единственная документация, в которой упоминается parse
команда здесь, и пример там использует выражения glob. Не смог найти ни одного примера по поиску в Google.
Так кто-нибудь сталкивался с этим и решил?
0 ответов
Попробуйте другой подход, например
parse @message /(?<@endpt>(\/[a-zA-Z0-9_]+){1,})/
| stats count_distinct(@endpt) by @endpt
или, альтернативно, рассмотрим решение
fields @timestamp
| parse @message /(?<@endpt_post>POST (\/[a-zA-Z0-9_]+){1,})/
| parse @message /(?<@endpt_get>GET (\/[a-zA-Z0-9_]+){1,})/
| stats count() by @endpt_post, @endpt_get
Удачи!
Не уверен, что вы нашли ответ на этот вопрос, но при использовании регулярного выражения с синтаксическим анализом вы не можете называть эфемерные поля, как с glob.
При использовании глобальных выражений вы называете новое поле с помощью "as ___" в конце вашего оператора. При попытке использовать регулярное выражение это не сработает.
parse @message ((glob expression here)) as ephem_field
При использовании регулярного выражения новые поля должны быть названы в самом выражении как именованная группа.
parse @message /(?<clean_endpoint>^([a-zA-Z_]+)[\/|?]*.*)/
Хотя регулярное выражение позволяет вам называть группу, используя одинарные кавычки 'name'
или угловые кронштейны <name>
Я заметил, что AWS CloudWatch Insights принимает только угловые скобки при именовании групп. При попытке использовать одинарные кавычки я получил сообщение об ошибке, в котором говорилось, что он не может понять запрос.
Я не уверен, какой тип регулярного выражения использует AWS, но я обнаружил, что мне пришлось избегать некоторых символов, которые были бы разрешены в других инструментах.