Мы получаем каналы syslog-ng от пересылки, которую мы не контролируем.
Проблема в том, что они используют более старую версию (RHEL 6), и, хотя для keep_hostnames установлено значение «yes» (для chain_hostnames установлено значение «no»), это просто не работает. Их канал все еще добавляет к сообщению IP-адрес реле и временную метку.
Я не знаю другого способа сделать это, кроме создания глобального фильтра для этого единственного входа, чтобы оторвать ведущий IP-адрес и временную метку.
У кого-нибудь есть предложения? Я очень удивлен, что не могу сказать своему syslog-ng просто игнорировать все добавленные цепочки реле.
Моя работа по этому поводу не является привлекательной, но она работает. Я все слышу, если кто-то знает способ получше.
Вот что я сделал. Поэтому в этой ситуации я пытаюсь отфильтровать журналы IIS (s_net - это просто tcp / udp, прослушивающий порт 514). Итак, вот что находится в моем файле iis.conf внутри conf.d
parser p_iis_pattern_db {
db_parser(file("/etc/syslog-ng/patterndb.d/strip_header.xml"));
};
filter f_iis {
match("iis", value(".classifier.class"));
};
rewrite r_iis {
set("${real_sender}", value("HOST"));
set("iis", value("PROGRAM"));
};
destination d_iis {
file("/nfs/syslog/iis/$YEAR/$MONTH/$DAY/${real_sender}/$YEAR-$MONTH-$DAY-$HOUR-${real_sender}-$PROGRAM.log"
template("${orig_sender}${msg}\n"));
};
log {
source(s_net);
parser(p_iis_pattern_db);
filter(f_iis);
rewrite(r_iis);
destination(d_iis);
flags(final);
};
Затем у меня есть файл шаблона в patterndb.d (strip_header.xml), который выглядит так:
<patterndb version='3' pub_date='2017-02-07'>
<ruleset name='strip_sender' id='strip_leading_sender'>
<rules>
<rule id='iis' class='iis'>
<patterns>
<pattern>@ESTRING:datestamp: @@IPv4:real_sender@ iis - - - @ANYSTRING:msg@</pattern>
</patterns>
</rule>
</rules>
</ruleset>
</patterndb>
Я бы предпочел фильтрацию на основе значения MACRO, отличного от сообщения, поскольку я думаю, что это, вероятно, довольно дорого; он должен анализировать послание каждого пакета. Поскольку данные поступают от реле, на котором запущена более старая версия syslog-ng, я выполняю исходящий тег данных на этом реле, и параметры keep-hostname / chain-hostname не работают.
Еще меня беспокоит то, что в спешке это станет небрежным, поскольку я начну добавлять источники без ретрансляции. Мне, возможно, придется сделать все, где я назову файлы conf определенным образом, чтобы убедиться, что они выполняются в правильном порядке, чтобы сэкономить циклы процессора (это по алфавиту?).