Syslog-ng: имена хостов с косой чертой

У нас проблема с регистрацией типов устройств с именами хостов, такими как slot1/devicename. К сожалению, когда журналы записываются на диск, записывается только slot1; поскольку у нас есть несколько устройств, это не позволяет нам узнать, какое устройство отправило журналы. Мы сделали захват пакета, чтобы подтвердить, что в сети имя хоста - slot1/devicename

options {
  long_hostnames(off);
  sync(0);
  perm(0640);
  stats(3600);
  chain_hostnames(on);
  keep_hostname(on);
  create_dirs(on);
  bad-hostname("^[0-9][0-9]*$");
}

source s_in {
  udp();
  tcp(max-connections(255)); };
}

destination s_files {
  file (
    "/opt/syslog-ng/$HOST/$FACILITY-$HOUR.log"
    template("$DATE $HOST $MSG\n")
    template_escape(no)
  );
};

log { source(s_in); destination(s_files); }

Это syslog-ng-2.0.9-27.34.39.2 на SUSE Linux Enterprise Server 11 SP4

1 ответ

Я предполагаю, что syslog-ng не ожидает, что имя хоста будет содержать косую черту, поэтому предполагается, что первая часть этой строки является именем хоста. Он либо удаляет вторую часть, либо предполагает, что принадлежит к следующему полю сообщения. Проверьте значение макроса $PROGRAM, он может содержать искомое имя. (Если нет, проверьте также макросы $HOST_FROM, $FULLHOST_FROM и $ FULLHOST.)

Если да, вы можете изменить имя файла назначения на /$HOST-$PROGRAM/ или что-то подобное (и, возможно, также использовать фильтр и отдельный путь к журналу для этого устройства, чтобы новый шаблон не портил имена каталогов устройств которые работают нормально).

Если это не решит проблему, более новые версии syslog-ng могут анализировать и перезаписывать сообщения журнала несколькими способами, которые могут решить эту проблему, но для этого вам нужно будет установить более свежую версию (2.0.9 - древняя версия).).

HTH, Роберт

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