
Я хочу настроить простой сервер журналов для приема журналов от всех клиентов. Я не говорю о стандартных системных журналах, таких как /var/log/mail , message, boot и т. д. Я хочу перенаправлять или отправлять журналы приложений, и они могут вообще не использовать демон syslog для регистрации своих сообщений.
Например, /appdir/log/error.log.
Я наткнулся на множество постов в интернете; большинство предлагают использовать rsyslog или syslog-ng. Ну, пока что мне удалось перенаправить стандартные системные журналы, а не журналы приложений. Я использую среду centos 5/6.
решение1
Я видел два основных подхода к этому вопросу.
Во-первых, многие приложения будут иметь возможность писать на хост syslog изначально. Это лучший путь. В других случаях я буду использовать базовый скрипт — что-то вроде того, что показано ниже, работает.
sudo tail /my/app/log | nc -w0 -u 192.168.1.1 514
EDIT - действительно есть способ справиться с этим в syslog-ng, если вы запускаете его в системе, генерирующей логи. Замените соглашение об именовании и место назначения по желанию. Что-то похожее также доступно для rsyslog, но это более неуклюже (imho).
source s_trbdk3 {
file("/var/log/trbdk3.log" flags(no-parse) program_override("trbdk3") );
};
log{
source(s_trbdk3);
destination( d_mesg );
};
решение2
Входной модуль rsyslog imfile
может:
Предоставляет(ют) возможность конвертировать любой стандартный текстовый файл в сообщение syslog. Стандартный текстовый файл — это файл, состоящий из печатных символов, строки которого разделены символом LF.
Ты можешь читатьофициальная документациядля большего.
Я никогда не пробовал этого, и, возможно, это не очень эффективно, но, похоже, с этой задачей справляется.
syslog-ng, похоже, может делать что-то подобное со своимиfile()
исходный драйвер.Этот примерпредлагает декларацию источника, подобную этой:
source s_all {
file("/path/to/your/file" follow_freq(1) flags(no-parse));
};