CloudWatch Insights: получить журналы с ошибочными лямбдами
Лямбда может иметь результат, который является либо успехом, либо ошибкой.
Я хочу увидеть журналы лямбды, которые ошиблись. Я пытаюсь сделать это с помощью запроса CloudWatch Insights.
Как я могу это сделать?
6 ответов
Если кто-то придет сюда в поисках решения, вот что я использую:
фильтр @message like /(?i)(Исключение | ошибка | сбой)/| поля @timestamp, @message | сортировать @timestamp desc | предел 20
Я использую приведенный ниже запрос, чтобы получить те ошибки, которые не охвачены запросом, упомянутым в ответе, и я вижу только сбой на панели мониторинга.
fields @timestamp, @message
| sort @timestamp desc
| filter @message not like 'INFO'
| filter @message not like 'REPORT'
| filter @message not like 'END'
| filter @message not like 'START'
| limit 20
Вот пример, который покрывает этот запрос
тайм-аут
@ingestionTime
1600997135683
@log
060558051165:/aws/lambda/prod-
@logStream
2020/09/25/[$LATEST]abc
@message
2020-09-25T01:25:35.623Z d0801056-abc-595a-b67d-47b14d3e9a20 Task timed out after 30.03 seconds
@requestId
d0801056-abc-595a-b67d-47b14d3e9a20
@timestamp
1600997135623
ошибка нововведения
@ingestionTime
1600996797947
@log
060558051165:/aws/lambda/prod-****
@logStream
2020/09/25/[$LATEST]123
@message
2020-09-25T01:19:48.940Z 7af13cdc-74fb-5986-ad6b-6b3b33266425 ERROR Invoke Error {"errorType":"Error","errorMessage":"QueueProcessor 4 messages failed processing","stack":["Error:QueueProcessor 4 messages failed processing"," at Runtime.handler (/var/task/lambda/abc.js:25986:11)"," at process._tickCallback (internal/process/next_tick.js:68:7)"]}
@requestId
7af13cdc-74fb-5986-ad6b-6b3b33266425
@timestamp
1600996788940
errorMessage
QueueProcessor 4 messages failed processing
errorType
Error
stack.0
Error: QueueProcessor 4 messages failed processing
stack.1
at Runtime.handler (/var/task/lambda/abcBroadcast.js:25986:11)
stack.2
at process._tickCallback (internal/process/next_tick.js:68:7)
другой пример со временем выполнения узла
Value
@ingestionTime
1600996891752
@log
060558051165:/aws/lambda/prod-
@logStream
2020/09/24/[$LATEST]abc
@message
2020-09-25T01:21:31.213Z 32879c8c-abcd-5223-98f9-cb6b3a192f7c ERROR (node:6) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
@requestId
32879c8c-7242-5223-abcd-cb6b3a192f7c
@timestamp
1600996891214
Если кто ищет как искать ошибку или авторизуйтесь
AWS Log insights
, можно использовать этот запрос для поиска:
fields @timestamp, @message
| filter @message like /text to search/
| sort @timestamp desc
| limit 20
На самом деле просто выбираю
log group(s)
и добавить новую строку как
| filter @message like /text to search/
в редактор запросов достаточно. Остальное идет по умолчанию.
Кроме того, не забудьте настроить временной интервал для истории поиска на случай, если вы не сможете найти релевантные результаты. По умолчанию он ищет только последний
1h
.
[обновление за июль 2023 г.]
Появилась новая команда с шаблоном анализа журнала CLoudwatch , которая незаметно использует машинное обучение для автоматической кластеризации данных журнала в шаблоны.
Команда шаблона использует алгоритмы машинного обучения AWS для автоматического распознавания шаблонов в данных журналов, агрегирования связанных журналов и суммирования тысяч строк журнала в несколько легко визуализируемых групп. Pattern помогает клиентам быстро выявлять возникающие тенденции, отслеживать известные ошибки, повышать прозрачность затрат за счет выявления часто встречающихся строк журнала и многое другое.
filter @message like /ERROR/
| pattern @message
для конкретных сообщений об ошибках на основе ваших операторов журналирования
filter @message like /ERROR/
| parse @message 'Failed to do: *' as cause
| pattern cause
| sort @sampleCount asc
вы можете выполнить следующий запрос в CloudWatch Logs Insights.
filter @type = "REPORT"
| stats max(@memorySize / 1000 / 1000) as provisonedMemoryMB,
min(@maxMemoryUsed / 1000 / 1000) as smallestMemoryRequestMB,
avg(@maxMemoryUsed / 1000 / 1000) as avgMemoryUsedMB,
max(@maxMemoryUsed / 1000 / 1000) as maxMemoryUsedMB,
provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB
В вашей консоли перейдите на страницу конфигурации вашего лямбды. В левом верхнем углу нажмите Monitoring
, тогда View logs in CloudWatch
справа.