AWS Cloudwatch Insights - синтаксический анализ строки как JSON

Отправка журналов JSON в AWS Cloudwatch - в основном это отлично работает, но время от времени я могу получать запись журнала, которая не совсем чистая JSON (или, по крайней мере, имеет странный формат). Вот пример одной записи в журнале от бота Slack:

{"message": "Unhandled request ({'token': 'ezyBLAHBLAHBLAHDSDFL59', 'team_id': 'TF3BLAHBLAH', 'api_app_id': 'A01EBLAHBLAH', 'event': {'client_msg_id': '5ablahbd-blah-blah-blah-ffe18343blah', 'type': 'message', 'text': 'thanks', 'user': 'UFBLAHBLAH', 'ts': '1605733337.001300', 'team': 'TF3BLAHBLAH', 'blocks': [{'type': 'rich_text', 'block_id': 'gucN', 'elements': [{'type': 'rich_text_section', 'elements': [{'type': 'text', 'text': 'thanks'}]}]}], 'channel': 'D01BLAHBLAH', 'event_ts': '1605733337.001300', 'channel_type': 'im'}, 'type': 'event_callback', 'event_id': 'Ev0BLAHBLAH', 'event_time': 1605733337, 'authorizations': [{'enterprise_id': None, 'team_id': 'TFBLAHBLAH', 'user_id': 'U01BLAHBLAH', 'is_bot': True, 'is_enterprise_install': False}], 'is_ext_shared_channel': False, 'event_context': '1-message-TFBLAHBLAHV-D0BLAHBLAH'})", "level": "WARNING", "name": "slack_bolt.App", "time": "2020-11-18T21:08:18.184+00:00"}

Итак, это действительный JSON, и Cloudwatch правильно анализирует то, что там есть, но большая часть деталей необработанного запроса заключена в строку:

"message" : "Unhandled request(<lots_of_json>)"
"level": "WARNING"
"name": "slack_bolt.App"
"time": "2020-11-18T21:08:18.184+00:00"

Я ХОЧУ получить оттуда <lots_of_json> часть, и я хочу, чтобы она интерпретировалась как JSON - иметь возможность составлять отчеты, сортировать и агрегировать по этим полям и т. Д.

Я могу уточнить это в запросе Cloudwatch Insights:

fields @timestamp, @message
| filter message like 'Unhandled request'
| parse message 'Unhandled request (*)' as unhandled_payload
| sort @timestamp desc
| limit 20

И тогда это дает мне <lots_of_json> строку в эфемерном поле unhandled_payload

Теперь, как я могу получить эту unhandled_payload строку в формате JSON, проанализированную как JSON? Команда parse принимает только глобусы или регулярные выражения, и использование любого из них для этого звучит ... неприятно. Должна быть команда для синтаксического анализа строки JSON, верно? Что это?

(иди исправь, что вход в приложение не является приемлемым ответом для целей этого вопроса)


person sql_knievel    schedule 18.11.2020    source источник


Ответы (1)


Я хотел бы узнать решение. Или, по крайней мере, как, черт возьми, удалить префикс web: в группах журналов, чтобы правильно регистрировать JSON

person demian85    schedule 21.06.2021