Запрос Amazon CloudWatch Insights - PullRequest
0 голосов
/ 17 июня 2020

У меня есть такие журналы:

I, [2020-06-17T09:32:48.100103 #9]  INFO -- : [54b35e04-9c19-443d-adff-b2c3192b5590] Completed 500 Internal Server Error in 7ms (ActiveRecord: 2.3ms | Allocations: 1705)

I, [2020-06-17T10:37:27.169909 #9]  INFO -- : [c800e9ce-fba3-4e1a-a19f-526f32746925] Completed 401 Unauthorized in 0ms (ActiveRecord: 0.0ms | Allocations: 115)

Итак, как вы можете видеть в сообщении, он всегда соответствует шаблону: Завершено [КОД ОШИБКИ] [СООБЩЕНИЕ ОБ ОШИБКЕ] ...

Я использую этот запрос для получения журналов с определенными кодами ошибок:

fields @timestamp, @message
| filter @message like /401/
| sort @timestamp desc
| limit 20

Но как я могу проанализировать сообщение, чтобы получить отдельные поля для кода ошибки и сообщения?

1 Ответ

0 голосов
/ 24 июня 2020

Вы можете использовать функцию parse с синтаксисом регулярного выражения: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html

Как это, например:

parse @message /Completed (?<errorCode>\d+) (?<errorMessage>.+) in (?<timeMilis>\d+)ms /
| filter isPresent(errorCode)

Результат будет примерно таким

-------------------------------------------------
| errorCode |     errorMessage      | timeMilis |
|-----------|-----------------------|-----------|
| 500       | Internal Server Error | 7         |
| 401       | Unauthorized          | 0         |
-------------------------------------------------

Это просто отфильтрует и извлечет поля, оттуда вы сможете выполнять дальнейшую обработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...