У меня есть машина, которая собирает данные системного журнала со многих устройств, я храню все устройства, которые я хотеть иметь доступ к моему устройству в / etc / hosts, чтобы все они имели понятные мне имена. Если устройство регистрируется на моем компьютере, которого нет в / etc / hosts, я хотел бы иметь что-нибудь еще, чтобы я мог узнать, что это за хост, и предупредить об этом.
Мне нужно взять все журналы, которые отправляются на мои устройства, поместить их в один файл и минимально фильтровать, поэтому иногда я беру до 12 ГБ журналов в день. Из-за размера журнала с течением времени (который меняется ежедневно) я не хочу делать что-то вроде cat / tr / cut / grep журнала в cronjob.
Есть ли в syslog-ng, трюках linux или настройках iptables какие-либо другие функции, которые помогут определить, когда сообщения журнала приходят с неопознанного хоста?
Я не знаком с syslog-ng (Я использую rsyslog и другие), но я думаю, что у вас действительно должна быть карта, которая принимает исходный IP-адрес или идентификатор и возвращает то, что вы хотите называть, предположительно, вы также можете использовать значение по умолчанию.
map-value-pair: переименовать пары значений для нормализации шаблона журналов и перезаписать: форматировать, изменить и управлять сообщениями журнала> Изменение сообщений с помощью правил перезаписи> пары значений карты: переименовать пары значений для нормализации журналов Map-value- Синтаксический анализатор Pair () позволяет отображать существующие пары имя-значение на другой набор пар имя-значение. Вы можете переименовать их сразу, чтобы упростить использование для задач нормализации журнала (например, когда вы анализируете информацию из разных сообщений журнала и хотите преобразовать их в единую схему именования). Вы можете использовать обычные выражения пар значений, аналогично назначениям на основе пар значений.
Доступно в syslog-ng OSE версии 3.10 и новее.
Declaration: parser parser_name { map-value-pairs( <list-of-value-pairs-options> ); };
А затем использовал выходные данные этой карты в шаблоне.
destination d_file { file("/var/log/${YEAR}.${MONTH}.${DAY}/messages" template("${HOUR}:${MIN}:${SEC} ${TZ} ${HOST} [${LEVEL}] ${MESSAGE}\n") template-escape(no)); };