Хотя Graphite весьма неплохо рисует одиночные графики, с созданием дашбордов целиком он справляется так себе. Конечно, можно взять его Render URL API и сделать себе HTML-дашборд самостоятельно. С другой стороны, есть Grafana.
Что такое Grafana
Grafana это пакет для визуализации данных мониторинга. В отличие от Graphite, который и данные хранит, и графики строит, Grafana фокусируется только на визуальной части и дашбордах и у неё это получается очень хорошо.
Людям нужно часто переключаться между графиками за вчера и сегодня? Вот им селектор временных периодов на самом видном месте. Что? Дашборд пойдёт на большой экран напротив кабинета начальства? Вот тогда вам аккуратные шрифты и внятная цветовая гамма. И да, средствами Графаны возле графиков можно поместить краткую инструкцию, зачем они вообще.
Установка
Установка есть для всего, даже для Windows, однако самый простой способ поставить Графану у себя локально — через Docker. docker run -d -p3000:3000 grafana/grafana
запустит её полностью собранной на 3000-м порту.
Правда, без источника данных таращиться на тёмный графановский экран может быть депрессивно, так что, если под рукой нет установленного collectd и Graphite, стоит всё-таки начать с живой демки. Там, конечно, не будет некоторых фич, вроде управления источниками данных, но в остальном всё вполне кликабельно и красиво.
Источники данных
Так как Grafana фокусируется исключительно на UI, ей нужно брать данные откуда-то извне. Из коробки она поддерживает Graphite, InfluxDB, Prometheus и несколько других агрегаторов. Если стандартных не хватает, можно поискать чего-нибудь экзотического среди плагинов.
Если вдруг в одной сети оказалась Grafana и какой-нибудь graphite
хост, или Docker контейнер с Graphite-web на 80-м порту, их запросто можно подружить друг с другом и начать строить дашборды, используя данные из graphite
:
Grafana может подтягивать данные прямо из браузера («direct»), либо использовать свой сервер в качестве «proxy» и пускать запросы через себя. Так как я не верю в браузерные кросс-доменные запросы, то в своей Графане предпочитаю настройку «Access» ставить в «proxy».
Дашборды
Как только появился хоть один источник данных, можно приступать к созданию дашбордов. Дашборд это набор строк, в каждой из которых есть одна или несколько панелей:
Панелей на выбор — как йогуртов в капиталлистическом супермаркете. Есть графики, таблицы, цифровые панели, списки уведомлений, а помощью плагинов и круговые диаграммы, heatmaps и уйма других полезностей. Всё это набрасывается на дашборд через встроенный редактор.
Редактор панелей (клик на заголовок панели, затем «edit») отвечает как за выбор источника данных для них, так и за визуальную составляющую.
Приятные фичи
Кроме приятного внешнего вида у Grafana есть несколько фич, которые делают её графики действительно удобными.
Плейлисты. Можно сделать плейлист из нескольких дашбордов, вывести их на большой экран и пустить по кругу. Вроде мелочь, но некоторые дашборды у нас в офисе, включая мой, действительно переключаются между несколькими слайдами, и когда-то это создавалось руками, с грустью и jQuery.
Выбор временных рамок. Очевидная фича, но не всегда сделана хорошо. А тут есть и ‘zoom out’, чтобы расширить охватываемые временные рамки, и мышь с пальцами, чтобы их сузить, и выпадающий список с разумными значениями («сегодня», «последний час», и т. п.), чтобы выбрать что-то конкретное.
Шаблоны и переменные. С этой штукой можно творить прекрасные вещи. Можно, например, объявить переменную $cpuNumber,
которая будет принимать одно из четырёх значений: 0, 1, 2, 3. Затем, после того как она появилась в виде выпадающего списка над дашбордом, её можно вставить какой-нибудь запрос на данные, вроде collectd.hostname.cpu-$cpuNumber.cpu-user
. Теперь вся страница дашборда может быть переключена с cpu-0
в cpu-1
в два клика. В переменные кроме констант можно класть множество вещей, от временных диапазонов до запросов, и потом переключаться между десятью серверами на одной и той же странице.
Плагины. Если в Grafana чего-то еще нет, то скорее всего это «что-то» уже сделано как плагин. Есть плагины-источники данных, плагины-дашборды, панели — много всего.
Уведомления. Это относительно новая фича. Графана может отправить письмо, сообщение в чат или даже HTTP запрос, когда метрики переходят за определённую границу. Например, как только месячные продажи перешагнули за миллион, Графана может отправить письмо с предложением отойти от дел и переехать на собственный остров.
HTTP API. Тот же самый API, который использует Grafana из браузера, доступен для обычных разработчиков. Можно всё заавтоматизировать до посинения.
Завершение
Grafana — это приятный пакет для визуализации данных мониторинга и постройки дашбордов. Внимание к визуальной составляющей — её самая сильная черта. Правда, в моём случае я не уверен, что переход с Graphite на Grafana изменил бы мою жизнь как-то кардинально к лучшему. Всё-таки график о том, что память почти закончилась, прекрасен вне зависимости от того, какой шрифт на нём использован. Что любопытно, я потратил больше времени, играясь с цветами и внешним видом в Графане, чем создавая точно такие же по функциональности графики в Graphite с нуля.
Но есть стиль для вас имеет значение, или дашборды будет видеть кто-то с деньгами, её вполне можно попробовать.