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, но я обнаружил, что мне пришлось избегать некоторых символов, которые были бы разрешены в других инструментах.

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