LINUX.ORG.RU
ФорумAdmin

Перехват лога и отправка на другой сервер

 , ,


0

1

Здравствуйте.

Подскажите по следующему вопросу. Имеется софтинка которая не умеет в syslog и пишет логи самостоятельно в файл. Ротацию логов софтинка так же проводит своими силами. Можно ли каким-либо способом обмануть софтинку, подсунуть ей сокет, ссылку или что-нибудь ещё чтобы её сообщения перехватывать системным syslog'ом? Но так, чтобы при этом перестали писаться сообщения в родной лог программы. Можно не syslog'ом. Подойдёт любая программа способная захватить сообщение и переслать его на другой сервер.

Ответ на: комментарий от anonymous

А кто мне запретит? Я же царь и бог на этом сервере, где установлена эта софтинка. Хочу - пишу логи, не хочу - не пишу. Да хоть гвозди в него забиваю - главное что бы софтина работала и делала то что МНЕ надо.

Toten_Kopf
() автор топика
Ответ на: комментарий от i3wm

Так это я смогу отправлять сообщения в syslog, если каким-то образом смогу их перехватить от программы. А как их перехватить то? У программы в настройках я могу только указать имя файла куда лог писать.

Toten_Kopf
() автор топика
Ответ на: комментарий от AnDoR

Спасибо, первая часть, можно считать, решена. Может есть решение и о том как обмануть программу, что бы она писала в никуда? Я так понимаю, что если я ей подсуну /dev/null, то тогда уже syslog'ом захватить сообщения уже не смогу

Toten_Kopf
() автор топика
Ответ на: комментарий от zolden

И тоже спасибо. ELK у меня, как раз, стоит на удалённом сервере, куда я хочу слать логи с локального. А как софтинку то обмануть? Что бы локально теперь ничего не писалось?

Toten_Kopf
() автор топика
Ответ на: комментарий от Toten_Kopf

Софтина может удивиться, когда делая ротацию не сможет сделать truncate на свой логфайл (который фифо).

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Это да. Но там я могу тупо отключить ротацию. По крайней мере у меня уже есть поле для эксперементов. А кстати как у фифо с определением размера «файла»? ls -l показывает 0. Программа же тоже должна увидеть 0? Так ведь тоже можно попытаться ограничить ротацию. Настройка ротации в зависимости от размера там точно есть

Toten_Kopf
() автор топика
Ответ на: комментарий от legolegs

Ну во первых - я не хочу использовать системд. Его я тоже отключать буду. Я всё это затеваю чтобы локально ничего не писать на диск. Что бы диск только на базу данных работал. А во вторых - у этой софтинки 17 лог файлов. Ну это не одна софтинка, а комплекс из нескольких. И логи у них не совпадают по формату, и не хотел бы я их в кучу мешать.

В общем пока пробую то что выше предложили - подменить файлы логов трубой и из трубы буду читать rsyslog'ом. Ну а из него уже слать куда мне надо.

В любом случае спасибо за замечания и предложение. Если не получится первый вариант, то может соберу всё через системд и отправлю на удалённый сервер через него.

Toten_Kopf
() автор топика

Имеется софтинка которая не умеет в syslog и пишет логи самостоятельно в файл

syslog-ng, пример из документации:

source s_tail {
    file("/var/log/apache/access.log" follow-freq(1) flags(no-parse, validate-utf8));
};

AS ★★★★★
()
Ответ на: комментарий от legolegs

то просто дай проге /dev/stdout вместо лога и пусть системд это ест.

systemd не умеет remote syslog, умеет только локальный.

AS ★★★★★
()
Ответ на: комментарий от AS

Да, про syslog-ng я уже почитал, и что он так умеет я знаю. Задачу чтения локального файла и передачу удалённый сервер я уже решил - и с помощью rsyslog модуля imfile, и юнит для systemd написал, в котором запускал logger. Фишка была в том что-бы во второй части задачи отучить софтинку писать локально, чтобы логи были только на удалённом сервере - это тоже решил. Создал именованный канал, и софтинка прекрасно туда пишет. Проблема оказалась в том что rsyslog не умеет читать из именованного канала. Вот сейчас сижу тестирую юнит systemd, который с logger'ом. Если не взлетит - буду пробовать syslog-ng. Пока искал решение для rsyslog, где-то видел упоминание, что, якобы, syslog-ng умеет читать из fifo

Toten_Kopf
() автор топика
Ответ на: комментарий от Toten_Kopf

что, якобы, syslog-ng умеет читать из fifo

Он там много что умеет читать, и с каждой версией всё больше. Надо в документацию глянуть, что там допустимо в source использовать сейчас. Как минимум есть program, можно своё приложение написать, которое будет fifo читать и в stdout выводить.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

Не, ну если я уж буду своё приложение писать, то я уж его научу и слать на удалённый сервер. Мне тогда дополнительные сущности нафиг не нужны будут. Только лень велосипеды городить. Пока вроде logger справляется. Надо только нагрузить его, помучать и посмотреть как он себя вести будет.

Toten_Kopf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.