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

    При достаточно большом парке серверов, с тысячами крутящихся на них сервисов, демонов, скриптов, довольно непросто уследить за многочисленными ошибками внутри. Где-то кончилась память, где-то залип демон, где-то база данных ведет себя неадекватно. Уже не раз обсуждались серверы централизованного хранения логов, хочу рассказать еще об одном удобном и мощном инструменте — 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,
    — багфиксинг, улучшения.

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

    Похожие публикации

    Комментарии 34

      0
      Уберите пожалуйста под кат. Спасибо.
        0
        Простите, что именно убрать, кат у меня есть, без него не дает публиковать.
          +1
          Пролистывал первую страницу и материал на ней был размещен целиком среди других материалов. Сейчас проверил — действительно продолжение под катом. Может какой временный сбой? Прошу прощение если зря побеспокоил.
        +1
        Пролистывал первую страницу и материал на ней был размещен целиком среди других материалов. Сейчас проверил — действительно продолжение под катом. Может какой временный сбой? Прошу прощение если зря побеспокоил.
          0
          Стоит, наверно добавить, что проект бесплатный.
            0
            Спасибо, добавили.
            0
            Использую graylog на нескольких продакшнах — оч. доволен.
              0
              А graylog умеет «кушать» многострочные логи? Т.е. один ивент может состоять и нескольких подряд идущих строк.
                0
                У него совершенно другая идеология, там нет строк.
                  0
                  Ясно, утром буду ставить и смотреть что это за зверь.
                  0
                  Умеет. С помощью GELF. Там по ссылкам есть расширения и коннекторы для нескольких языков.
                    0
                    Спасибо,
                0
                По ключевому слову объединяем поток логов с нескольких хостов, на stream можно повесить алерты и сделать так, чтобы эти алерты приходили кому-нибудь на почту.

                для nagios плагин не писали случайно? или может есть простой путь дергать данные из стрима из-вне?
                  0
                  Считайте, что feature request на API принят. ;)
                    0
                    Спасибо. Буду следить за проектом…
                    0
                    У нас заббикс ))) Можно много способов придумать. Навскидку: парсить письма от грейлога, пересылать дальше в syslog-ng с хитрым конфигом.
                      0
                      можно и из монги напрямую данные вытаскивать. или еще какое-то извращение придумать. но это будет либо костыль, либо жесткая зависимость…

                      хочется максимально прямого решения.

                      кстати, обнаружил update статьи от автора, что монги в ближайшее время не станет… вот и пример из жизни…
                        0
                        а, пардон, с автором статьи и говорю )))
                          0
                          а причина? почему не станет монги и что будет потом?
                            0
                            да останется там MongoDB, просто текст сообщений будет храниться не в ней а в ElasticSearch!
                            неужели долго в первоисточник сходить?
                              0
                              Нет не долго, просто в дороге.
                                0
                                В общем MongoDB останется только для каунтеров, настроек и прочей мелочи, все сообщения перекидывают в ElasticSearch и обещают «huge performance increase» :)

                                По словам автора: «MongoDB is still great for storing the other stuff, but using it for the log messages seems to have been a mistake»
                    –1
                    Насколько я понимаю, graylog — он только для Linux. А есть ли что-нибудь подобное для Windows? Я вот знаю только Datagram SysLog Server, но он не совсем бесплатный.
                      0
                      К сожалению, я совсем не разбираюсь в Windows, как и в продуктах для этой операционки. Меня хватает только на самые простые задачи.
                      Тут java и rails, они, в принципе, кроссплатформенные. Осталось запинать хранилище, оно может и на другой машине крутится ))) Вопрос с производительностью такой связки оставим открытым. Скорее данное решение не будет работать или будет неэффективным.
                        +1
                        В Graylog2 нет ничего платформо-зависимого: сборщик логов написан на Java, веб-интерфейс – на Ruby on Rails, MongoDB и ElasticSearch тоже себя тоже себя отлично чувствуют на Windows. Ну и UDP, по которому летят логи, вполне себе кроссплатформенный.
                          0
                          про удп хорошо сказал! (сори, не удержался)
                          0
                          Есть трансляция сообщений EventLog Windows в сторону *nix по протоколу Syslog. Проверял — работает. Так что можно спокойно поднять Graylog в виртуалке, направить в его сторону логи со своих серверов при помощи этой службы EvtSys, и радоваться. Думаю, так.
                            0
                            Спасибо, любопытная штука. То, что Graylog в виртуалке можно поднять, это понятно, просто хотелось обойтись без этого. По условиям моей задачки полтора десятка Windows компьютеров гонят свои логи в централизованное хранилище в обход встроенного EventLog. Сейчас работает несложная самописная система, которой пользоваться не очень удобно и хочется некоторого легкого, но удобного решения для сбора, просмотра, анализа и хранения информации. С другой стороны из Java/Ruby/ElasticSearch под Windows может получиться довольно тяжеловесная связка. Впрочем надо будет попробовать.
                          +1
                          А вот AMQP функционал у него кто-нибудь пробовал? Мне как раз бы пригодился логгер, кормящийся из AMQP очередей!
                            0
                            Леннарт разрабатывал его для XING'а, они им пользуются.
                            0
                            Ну вот, пока писал статью, разработчик анонсировал…


                            Эта страница стала существенным источником переходов на сайт проекта. По сути, анонс новой версии с отходом от MongoDB – ответ на этот пост. :)
                              0
                              Неожиданно! )) Кстати, Александр Титов (он же где-то у вас работает, если я не ошибаюсь) нам про DevOps много интересного рассказывал. Вот сначала мы поставили chef, теперь и другие продукты ))
                                0
                                немного оффтопик: и как вам эти продукты?
                                  0
                                  Мы решили, что это нам подходит и как мы без этого жили раньше непонятно ))) Разработчики нас поддерживают, им тоже нравится и удобно. В планах на следующий год активное развитие и использование данных технологий.
                                  Вы приезжайте к нам на codefest.ru, у вас интересные доклады, дают пищу для ума ))

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

                            Самое читаемое