Каковы преимущества использования системного журнала перед другими средствами ведения журнала? - PullRequest
5 голосов
/ 13 октября 2011

Мы используем базовый сервер журналов Python на основе BaseHTTPServer для агрегирования наших журналов Python на сервере Ubunutu. Это решение выполнило наши потребности ... до сих пор. Количество программ, сбрасываемых на этот сервер журналов, выросло, и теперь регистратор наносит вред системе.

Теперь, когда мы вернулись к чертежной доске, мы рассматриваем возможность использования системного журнала.

Было бы выгодно использовать системный журнал над другими средствами ведения журнала.

Спасибо за помощь

Ответы [ 3 ]

5 голосов
/ 13 октября 2011

Использование системного журнала может быть простым и быстрым, но оно не может дать вам полный контроль над тем, как агрегируются ваши журналы.

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

Я вижу два варианта:

  1. используйте лучший http-сервер с поддержкой wsgi вместе с мини-веб-фреймворком (мы используем gevent + bottle, но http://nichol.as/benchmark-of-python-web-servers - это хорошо написанное сравнение решений)
  2. использовать очередь сообщений. это будет означать больше изменений в вашем коде, но это отдельное решение для вашей проблемы (и более эффективное). (мы используем rabbitmq, но для сравнения проверьте Google или http://www.darkcoding.net/software/choosing-a-message-queue-for-python-on-ubuntu-on-a-vps)

Edit: Специальным решением, поддерживающим очереди сообщений, является logbook . Его также можно использовать как прямую замену модуля регистрации стандартной библиотеки.

3 голосов
/ 07 июля 2015

Преимущества использования syslog там, где это возможно (все современные * nix-системы, включая Linux, FreeBSD, OS-X и т. Д.), Многочисленны:

  • Производительность лучше: syslog компилируется C и большинствоважно, что он работает как отдельный процесс, поэтому все ваши операции журналирования становятся неблокирующими для приложений, процессов и потоков, которые делают их
  • . Вы можете одновременно регистрироваться в нескольких процессах / потоках, не беспокоясь о блокировке.Все журналы безопасно сериализуются для вас, чтобы вы не потеряли данные
  • Вы получаете стандартные сортируемые метки времени на всех зарегистрированных линиях бесплатно
  • Вы получаете ротацию журналов бесплатно
  • Вы получаете бесплатную поддержку на уровне серьезности (см. man syslog)
  • Вы можете вызывать журналирование с любого языка с привязкой C, который является практически любым языком
  • Вы можете тривиально регистрироваться из сценариев оболочкиили командная строка (через logger)
  • Вам не нужно заново изобретать (как регистрировать) колесо

Единственный недостаток, о котором я могу думать, это то, что syslogне является переносимым (для не * nix систем), но если вы используете какой-либо современный * nix, любая альтернатива является более сложной и, вероятно, менее надежной.

Проблема потери пакетов, поскольку syslog использует UDPможет быть действительным, но на практике в локальной сети я никогда не обнаруживал, что это является проблемой.

0 голосов
/ 14 октября 2011

Не уверен, зачем нужен HTTP, но это, безусловно, добавляет накладные расходы. Не говоря уже о том, что реализация Python может не соответствовать задаче. Я могу порекомендовать syslog, но учтите, что использование UDP для транспорта может привести к потере сообщений, поэтому настоятельно рекомендуется использовать протокол TCP. syslog-ng и rsyslog могут обрабатывать системный журнал TCP. nxlog тоже может, и даже не связан с протоколом системного журнала.

...