Игнорирование IP-адреса сервера пересылки в syslog-ng
Мы получаем каналы syslog-ng от сервера пересылки, который мы не контролируем.
Проблема в том, что они используют более старую версию (RHEL 6), и хотя для keep_hostnames установлено значение "yes" (chain_hostnames для "no"), это просто не работает. Их фид по-прежнему добавляет к сообщению IP-адрес ретранслятора и метку времени.
Кроме создания глобального фильтра для этого единственного входа, чтобы сорвать этот ведущий IP и временную метку, я не знаю другого способа сделать это.
У кого-нибудь есть предложения? Я очень удивлен, что не могу сказать своему системному журналу просто игнорировать все добавленные цепочки реле.
1 ответ
Моя работа для этого не сексуальна, но она работает. Я все уши, если кто-то еще знает о лучшем способе.
Вот что я сделал. Поэтому в этой ситуации я пытаюсь отфильтровать журналы 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 определенным образом, чтобы убедиться, что они выполняются в правильном порядке, чтобы сохранить циклы процессора (это по алфавиту?).