Используя модуль CheckEventLog из NSClient++, как правильно фильтровать два разных типа событий?

У меня возникло странное количество проблем с определением правильного синтаксиса для "filter=in" двух типов событий: предупреждение и ошибка.

Я использую следующую строку:

CheckEventLog -a truncate=1023 MaxWarn=1 MaxCrit=1 file='DFS Replication' filter=in "filter.eventSource='DFS Replication'" "filter.eventSource='DFSR'" "filter.eventType==error" "filter.eventType==warning" "filter+generated=\<5m" descriptions unique syntax='%message%'

"Filter = in" означает "включать" все фильтры, перечисленные в условии; вместо "filter = out" значение исключает все фильтры, перечисленные в условии.

Синтаксис "filter*X" означает:

  • '' необязательно (как логическое ИЛИ)
  • Требуется '+' (например, логическое И)
  • '-' не требуется (как логическое ИЛИ НЕ)

Эта информация собрана из документации.

Странно то, что для меня приведенный выше синтаксис означает: требовать присутствия перечисленных фильтров ('filter = in') из источника событий 'Репликация DFS' ИЛИ ​​'DFS R', включать в себя все события типа ИЛИ предупреждения или ошибок, которые произошли меньше чем 5 минут назад.

Однако приведенный выше синтаксис возвращает все eventTypes (включая ошибку, предупреждение, информацию) [из перечисленных источников событий (хотя я не доказал, что они явным образом являются "источниками событий", а не всеми источниками событий в журнале событий ("файл"). =')), что произошло менее 5 минут назад].

Кто-нибудь знает, как включить два разных фильтра eventType в команду CheckEventLog в NSClient++ v0.3.9?

1 ответ

Решение

Используйте новый синтаксис, который похож на SQL...

Новая команда примера содержит следующий фильтр:

..."filter=generated gt -2d AND severity NOT IN ('success', 'informational') AND source != 'SideBySide'"...

И в вашем случае, я думаю, вы хотите иметь...source = 'DFS Replication' ИЛИ ​​source = 'DFSR'...

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