Pull to refresh

Приручаем Graylog2 — визуализированный и функциональный сервер лог-файлов

Reading time3 min
Views67K
При достаточно большом парке серверов, с тысячами крутящихся на них сервисов, демонов, скриптов, довольно непросто уследить за многочисленными ошибками внутри. Где-то кончилась память, где-то залип демон, где-то база данных ведет себя неадекватно. Уже не раз обсуждались серверы централизованного хранения логов, хочу рассказать еще об одном удобном и мощном инструменте — Graylog2.


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

Что это такое?

Graylog2 — это бесплатная open source система централизованного сбора, хранения и анализа информации, которая пишется в syslog, graylog2 сделан по концепции DevOps.

image

Состоит Graylog2 из трех компонентов:
— graylog2-webui — web-интерфейс на Rails,
— graylog2-server — Java TCP/UDP лог-коллектор,
— mongodb для хранения собственно логов и настроек всей системы в целом.

Graylog2-server позволяет по TCP/UDP протоколам, как и обычный syslog, принимать отовсюду логи, mongodb осуществляет хранение, rails все красиво отрисовывает.

image

Плюсы и отличительные особенности.

Помимо обычных для syslog-server функций хочется отметить также следующие интересные штуки:
1. Аггрегация сообщений в streams. По ключевому слову объединяем поток логов с нескольких хостов, на stream можно повесить алерты и сделать так, чтобы эти алерты приходили кому-нибудь на почту.

image

2. Аггрегация хостов в группы. Можно объединить потоки с разных хостов в одну группу.

3. Выборки из всего массива по regexp, по времени, по важности, по facility. Можно найти все что угодно и когда угодно.

image

4. Блеклисты для логов. По регекспу можно отфильтровать логи. Все, что мы запретим, в базу не попадет.
5. Авторотация логов. Не нужно заботиться о вычищении старых записей, mongodb сама сделает всю работу с помощью механизма capped collections.
6. Возможность использования GELF — graylog extended log format, таким образом расширяя стандартную длину syslog сообщения в 1024 байта. С помощью GELF можно мониторить не только системные сообщения, но уже и логику работы кода, посылая развернутые сообщения прямо из приложения.
7. Проект бесплатный (GPLv3), активно развивается.

Производительность.

Связка работает в целом стабильно и очень шустро. Я у себя наблюдал, как система обрабатывала до 17000 сообщений в секунду. При этом не были задействованы механизмы масштабирования mongodb, все компоненты у нас крутятся на одной маленькой виртуалке.

Минусы

К сожалению, есть и минусы.
1. mongodb — самый главный минус, простите меня фанаты. Может мы его готовить не умеем, может нагрузка слишком велика. Бывает, что падает, бывает, что отжирает всю память. Версии подходят >2.0, иначе не будут работать выборки по регуляркам.
2. Java тоже довольно требовательна к ресурсам.
3. Не всегда корректно работают выборки по регуляркам, выборки по времени, листание по страницам. Увидеть закономерность довольно сложно, иногда оно работает, иногда нет. Webui надо доделывать.
4. Авторотация — вещь хорошая, но старые сообщения нигде не сохранятся и умирают.

Завязывать на graylog2 критичные данные я не стал. Сыровато все это еще. Поэтому на соседнем порту логи принимает также старый добрый syslog-ng и складывает такие данные дополнительно на диск. Но для мониторинга и анализа общего потока логов — инструмент вполне вменяемый.
Установка тривиальна, качаем бинарники, подготавливаем окружение для rails, ставим последнюю монгу и через 10 минут все работает. Мы не писали пока init скрипты, но обязательно этим займемся.

Ссылки:
страница проекта
GELF, AMQP
DevOps
mongodb

UPD:
Ну вот, пока писал статью, разработчик анонсировал, что будет в следующей версии 0.9.6, до выхода беты которой остались считанные дни.

— mongodb было ошибкой, проект переходит на ElasticSearch в качестве хранилища информации. Что это такое, честно говоря, я еще не знаю )) Обещается просто громадное увеличение производительности,
— изменение логики в аналитике, более быстрая отрисовка графиков, еще увеличение производительности из-за этого,
— переработанная консоль аналитики,
— новые правила для фильтрации, имя файла, строка, тп.,
— группы хостов убрали, посчитав, что этот функционал избыточен и уже присутствует в streams,
— багфиксинг, улучшения.

В целом автор обещает еще больше производительности, больше стабильности, больше удобства, что меня, например, несказанно радует. Если честно, только после написания статьи я наконец-то осознал, что область применения данного инструмента очень и очень широка.
Tags:
Hubs:
+52
Comments34

Articles

Change theme settings