Grafana — удобный дашборд для метрик

    Graphana

    Graphana — первый действительно хороший дашборд для отображения метрик.

    Уважаемые коллеги, хочу поделиться с вами такой интересной находкой как open-source проект Graphana

    Graphana предназначена для отображения всевозможных циклических метрик. Помимо предопределенных системных метрик (CPU, IO, etc..), можно сконфигурировать любой набор произвольных метрик — онлайн, профит и т.д. Graphana имеет две встроенных темы оформления — обе выглядят очень хорошо. Можно создать любое количество произвольных дашбордов.

    Демо-версия: play.grafana.org/#/dashboard/file/default.json

    Видео, которое кратко показывает возможности данного ПО: www.youtube.com/watch?v=OUvJamHeMpw

    Ссылка на GitHub: github.com/grafana/grafana

    Данный проект разрабатывает шведский парень по имени Торкель.

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

    Всем хороших показателей на дашбордах.
    Share post

    Similar posts

    Comments 61

      +4
      >>Помимо предопределенных системных метрик (CPU, IO, etc..), можно сконфигурировать любой набок произвольных метрик
      Вообще-то бэкенд у него graphite, какие метрики настроите там, такие и выйдут на графики. Чем понравился — графики можно конфигурировать онлайн, конфиги хранятся в json файлах. Так же есть набор встроенных функций для тайм-серий. Имеется докер контейнер со средой разработки и бэкендом( grafite + whisper), найти можно порывшись в репозиториях автора. Из всех дэшбордов что тестировал — один самых удобных в настройке, так-же имеет очень продаваемый вид из коробки (мне важно ибо фрилансер).
        0
        Все именно так и есть, как Вы написали!
          0
          откуда он умеет брать данные?
            0
            У графаны — graphite, influxdb. У graphite есть очень много потенциальных источников для данных. Еще есть graphite-api который реализует API графита поверх influxdb как хранилища.
              0
              вопрос как-то остался нераскрытым.
              «очень много потенциальных источников для данных» — а конкретнее есть где прочитать?
                0
                Бэкенд графита называется carbon. У него достаточно простой API. В целом, насчет карбона можно почитать, например, тут: graphite.readthedocs.org/en/latest/feeding-carbon.html

                С карбоном интегрируется куча инструментов для сбора метрик. graphite.readthedocs.org/en/latest/tools.html

                Т.е., источником данных для графита может быть действительно все, что угодно. Нужно либо поддерживать API карбона, либо уметь класть метрики во что-то, что само способно класть данные в карбон.
                  0
                  ArjLover а что именно Вас интересует? Задайте вопрос по конкретным показателям, и я постараюсь ответить.

                  1. Есть «стандартные» данныетакие как CPU, IO и так далее
                  2. Есть великое множество инструментов которые работают с Graphite/Graphana: graphite.readthedocs.org/en/1.0/tools.html
                  3. Можно (и нужно) писать свои плагины
                    0
                    Спасибо, так понятно. Куча стандартного и свои плугины — все что может быть нужно для счатья. Действительно полезная тулза получается. Можно соорудить свой командный пункт.
            +1
            А распишите плз его отличия от graphite
              0
              Это надстройка на Graphite. Graphana может все, что может Graphite, только намного красочнее и интерактивнее.
                0
                Есть какие-то различные темы оформления на выбор (чтобы не надо было самому заниматься правками CSS)? Не знаю, почему, но вот не могу работать с темными темами оформления. Всегда выбираю на светлом фоне.
                  0
                  Так у них и светлая тема есть: вот тут даже скриншот есть grafana.org/features/.
                    0
                    Более того, можно динамически менять цвета для графиков. Если выбор предопределенных цветов не нравятся, можно легко добавить свои — продукт с открытым исходным кодом.
              +1
              Очень рекомендую посмотреть DataDog (http://datadoghq.com). Коммерческое решение, стоит $15/месяц за сервер. Бесплатный тарифный план не позволяет хранить исторические данные более суток и создавать alert'ы по приходящим данным.

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

              Можно настроить alert'ы на случаи, когда какие-то показатели выходят за пределы нормы (например, место на диске заканчивается). Alert'ы идеально интегрируются с сервисом PagerDuty, который умеет отправлять SMS/звонить на телефон с учетом расписания работы технического персонала (задается, чья смена и в каком порядке кого необходимо уведомить).

              Да, это не бесплатно. Хотя, можно попробовать и на бесплатном тарифе. Возможно, подойдет для определенных задач. Но ничего лучше в роли dashboard, с чем легко и приятно работать, я не встречал.
                –1
                Пробовали zabbix?
                  +6
                  На мой взгляд у Zabbix огромные проблемы с UI/UX. Удовольствия от работы с ним не испытываешь. По функциональности, конечно, очень гибко, в целом все есть готовое и расширяемое.

                  Я думаю, здесь зависит от того, кто к чему больше привык. Это тоже самое, как есть фанаты iOS и Android с вечными «войнами» в плане интерфейса. ;)
                  0
                  Да, тоже очень интересное решение с достойным интерфейсом.
                    0
                    Приятно выглядит сайт. Вот понять бы ещё, насколько DataDog безопасен для моего сайта. А то знаний bash (https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh) нет, а мониторить свои сайты на VDS-ке хочется.
                    0
                    у нас взлетела kibana (www.elasticsearch.org/overview/kibana/). По возможностям, да и фронт-енду очень похожа на graphana. Что наводит на мыслях о связях между этими дешбордами.
                      +1
                      Так и есть, Graphana насколько я знаю, это fork от Kibana, но уже с дополнительными плюшками.
                        0
                        Рассматривал Kibana в свое время, когда выбирал, что использовать в production. Понравилась система на первый взгляд. Интерфейс удобным и понятным выглядит. Но я искал SaaS в силу ряда причин. Это отдельная тема для обсуждения.Остановил свой выбор все же на другом, а Kibana для себя отметил, что надо будет посмотреть еще раз, когда вернусь к вопросу мониторинга и анализа логов со всех серверов.

                        По вашему опыту Kibana хорошо подойдет для задачи сбора информационных и сообщений об ошибках из логов для их визуального представления с различными фильтрами по ключевым словам и отображению на графиках кол-ва ошибок? И связать это со сторонним сервисом для оповещений, когда какой-то порог превышен. Или что-то требуется найти в логах. Например, все, что относится к такому-то пользователю (если в логе указывается имя пользователя, конечно).
                          +1
                          У нас как раз для сбора и анализа логов используется связка logstash-elasticsearch-kibana. Kibana только визуализирует данные, elasticsearch хранит, logstash — парсит. Logstash хороший парсер логов: много фильтров из коробки плюс возможность создавать свои средствами регулярных выражений или более простых grok выражений. Рекомедую попробовать.
                        –28
                        Дашборд? Фэйсом по тэйблу за такое хочется, икскьюз май френч.

                        Варианты: монитор, панель, консоль…
                          +3
                          Спасибо, но тут и так все в курсе, что значит слово дашборд.
                            –22
                            Если текст на русском языке, то пусть переводит. Потому что читать противно такую мешанину.
                              0
                              Извините конечно, но в русском языке очень много заимствований, и слово «дашборд», скорее всего скоро станет одним из них. Если ввести слово «дашборд» в поисковиках (Google или Yandex) — то они прекрасно понимают о чем идет речь.

                              Более-то, как заметил kovyl большинство из пользователей Хабра знакомо с терминологией, а если Вы не знакомы, то советую запомнить данное слово, т.к. ваши предложения — монитор, панель и консоль не совсем релевантны и могут многих ввести в заблуждение.
                                –12
                                Как же слово dashboard бедных англосаксов в заблужение не вводит? Ведь оно старое и у него немало значений, совсем не связанных с IT.
                                  +9
                                  evocatus, предлагаю прекратить данную дискуссию, т.к. у меня есть подозрение, что Вы занимаетесь троллингом. Я посмотрел ваши 2 поста, там вы себя называете «ламер» ( habrahabr.ru/post/205592/ ), почему-же Вы не использовали исконно русские слова «незнайка», «глупыш», «дурашка» или любое другое по выбору?
                                    +16
                                    На всякий случай, «монитор, панель, консоль» — это точно такие же заимствования, как и дашборд.
                            +2
                            Пробую сейчас гонять grafana для отображения статистических данных, которые у меня складываются в influxdb.

                            Инструмент интересный, но, как начинаешь им пользоваться, то сразу видишь неприятные косяки тут и там :( То график распердоливается на всю строку, хотя ты явно ему указываешь span в половину экрана, то данные отказывается отображать без видимых причин, то ещё что-то… Что печально, не совсем понятно, как отлаживать его косяки (логов нет, js обфусцированный).

                            Было бы хорошо, если бы кто-то более опытный в работе с Grafana рассказал, как со всем этим жить.
                              –1
                              zloddey судя по нашему опыту — отлаживать ничего не надо. На установку и конфигурацию потратили меньше 1 часа. JS сжат для скорости загрузки, если нужен не сжатый — в посте есть ссылка на репозиторий в котором исходники.
                                +1
                                А вот слово «распердоливается» Гугл с Яндексом знают намного хуже «дашборда». А ведь частота использования в профессиональном сленге гораздо выше…
                                –1
                                >первый действительно хороший дашборд для отображения метрик!
                                Он не умеет показывать realtime метрики, только с шагом в 1 минуту.
                                Он не умеет сохранять дашбоарды на сервер (т.е приходится делать дашбоард, сохранять его к себе, только потом заливать конфиг на сервер).
                                Но да, он красивый.
                                  0
                                  > Он не умеет показывать realtime метрики, только с шагом в 1 минуту.

                                  Период авто-обновления настраивается.

                                  > Он не умеет сохранять дашбоарды на сервер

                                  Все дашборды графита, которые я видел, сохраняют настройки на сервере. Удивлюсь, если здесь иначе. Вероятно это ограничение демки.
                                    –1
                                    Нет, grafana действительно не умеет — чисто client-side приложение, никаких серверных скриптов нет, в общем случае сохранить на сервере некому.
                                    There are no dependencies, Grafana is a client side application that runs in your browser. It only needs a time series store where it can fetch metrics.

                                    На graphite оно лазает только за данными «ну что тут нам нарисовать?».
                                    Однако не всё так однозначно. Если в качестве источника данных используется influxedb, то без проблем.
                                    If you use InfluxDB Grafana can use it to store dashboards.

                                    В случае графита, впрочем, тоже можно, но начинаются песни, пляски, чад, угар и содомия
                                    If you use Graphite or OpenTSDB you can use Elasticsearch to store dashboards ...

                                    Заиметь на сервере java и elastic только для того, чтобы хранить дашборды — сомнительное удовольствие :) Поэтому и возвращается всё к первоначальному
                                    … or just use json files stored on disk.
                                      0
                                      Позвольте узнать: Для чего Вы считаете необходимо показывать real-time метрики?
                                        0
                                        Если я шлю в карбон каждую секунду метрику, то мне хочется смотреть как точки добавляются каждую секунду.
                                          0
                                          То что хочется каждую секунде смотреть — это я понял. Но практический смысл какой в этом?
                                        0
                                        >Период авто-обновления настраивается.
                                        Да, графана действительно запрашивает у графита каждую секунду данные, но не прорисовывает их в реальном времени.
                                        Если обновлять каждую секунду и смотреть на минутный график, то график обновится только на следующей минуте.
                                      0
                                      Парня зовут не Торкен а Торкель
                                        0
                                        Спасибо, исправил
                                        0
                                        Кто-нибудь из тех, кто активно работает с графитом, сталкивался с проблемой — долгое время отрисовки, если на графике отображается большое число серий(от сотни)
                                          0
                                          вероятнее всего производительность упирается в дисковую систему
                                            0
                                            graphite.readthedocs.org/en/latest/render_api.html#maxdatapoints поглядите сюда
                                            графана тоже активно использует эту штуку в последних релизах — grafana.org/docs/performance/
                                              0
                                              производительность упирается не в дисковую подсистему, проблем там несколько.

                                              во-первых, для метрик типа x.* графитовский webapp, развернув звёздочку, начинает последовательно запрашивать полученные серии с серверов в кластере. Если под звёздочкой кроется много чего, то этот последовательный опрос будет длиться довольно долго. С этим попробовал бороться переписав кусок графитовского сборщика данных так, что-бы он собирал всё параллельно. Это помогло снизить время сбора в моём случае в разы, но всё-равно было долго потому что по окончании этой параллельной сборки генерился довольно обьемный ответ.

                                              Радикально решил проблему собирая локальную копию тех данных, для которых под звёздочкой кроется много метрик, и читаю эти данные через библиотеку whisper.

                                              Еще некоторая часть тормозов возникает при отрисовке большого числа линий через matplotlib.
                                            +1
                                            отличительная особенность Grafana — ето scripted dashboards.
                                            Вот вам пример использования с картинками.
                                              0
                                              Неплохая подборка дашбордов для Graphite на stackoverflow.

                                              А еще у grafana есть минус т.к. она требует elasticsearch для работы. И все это добро вместе c graphite и statsd еле-еле влезает в micro instance на AWS.
                                                0
                                                elasticsearch — опционально, для сохранения дашбордов. Насчет AWS — ничего сказать не могу (я с подозрением отношусь к виртуалкам).
                                                  +1
                                                  Я сильно подозреваю, что это связано с очень тормозным стораджем на микро-инстансе (мы уже тоже наталкивались на такое). Попробуйте минимальный дроплет на том же DO — и дешевле и быстрее.
                                                    0
                                                    Еще можно попробовать выкинуть из схемы graphite вместе с джангой, заменив на influxdb, к которой и прицепить statsd.
                                                    +1
                                                    Можно хранить дыщборды в файловой системе, тогда elasticsearch не обязателен. Конечно, это не так гибко и удобно, но ресурсы экономит (а также снижает общую сложность системы). Более того, можно положить их в какой-нибудь git, и получить красивое версионирование & деплой обновлённых дыщбордов на сервер.
                                                    0
                                                    Подскажите, его на MYSQL натравить можно?
                                                      0
                                                      С какой целью натравить? Собирать метрики с MySQL или складывать их туда?
                                                        0
                                                        К примеру, есть база MySql с таблицей, время/значение температуры и еще несколько похожих таблиц.
                                                        Хочу графиков красивых на инклудить в страницы…
                                                          0
                                                          Данные которые вы пишете в таблицу, можно экспортировать в Graphite, потом отобразить это в Graphana и получившийся график использовать по назначению.
                                                            0
                                                            Спасибо, буду дальше давиться pChart-ом
                                                        0
                                                        Графит это хранилище и визуализатор для метрик. Чем вы туда будете поставлять метрики не важно. Есть тысячи способов посылать их туда.
                                                        Для mysql сгодится github.com/BrightcoveOS/Diamond
                                                        Остальное можно поглядеть тут graphite.readthedocs.org/en/latest/tools.html
                                                          0
                                                          Сорри за дубль,
                                                          К примеру, есть база MySql с таблицей, время/значение температуры и еще несколько похожих таблиц.
                                                          Хочу графиков красивых на инклудить в страницы…
                                                            0
                                                            Графана это дашборд для графита.
                                                            Вам же нужно просто нарисовать картинки из готовых данных. Для этого сойдет какой-нибудь d3.js
                                                            Не знаю есть ли целесообразность перекладывать ваши данные из mysql в графит, только ради того чтобы нарисовать их этой штукой.
                                                              0
                                                              Не-не, спасибо, я как-нибудь pChart-ом продолжу пользоваться.
                                                                0
                                                                За d3.js спасибо.

                                                        Only users with full accounts can post comments. Log in, please.