Назад | Перейти на главную страницу

Централизация файлов журналов - отправка через TCP или репликация SAN?

У нас есть несколько (20+) серверов приложений, расположенных в нескольких дата-центрах. Нам нужно централизовать файлы журналов и отслеживать их из одного окна.

Требования:

  1. Большие файлы журнала, порядка 5-10 Гб в день для каждого приложения - таким образом, может быть несколько тысяч строк в секунду.
  2. Задержка важна - мы должны иметь возможность реагировать на события журнала в течение нескольких секунд, если это возможно.
  3. Производительность должна быть как можно меньше и должна предсказуемо масштабироваться с размером файла журнала.

Я хотел бы узнать мнение о том, как лучше всего централизовать эти файлы журналов?

Один из подходов, который мы придумали, заключался в использовании Logstash (http://logstash.net/) и Graylog2 (http://graylog2.org/), и отправьте события журнала по сети в модуль мониторинга, либо напрямую TCP, либо через шину, такую ​​как RabbitMQ.

Второй подход - иметь «общий» том SAN, на который все серверы приложений будут записывать свои файлы журналов.

Каковы плюсы / минусы вышеуказанных подходов? Какие предостережения нам следует опасаться? Лучшие практики?

С открытым исходным кодом nxlog вы можете централизовать файлы журналов с хостов Linux и Windows. Он может пересылать по UDP, TCP, SSL, имеет мощные возможности фильтрации, дисковую буферизацию и множество других функций.

Просто настройте централизованный сервер журналов, syslog-ng (или rsyslogd как, кажется, последняя тенденция) и настройте ваши серверные приложения / системный журнал для входа на ваш сервер системного журнала. Этот подход является чистым и апробированным во всем мире.

5-10 ГБ на приложение в день - это неплохо, но не то, что перегрузит ваш syslog-ng. Нет, сэр, это требует больше усилий. Несколько тысяч строк в секунду - это то, что я просматриваю каждый день, а серверы системного журнала в основном простаивают.

Мне лично нравится syslog-ng, потому что он позволяет подключать и играть. Если вы добавите новые серверы, указывающие на ваш сервер системного журнала, syslog-ng автоматически создаст необходимую иерархию каталогов для своих файлов журнала, системный администратор не потребуется.

Я оценивал LogRhythm год назад, и эта услуга была действительно отличной. Посмотрите, они могут гораздо больше, чем просто централизовать ваши журналы. Оповещения, нормализация, отчетность и т. Д.

Взгляните на этот документ из rsyslog:

http://rsyslog.com/doc/rsyslog_reliable_forwarding.html

При такой настройке вы можете пересылать сообщения в удаленный системный журнал (или graylog2-server, поскольку он может прослушивать сообщения системного журнала), и если удаленный сервер не работает, он будет помещать его в очередь локально на диске. У меня были проблемы с пересылкой на graylog2 при высокой нагрузке, если graylog2 или elasticsearch (graylog2 использует его для хранения) не успевают за скоростью сообщений, он поставит их в очередь в памяти, после того как вы заполните всю доступную память, он просто зависнет, пока вы убить его (потеря всех сообщений).