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
метрика:
Затем я могу просто создать сигнал тревоги CloudWatch на основе LogMetric/test
метрика для сигнализации о сумме этих различных метрических фильтров.
Если вам нужно отфильтровать некоторые строки, вы можете OR
их следующим образом:
?"String1" ?"String2"
и так далее. Попытайся.
Представим два способа решения проблемы...
I - Использование фильтров (группы журналов)
- Перейдите в AWS CloudWatch;
- Нажмите на «Журнал групп» («Журналы»);
- Найдите нужную группу журналов;
- Выберите нужную группу журналов;
- Нажмите «Поиск группы журналов»;
- Примените нужный фильтр в соответствующем поле и другие нужные параметры поиска.
ПРИМЕР ФИЛЬТРА
?"ERROR" ?"Error" ?"error" ?"EXCEPT" ?"Except" ?"except"
ПРИМЕЧАНИЕ. Позволяет выполнять поиск по нескольким случаям — обходной путь для «нечувствительного к регистру» — и по нужной части строки. Соединителем между терминами будет «ИЛИ».
II — Использование запросов (Logs Insights)
- Перейдите в AWS CloudWatch;
- Нажмите на «Logs Insights» («Журналы»);
- Найдите нужную группу журналов;
- Выберите нужную группу журналов;
- Вставьте свой запрос;
- Примените другие нужные параметры поиска;
- Нажмите «Выполнить запрос».
ПРИМЕР ЗАПРОСА
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%