Анализ JSON с помощью журналов CloudWatch Insight Logs

Мне трудно разобрать мой JSON, чтобы только отображать ingestId моих сообщений. Мой файл JSON, загруженный в CloudWatch, выглядит так:

{
    "message": "changeStatus ingestId=2343d8sf-etc, 
             status=UPLOADING",
    "level": "info"
}

Мой код CloudWatch Log Insight выглядит так:

filter level = "error"
| filter @message like /([-\w]{25,})/
| filter strcontains(@logStream, 'ingest-')
| fields @timestamp, @message, @logStream, level
| sort @logStream, @timestamp asc

Insight создает новый столбец без информации об идентификаторе, который мне нужен. Что я делаю не так, чтобы узнать хотя бы идентификатор приема?

Был бы признателен за любую помощь.

РЕДАКТИРОВАТЬ (v2): мне удалось найти регулярное выражение, необходимое для получения идентификатора Ingest с этим кодом регулярного выражения:

/([-\w]{25,})/

Вот код. Он успешно работает с новым столбцом ingestId, но все еще без идентификатора приема, который я ищу:

введите описание изображения здесь

filter level = "error"
| filter strcontains(@logStream, 'ingest-')
| filter @message like /(ingestId)/
| parse @message "\"ingestId\": \"/([-\w]{25,})/\"" as ingestId
| fields @timestamp, @message, @logStream, level
| sort @logStream, @timestamp asc

Что можно сделать, чтобы я мог отображать идентификатор приема каждого входящего сообщения? Спасибо всем.


person Roma    schedule 24.08.2020    source источник


Ответы (1)


Мне удалось исправить проблему, чтобы отобразить идентификатор приема в столбце. Я надеюсь, что это поможет любому, у кого возникают проблемы с этим, получить информацию из вашего сообщения:

filter level = "error"
| filter strcontains(@logStream, 'ingest-')
| parse message /ingestId=(?<ingestId>[-\w]+)/
| display ingestId
| fields @timestamp, message, level, @logStream
| sort @logStream, @timestamp asc
person Roma    schedule 26.08.2020