Сбор журналов с нескольких серверов отказоустойчивым способом

Сбор журналов с нескольких серверов отказоустойчивым способом

мое основное требование — иметь возможность просматривать и выполнять простые поиски по журналам, объединенным с нескольких машин. Однако я хотел бы, чтобы решение оказывало минимальное влияние на остальную часть (основной) системы. У меня нет требований к работе в реальном времени, процесс может быть асинхронным.

Изначально syslog казался хорошим вариантом, но что, если сервер syslog умрет? В худшем случае пользователь основной системы увидит ошибки, в лучшем случае некоторые журналы будут утеряны.

Поэтому я начал искать и нашел Logstash (http://logstash.net/). На данный момент моя идея такова:

  • на каждом сервере (на котором работают основные компоненты системы) запущен агент Logstash
  • агент отслеживает файлы журналов и отправляет их в кластер ElasticSearch
  • есть еще один сервер с Logstash UI

Сюда:

  • нет единой точки отказа
  • даже если кластер ES выйдет из строя, пострадают только агенты — приложение по-прежнему будет успешно записывать логи в файлы
  • После того, как ES вернется, агент (надеюсь) догонит и отправит все ожидающие журналы (достаточно ли умен Logstash, чтобы сделать это?)

Как вы думаете, это сработает? Или, может быть, вы могли бы порекомендовать другое решение?

решение1

Рсислогимеет некоторые из функций, которые вы описываете, и проект также имеетмножество документации о надежной пересылке сообщений.

Короче говоря, с помощью rsyslog вы можете использоватьРЕЛПпротокол для надежной пересылки сообщений syslog, и тогда вам не придется беспокоиться о потере сообщений. И у вас также есть возможность настроить локальные файлы спула, где rsyslog будет буферизировать сообщения в случае, если удаленный сервер выйдет из строя. Как только удаленный сервер снова заработает, ваш агент подтянется.

У вас также есть возможность настроить rsyslog для записи в реляционную базу данных, а затем вы можете сделать базу данных настолько избыточной, насколько захотите (лично я считаю, что сервер syslog проще кластеризовать).

решение2

Этот вопрос, скорее всего, будет закрыт как не относящийся к теме, пожалуйста, см. FAQ.

Независимо от этого, syslog (или любая система на основе syslog) должна работать просто отлично, в конце концов, если вы обеспокоены потерей журналов, то обязательно сделайте резервную копию сервера syslog в рамках вашего обычного сценария DR. Это довольно простая задача/запрос.

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