rsyslog (локальный) и удаленный вход

У меня есть несколько серверов Linux, что я хочу контролировать файлы журнала. Я думал, что будет замечательно установить центральный лог-сервер, который может получить поступление rsyslog пакеты. Каждое имя хоста имело бы свою собственную папку и набор журналов.

Однако действительно ли возможно иметь запись rsyslog локально (на клиенте) и к удаленному центральному лог-серверу? Я знаю, что это копирует вход, но мое беспокойство - то, если центральный лог-сервер должен быть перезагружен или понижается для обслуживания/ошибок, я не хочу терять способность иметь некоторые данные логов для диагностирования других систем.

-1
задан 2 July 2015 в 00:58
2 ответа

Короткий ответ: Да. Возможно... и делать регулярно.

Более длинный ответ: Создайте новый файл в /etc/rsyslog.d (т.е. 60-remote.conf) и добавьте одну строку:

*.* @remote.logging.server.net

(обязательно замените "remote.log.server.net" на ваш реальный удаленный сервер, на котором вы хотите централизоваться). Вы также можете добавить различные фильтры для отправки предупреждений и ошибок только на удаленный сервер вместо EVERYTHING (*.*).

.
1
ответ дан 5 December 2019 в 19:52

Конфигурация даже не очень большой инфраструктуры логгирования (например: десятки серверов, генерирующих вместе несколько сотен мегабайт LOG в день) является довольно сложной задачей.

В вашем вопросе вы "трогаете" несколько критических моментов. Я собираюсь обратиться к ним, начиная с явных вопросов.

  1. "можно ли локально (на клиенте) записать rsyslog и на удаленный центральный лог-сервер"

Да. Конечно. Предположим, что у вас уже запущен rsyslog-сервер, который записывает журнал локально, отправить этот журнал на удаленную машину так же просто, как добавить в конце текущей конфигурации что-то вроде ALSO:

*.* @10.0.49.251

это значит: "отправьте через UDP/514 по адресу 10.0.49.251 сообщения LOG, соответствующие ALL объектам и ALL приоритетам". К сожалению, несмотря на то, что это ответ на Ваш вопрос, есть еще несколько моментов, на которые стоит обратить внимание, так как Вы, кажется, заинтересованы в "надежной переадресации" таких лог-сообщений. Эта статья должна стать хорошей отправной точкой для дальнейшего анализа.

  1. " Не хочу терять возможность иметь какие-то лог-данные для диагностики других систем."

"

Я читал это самое требование (а не теряя LOG-сообщения) несколько раз. Каждый системный администратор хочет этого. Но, к сожалению, все очень сложно (локальные файловые системы могут быть переполнены и, возможно, есть no место для локального хранения лог-сообщений; переадресация логов подразумевает сетевую активность с большим количеством факторов "get-lost" и т.д.) и даже если это может быть технически достижимо, то за это приходится платить очень высокую цену. Подробнее обсуждать не буду, так как есть этот очень интересный пост , который ясно объясняет основную цифру.

В дополнение к вышесказанному, позвольте мне добавить кое-что еще, связанное с тем, что Вы написали в своем вопросе:

  1. "было бы здорово установить центральный лог-сервер, который может перехватывать входящие rsyslog-пакеты"

Обычная переадресация syslog с одного Linux-бокса на другой Linux-бокс действительно проста в настройке: достаточно одной строки в rsyslog.conf. В любом случае, основываясь на моем опыте, вы можете достичь точки, когда наличие простой строки с разрушенным текстом не достаточно для ваших аналитических нужд. Мы, конечно же, можем "отфильтровать" на основе syslog-функций, приоритета syslog, syslog-тэга, source-host и сообщения. Но это может быть ограничено. Rsyslog предоставляет несколько свойств , которые могут быть использованы при "сборке" сообщений для хранения/пересылки и/или при разборе полученного сообщения. Кроме того, некоторые из этих свойств могут в дальнейшем представлять собой другие подструктуры. Это соответствует тому, что указано в RFC 5424. Я не говорю, что вы должны работать с JSON (имея локальный rsyslog подготовить JSON-структурированных сообщений и их передачи на ваш центральный лог-сервер), но, по крайней мере, вы должны тщательно оценить такой подход, особенно если вы планируете "индексировать" ваши LOG для аналитических целей.

  1. "Каждое имя хоста будет иметь свою собственную папку и набор логов. "

С помощью rsyslog действительно легко настроить среду, в которой лог-сообщения автоматически сохраняются в файлах, основанных на различных свойствах (таких как ГОД, МЕСЯЦ, ДЕНЬ и ВОСПРОИЗВОДСТВО). Это так же просто, как и сделать:

template(name="DYNmail" type="string" string="/var/log/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME:::lowercase%-mail.log")
[...]
if  ($syslogfacility-text == 'mail') then -?DYNmail;RSYSLOG_FORMAT
if  ($syslogfacility-text == 'mail') then stop

, поэтому при трёхрядной конфигурации все сообщения mail.*, приходящие с любого удалённого сервера, будут храниться в иерархии ГОДА/МЕСЯЦ/ДЕНЬ в файлах с именем HOSTNAME-mail. Включена автоматическая ротация логов. Мило, правда?

  1. "мои хосты работают под управлением Debian 7 и Debian 8."

независимо от вашей версии debian, я предлагаю вам обновиться до последнего стабильного rsyslog-выпуска. Для основных дистрибутивов существуют хорошо поддерживаемые репозитории, debian включён. Также, если вы планируете потратить некоторое время на настройку/администрацию rsyslog-релиза, я приглашаю вас подписаться на соответствующий список рассылки , который является очень активным и ценным.

.
0
ответ дан 5 December 2019 в 19:52

Теги

Похожие вопросы