Централизованное ведение журнала сети — системный журнал и альтернативы?[закрыто]

StackOverflow https://stackoverflow.com/questions/1809296

Вопрос

На работе мы создаем распределенное приложение (возможно, на нескольких машинах в локальной сети, возможно, позже на нескольких континентах в WAN+VPN).Мы не хотим, чтобы файлы журналов были локальными для каждой машины (заполняли диск и их невозможно просмотреть в совокупности), поэтому нам необходимо централизовать ведение журналов по сети.Большинство журналов не имеют значения, поэтому для них подойдет UDP, но некоторые из них представляют собой важные оповещения, убыточные и должны доставляться надежно, что подразумевает TCP.Мы беспокоимся о перегрузке сети, если протокол журналирования слишком болтлив, или о перетаскивании приложений на сканирование, если они не отвечают.

Некоторые возможности, которые я рассмотрел:

  • системный журнал (это кажется идеальным, но мой начальник настроен против этого, поэтому я, возможно, не смогу это выбрать).
  • писец из Facebook (но это кажется немного тяжеловесным с сервером на каждой машине - не каждое сообщение журнала требует сверхнадежности).
  • используя очередь сообщений, например кроликMQ который может иметь несколько очередей, настроенных на разные уровни безопасности транзакций.
  • в худшем случае я могу написать свой собственный с нуля.

Есть ли у вас другие предложения?Какие решения для централизованного ведения журналов вы использовали и насколько хорошо они сработали?

Редактировать: Я склонялся к Script, потому что его конструкция с промежуточным хранением отделяет работающее приложение от задержки в сети.Но после попыток установить его, я обнаружил, что (1) он недоступен в виде двоичного пакета - в наши дни это непростительно - и (2) он тесно зависит от библиотеки (экономной), которая тоже недоступна в виде двоичного пакета!И что хуже всего, он даже не скомпилировался должным образом.Это не качественный код, даже с открытым исходным кодом.

Это было полезно?

Решение

Мы успешно использовали НольMQ для журналов сценария распределенного приложения, такого как ваш.Это очень надежно и невероятно быстро.Мы перешли на ZeroMQ после не очень успешной реализации с Распространение.В нашей установке один сервер ZeroMQ способен обрабатывать более 70 различных журналов распределенных приложений со средней и высокой нагрузкой.Он получает данные из локальной сети и через Интернет.

Если вам нужно подробное сравнение серверов очередей, посмотрите эту страницу из вики Second Life.

Надеюсь, поможет!

Другие советы

В последнее время появилось несколько альтернатив.Примечательно, что Scribe больше не поддерживается.Facebook разработал своего преемника под названием Caligraphus, и его исходный код не является открытым.Вот список альтернатив.

  • системный журнал:установлен во всех дистрибутивах Linux
  • Свободно владеющий:Облегченный регистратор на базе C+Ruby, который обрабатывает журналы в виде потока JSON.
  • лоток:разработан в Cloudera, написан на Java и хорошо работает с экосистемами Hadoop.
  • Апач Кафка:разработанная в LinkedIn архитектура на основе извлечения
  • Писец:с открытым исходным кодом Facebook, но больше не поддерживается

Отказ от ответственности:Я коммиттер проекта Fluentd.

Системный журнал хорош, если вы собираетесь сосредоточиться только на журналах инфраструктуры (например,на уровне системы).я слышал это Сервер системного журнала KIWI хороший вариант, хотя сам не пробовал.С другой стороны, если вы хотите регистрировать информацию, связанную с приложением, системный журнал, возможно, не лучший вариант для этого.Если вы используете службы ведения журнала Apache (log4j, log4xxx и остальные), то logFaces было бы хорошим решением, поскольку оно создано специально для объединения нескольких приложений в одном месте.Работает как с соединениями TCP, так и с UDP, имеет достойный просмотрщик журналов и интеграцию с базой данных.

Раскрытие информации:Я автор этого продукта.

Другие примеры могут быть отличными, но мне повезло с Системный журнал-NG.Он чрезвычайно гибок и настраиваем;хотя его довольно легко взять в руки и быстро сделать что-то полезное.

Вы также можете рассмотреть возможность использования оповещений SNMP.

Пересмотрел все альтернативы, рекомендованные в этой теме.Искал что-то на базе Python.Погуглил еще и нашел часового https://getsentry.com/welcome/ Открытый исходный код, хорошо документированный.Должно быть надежным для коммерческого использования, поскольку на этом основан бизнес.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top