Захватывать только определенные журналы с 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) делает

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