Исключения и включения в syslog-ng

Вопрос или проблема

У меня есть 2 фильтра syslog, которые я хочу объединить вместе, но не получается правильный синтаксис

{netmask(192.168.0.1/32) or netmask(192.16.0.5/32);};

и

{not(match("sso_login") or match("fake-domain.com"));};

Иногда это ломает строку журнала или происходит несоответствие, когда в одном и том же файле syslog-ng.conf присутствуют несколько фильтров. Поэтому я пытаюсь использовать оба фильтра в одной строке. Что-то вроде

{(netmask(192.168.0.1/32) or netmask(192.16.0.5/32)) and (not(match("sso_login") or match("fake-domain.com")));};

Пожалуйста, помогите с правильным синтаксисом для этого

Ответ или решение

Конечно, интеграция и объединение фильтров в syslog-ng может быть непосильной задачей, особенно в случаях, когда важно правильно синтаксически оформить комбинированные фильтры. На основе вашего примера задача заключается в правильной комбинации фильтров по IP-адресам и исключении определённых сообщений, используя слияние логических операторов.

Основной задачей является грамотное структурирование фильтра, который будет одновременно включать IP-адреса и исключать определённые шаблоны. В вашем примере вы уже проделали значительную часть работы, однако стоит акцентировать внимание на правильном использовании скобок и операторов.

Рассмотрим предложенный вами фильтр:

{(netmask(192.168.0.1/32) or netmask(192.16.0.5/32)) and (not(match("sso_login") or match("fake-domain.com")));};

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

Обратите внимание на следующие шаги для проверки и исправления возможных ошибок:

  1. Проверка формата IP-адресов: Убедитесь, что вы указали правильные IP-адреса и маску подсети. В вашем случае возможно опечатка: 192.16.0.5 может понадобиться проверить, так как типичные подсети начинаются с 192.168.$.

  2. Операторы и скобки: Используйте логические операторы or и and таким образом, чтобы соблюсти правильный порядок операций. Следите за тем, чтобы каждое выражение было заключено в соответствующие скобки.

  3. Синтаксическая валидация: После написания фильтра, используйте встроенные инструменты в syslog-ng для проверки синтаксиса, чтобы гарантировать его корректность до внедрения.

Чтобы всё работало корректно, ваше полное выражение может выглядеть так:

filter f_combined_logic {
    (netmask("192.168.0.1/32") or netmask("192.168.0.5/32")) and not (match("sso_login") or match("fake-domain.com"));
};

Важно не забывать закрывающий символы для затирания блока фильтра: filter f_combined_logic { ... };

Следуя этим рекомендациям, вы сможете успешно ассимилировать фильтры в ваш конфигурационный файл syslog-ng, избегая столкновений и путаницы при слиянии различных условий. Таким образом, вы настроите систематизированный подход к обработке логов, что позволит вам значительно повысить эффективность работы серверов.

Оцените материал
Добавить комментарий

Капча загружается...