Как перенаправить сторонние журналы на сервер журналов в Centos

Как перенаправить сторонние журналы на сервер журналов в Centos

Я хочу настроить простой сервер журналов для приема журналов от всех клиентов. Я не говорю о стандартных системных журналах, таких как /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)); 
};  

Связанный контент