Захватывать только определенные журналы с syslong-NG
Я новичок в Syslog-ng. Софар Я развернул его, и он работает нормально, отправляя некоторые журналы в MongoDB. Теперь, что я действительно хочу сделать, это перенести некоторые журналы (например, /var/log/secure) в MongoDb, в то же время перенося некоторые другие журналы в файловую систему, но игнорируя при этом другой набор журналов.
ребята, можете ли вы помочь мне определить такую конфигурацию?
спасибо Макс
1 ответ
/var/log/secure
должно быть уже из syslog-ng. Таким образом, вам просто нужно перенаправить, куда идут записи в журнале.
Старайтесь не думать о вещах с точки зрения файлов. / var / log / secure - это файл yes, но только потому, что syslog-ng сконфигурирован для размещения там записей журнала. Записи журнала входят со всеми видами атрибутов, таких как "средство", "приоритет", имя программы, PID и т. Д. Если я хочу, я могу сказать syslog-ng направить все записи журнала из программы sshd '/var/log/secure.
Так что вам нужно изменить критерии того, что направляется на mongod b. Давайте представим, что ваша конфигурация syslog-ng выглядит примерно так:
filter f_secure {
facility(auth) or facility(authpriv);
};
destination d_secure {
file('/var/log/secure');
};
log {
source(s_local); filter(f_secure); destination(d_secure);
};
filter f_mongodb {
program('foobar');
};
destination d_mongodb {
mongodb(
...
);
};
log {
source(s_local); fitler(f_mongodb); destination(d_mongodb);
};
Все, что вам нужно сделать, это изменить фильтр для mongod b, чтобы он включал в себя то же, что и фильтр для /var/log/secure. В зависимости от вашей версии syslog-ng, это может быть так же просто, как изменить f_mongodb
к следующему:
filter f_mongodb {
filter(f_secure) or program('foobar');
};
Все, что мы сделали, это включили определение f_secure
в f_mongodb
, Теперь любые изменения f_secure
также повлияет на то, что входит в mongod b.
Однако, в старых версиях syslog-ng вы должны сделать следующее (поскольку я считаю, что рекурсивные фильтры были добавлены в версии 3.X):
filter f_mongodb {
( facility(auth) or facility(authpriv) ) or program('foobar');
};
Это делает то же самое, что и в нашем предыдущем примере. Разница лишь в том, что мы заменили filter(f_secure)
с содержимым самого фильтра. Это все filter(f_secure)
делает. Это просто делает вашу конфигурацию проще в обслуживании, чтобы у вас не было дублирующих строк конфигурации везде.
Обратите внимание, что круглые скобки вокруг facility(auth) or facility(authpriv)
не являются строго необходимыми, я просто включил их в качестве логического эквивалента того, что filter(f_secure)
делает