Syslog Ng обнаруживает логи f5 как директорию из-за того, что имя хоста написано с добавлением “local/” или “slot1/”

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

У нас есть система, в которой несколько устройств f5 отправляют логи в syslog-ng. Мы настроили syslog-ng для отправки в:

/path/to/directory/$HOST. 

Это вызывает проблему, потому что, так как /local находится в поле имени хоста, он пытается отправить его в:

/path/to/directory/local/ или /path/to/directory/slot1/. 

Поскольку мы не хотим создавать директории, ошибка следующая:

Директория не существует. 

Я пытался использовать правило переписывания syslog-ng, чтобы заменить /local и /slot1 в именах хостов на local- и slot-, но, похоже, это не работает.

Вот правило переписывания:

    rewrite r_f5{
        subst("slot1/", "slot1-", value("HOST"), flags("global"), flags("ignore-case"));
        subst("slot1/", "slot1-", value("MESSAGE"), flags("global"), flags("ignore-case"));     
        subst("local/", "local-", value("HOST"), flags("global"), flags("ignore-case"));
        subst("local/", "local-", value("MESSAGE"), flags("global"), flags("ignore-case"));
};

Обратите внимание, что правила для сообщений были добавлены из-за того, что правила для хостов не сработали.

Вот правило ведения логов:

log { source(s_network_f5); rewrite(r_f5); destination(d_network_f5);};

Есть ли что-то, что я делаю неправильно в правиле переписывания?

K76259573: Добавление или изменение FQDN имен хостов для сообщений syslog
https://my.f5.com/manage/s/article/K76259573

В следующем примере мы выполняем переписывание сообщений только для сообщений, направленных на 2-й сервер Syslog (22.22.22.22).
Сообщения Syslog, направленные на 1-й сервер Syslog (11.11.11.11), по-прежнему будут иметь имя хоста в формате slot#/<FQDN>.

<${PRI}> = FACILITY + PRIORITY

slot1/CBJ01-SVR-LB01.celcom.net.my

$(substr ${HOST} 6 14) = начинается с 0 (перед s), на позиции 6 (перед C), вырезаем 14 символов = CBJ01-SVR-LB01

Vendor01@(CBJ01-SVR-LB01)(cfg-sync In Sync)(/S1-green-P::Active)(/Common)(tmos)# list sys syslog
sys syslog {
    include "
    filter f_remote_loghost {
        level(info..emerg);
    };
    template custom_remote_template {
        template(\"<${PRI}>$DATE $(substr ${HOST} 6 10) $PRIORITY $MSG from $HOST\\n\");
        template_escape(no);
    };
    destination my_remote_server {
        udp(\"11.11.11.11\"
        port(514)
      );
        udp(\"22.22.22.22\"
        port(514)
        template(custom_remote_template)
        persist-name(Remote1)
      );
    };
    log {
        source(s_syslog_pipe);
        filter(f_remote_loghost);
        destination(my_remote_server);
    };
    "
}
Vendor01@(CBJ01-SVR-LB01)(cfg-sync In Sync)(/S1-green-P::Active)(/Common)(tmos)#

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

Проблема с журналированием F5 в Syslog-ng: Анализ и Решение

Введение

Ваша ситуация с журналированием F5 устройств в систему syslog-ng является распространенной проблемой, с которой сталкиваются администраторы сетей. Поскольку ваши устройства отправляют журналы с именами хостов, содержащими local/ или slot1/, возникает проблема при попытке сохранить эти журналы в каталоги, что приводит к ошибкам о несуществующих директориях. В данной статье мы рассмотрим, как решить эту проблему, модифицировав ваши правила переписывания в syslog-ng.

Проблема

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

/path/to/directory/$HOST

При этом значения хостов могут содержать префиксы local/ или slot1/, что приводит к созданию некорректных путей, таких как /path/to/directory/local/ или /path/to/directory/slot1/. Это становится причиной ошибок: "Директория не существует".

Проверка правил переписывания

Вы указали используемые вами правила переписывания:

rewrite r_f5 {
    subst("slot1/", "slot1-", value("HOST"), flags("global"), flags("ignore-case"));
    subst("local/", "local-", value("HOST"), flags("global"), flags("ignore-case"));
};

Анализ и Возможные Исправления

  1. Проверка порядка правил: Убедитесь, что находитесь в правильной последовательности. Если syslog-ng пытается сохранить журнал до применения правил переписывания, изменение не будет применено. Попробуйте переместить вызов переписывания непосредственно перед определением целевого устройства.

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

log {
    source(s_network_f5);
    rewrite(r_f5);
    destination {
        file("/path/to/directory/${HOST}.log");
    };
};
  1. Переписывание сообщений: Проблема может заключаться в неправильном указании местоположения замены. Переписывание, применяемое к сообщению, должно быть основано на HOST, а не на содержимом самого сообщения. Приведенные вами правила переписывания для MESSAGE не нужны, если удалены проблемы с HOST.

  2. Примеры различных правил переписывания:

Вот пример, переопределяющий HOST:

rewrite r_f5 {
    subst("slot1/", "slot1-", value("HOST"), flags("global"));
    subst("local/", "local-", value("HOST"), flags("global"));
    set(value("HOST"), "new value");  # Вместо "new value" можете прописать корректное имя хоста
};
  1. Логирование и отладка: Для того чтобы лучше понять, что происходит, добавьте дополнительные логи. Проверьте основной лог syslog-ng, который будет показывать, как именно обрабатываются сообщения. Это может помочь в выявлении ошибок.

  2. Документация F5: Ознакомьтесь с документацией, в том числе с статьей, относящейся к F5 коду K76259573, которая может содержать информацию о работе с использованием переписывания на уровне сообщений.

Заключение

Проблема с неправильным формированием имен директорий при работе с syslog-ng и F5 может быть устранена с помощью правильной конфигурации правил переписывания хоста. В первую очередь, обратите внимание на порядок и структуру правил переписывания, убедитесь, что изменения применяются до их использования в настройках направлений. Если у вас возникли дальнейшие проблемы, логирование и просмотр документации помогут в их разрешении.

Приступайте к внесению вышеуказанных изменений, и это должно помочь устранить текущие ошибки и добиться правильной работы с журналами F5.

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

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