CloudWatch Logs Filter нечувствителен к регистру нескольких терминов или подключен

Я просто пытаюсь создать тревогу на основе фильтра логов CloudWatch, который срабатывает на нескольких терминах (или подключен, а не и) и нечувствителен к регистру

Использование "предупреждения об ошибке", так как шаблон не работает

Я ищу шаблон фильтра, реагирующий на все следующие ошибки и предупреждения:

ERROR: first sample
Error: second sample
error: third sample
{ ERROR: "fourth sample"}
{type: "error"}
WARNING: SOMETHING BAD!
{ WARNING: "fifth sample"}

4 ответа

Решение

Согласно документации AWS, касающейся фильтров и синтаксиса шаблонов, вы не можете использовать "предупреждение об ошибке" для захвата отношения "ИЛИ", потому что:

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

Другими словами, фильтры метрик CloudWatch Log предполагают наличие отношения "И".

Точно так же:

  • Метрические фильтры чувствительны к регистру.

Таким образом, вы не сможете достичь этого с помощью одного фильтра. Вам понадобится фильтр для каждой чувствительной к регистру перестановки "ошибок" и "предупреждений", которые вы собираетесь записывать в журналы Cloudwatch.

Чтобы установить один сигнал тревоги для всех этих фильтров, просто настройте каждый фильтр на использование одной и той же метрики CloudWatch. Вот пример из Консоли AWS, где каждый из моих метрических фильтров ориентирован на мой LogMetric/test метрика:

Консоль AWS показывает несколько фильтров метрик, использующих одну и ту же метрику CloudWatch

Затем я могу просто создать сигнал тревоги CloudWatch на основе LogMetric/test метрика для сигнализации о сумме этих различных метрических фильтров.

Если вам нужно отфильтровать некоторые строки, вы можете OR их следующим образом:

?"String1" ?"String2" 

и так далее. Попытайся.

Представим два способа решения проблемы...

I - Использование фильтров (группы журналов)

  1. Перейдите в AWS CloudWatch;
  2. Нажмите на «Журнал групп» («Журналы»);
  3. Найдите нужную группу журналов;
  4. Выберите нужную группу журналов;
  5. Нажмите «Поиск группы журналов»;
  6. Примените нужный фильтр в соответствующем поле и другие нужные параметры поиска.

ПРИМЕР ФИЛЬТРА

      ?"ERROR" ?"Error" ?"error" ?"EXCEPT" ?"Except" ?"except"

ПРИМЕЧАНИЕ. Позволяет выполнять поиск по нескольким случаям — обходной путь для «нечувствительного к регистру» — и по нужной части строки. Соединителем между терминами будет «ИЛИ».

II — Использование запросов (Logs Insights)

  1. Перейдите в AWS CloudWatch;
  2. Нажмите на «Logs Insights» («Журналы»);
  3. Найдите нужную группу журналов;
  4. Выберите нужную группу журналов;
  5. Вставьте свой запрос;
  6. Примените другие нужные параметры поиска;
  7. Нажмите «Выполнить запрос».

ПРИМЕР ЗАПРОСА

      fields @timestamp, @message
| filter @message like /(?i)(error|except)/
| sort @timestamp desc
| limit 20

ПРИМЕЧАНИЕ. Позволяет выполнять поиск без учета регистра и по нужной части строки. Соединителем между терминами будет «ИЛИ».

Спасибо!

[Ссылка (ы).: https://stackoverflow.com/a/52828678/3223785, https://bneijt.nl/blog/cloudwatch-case-insensitive-like-filter/, https://stackoverflow.com/ а/58377451/3223785]

В некоторых простых случаях может помочь использование регулярного выражения:%[Ee]rror%

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