Я хочу накапливать логи на центральном сервере. Ввод соответствующих ключевых слов в Google приводит меня ко всем видам сложных инструментов, таких как fluentd и elk, но я не хочу агрегировать журналы и предоставлять аналитику, я просто хочу получить их с исходного сервера как можно быстрее, эффективнее и надежнее. .
Передача потокового вывода через регистратор дала бы мне возможность передавать данные как системный журнал, но это означает, что UDP (ненадежный), и я не вижу, как демультиплексировать данные с нескольких серверов на хосте журнала.
Передача данных по конвейеру через netcat упрощает использование TCP, поэтому должна быть возможность создать какую-то возможность высокой доступности, и это требует меньше накладных расходов, чем отправка каждой записи журнала в виде HTTP-запроса, но это кажется немного специальным и слишком минималистичным.
Запись журналов в общий ресурс NFS имеет много преимуществ, помимо аспекта безопасности - источник записей журнала имеет слишком большой контроль над файлом журнала. А поскольку nfs4 не подходит, высокая доступность затруднена.
Есть ли у кого-нибудь более надежное и эффективное решение?
(Все журналы происходят из приложений в Linux / одна запись в журнале может быть многострочной)
Какая у вас ОС? Демон rsyslog включен в большинство дистрибутивов и имеет встроенную возможность пересылки через UDP, TCP и RELP. (Надежный протокол регистрации событий)
Как вы уже упоминали, вам не нравится надежность UDP; рассмотрите TCP или RELP.
и я не вижу, как демультиплексировать данные с нескольких серверов на хосте журнала
Если я понимаю, о чем вы здесь спрашиваете, ответ - использовать шаблон в вашем выходном каталоге, который использует имя хоста отправителя. (А также индексируйте по дате, чтобы упростить удаление старых файлов.) В итоге вы получите что-то вроде:
/var/log/loghost/$yyyy/$MM/$dd/$hostname/messages
Что касается журналов приложений, вы можете прочитать их с помощью модуля входного файла rsyslog. (imfile)
На сайте сопровождающего есть несколько отличных кулинарных книг / примеров. Кажется, вам просто нужно указать в правильном направлении, поэтому я не стал слишком конкретным. Я бы начал здесь и вернулся с более конкретными вопросами, если вы застряли.