Grafana — популярное приложение для мониторинга и визуализации данных, которое широко используется облачными провайдерами для мониторинга различных компонентов облачной инфраструктуры, таких как виртуальные машины, контейнеры, базы данных, сети. Grafana позволяет отслеживать производительность и использование ресурсов в режиме реального времени.
В этом году приложению исполняется десять лет, инструмент по-прежнему востребован в России. Поэтому мы решили поговорить об истории Grafana, а также обсудить роль этого открытого решения в развитии open source сообщества в целом.
История происхождения
Системы для мониторинга, анализа и визуализации данных существуют давно, однако настройка дашбордов в них всегда вызывала головную боль. Часто интерфейс был перегружен, а кнопки на панелях формировали визуальный шум.
Инженера Торкеля Одегаарда, который в начале 2010-х работал в компании Orbitz, развивающей агрегатор для поиска отелей и авиабилетов, не устраивал статус кво. В 2013 году он решил исправить ситуацию и построить собственную систему визуализации данных. В основу системы был положен принцип — Don’t Get in the Way of the Data («Не стой на пути данных»). Позже эта фраза стала чем-то вроде девиза компании Grafana Labs. Ее печатали на плакатах, висевших в офисе.
Grafana v1
Первая версия инструмента была во многом похожа на аналоги, однако настройка дашбордов производилась из единой панели управления, а пользователь мог сразу видеть получившиеся графики и диаграммы.
Также разработчик упростил построение запросов. У других систем под эту задачу было выделено маленькое текстовое окно, а в Grafana появился удобный конструктор. Позже Торкель отмечал, что новое представление языка запросов — одна из причин, почему его система визуализации данных стала такой популярной.
От open source к Open SaaS
После запуска Grafana Торкель задумался о монетизации проекта. Изначально он хотел просто предложить пользователям продвинутую функциональность, за которую будет смысл заплатить. Но его планы по коммерциализации изменились, когда в 2014 году он познакомился с Раджем Даттом и Энтони Вудсом. Они хотели основать стартап и заняться разработкой коммерческого ПО для мониторинга.
В поисках кодовой базы для своего продукта Датт и Вудс рассматривали различные open source проекты и вышли на Grafana. Инструмент впечатлил их, поэтому они втроем договорились о сотрудничестве. Таким образом была создана компания Grafana Labs с Даттом на посту генерального директора.
В вопросе монетизации Grafana сооснователи сделали выбор в пользу концепции Open SaaS — когда приложение с открытым исходным кодом можно использовать как сервис. Первой реализацией этой идеи стала платформа Grafana Enterprise, запущенная в 2016 году. Она предлагала специальные возможности для корпораций — в частности, новый уровень enterprise-поддержки, повышенную безопасность и доступ к премиальным плагинам.
Развитие
В 2015 году вышла вторая версия Grafana. В нее добавили бэкенд на Go, позволяющий сохранять дашборды без Elasticsearch. В то же время все больше компаний и стартапов начали использовать инструмент для решения своих внутренних задач, и дашборды Grafana стали невероятно узнаваемыми. В 2016 году их можно было заметить на одном из экранов в компании SpaceX во время запуска ракеты Falcon 9. Grafana также использовала Microsoft на презентации своего подводного дата-центра.
В 2016 ознаменовал выход третьей версии Grafana c системой плагинов. Она позволила подключать к Grafana различные источники данных: от традиционных MySQL и MongoDB до серверов Linux и домашних термометров.
В короткие сроки штат Grafana Labs разросся с трех сооснователей до 88 сотрудников, работающих из 19 разных стран. Ну а в 2019 году система визуализации перешагнула отметку в 400 тыс. активных инстансов. И с тех пор их количество только возросло.
Вклад сообщества
Главной возможностью поучаствовать в развитии утилиты стала разработка плагинов — их запустили в 2016 году. Некоторые члены open source сообщества внесли особо заметный вклад в экосистему плагинов, например, Уткарш Бхатнагар. Он начинал с небольших коммитов, но в итоге обеспечил поддержку OpenTSDB — базы данных временных рядов, для работы с которыми и предназначалась Grafana.
Интересно, что Grafana применяют как компонент для построения дашбордов в некоторых открытых системах мониторинга вроде Prometheus. Она также поддерживает импорт данных из многих других open source решений, например, Zabbix, в которых есть свои средства визуализации.
Сейчас сообщество на GitHub насчитывает более 2 тыс. контрибьюторов. Такой размер и вовлеченность комьюнити обосновывают тем, что Торкель и другие разработчики оперативно давали обратную связь всем участникам, разбирали pull-реквесты и исправляли баги. Благодаря высокому уровню активности разработчиков многие чувствовали себя частью большой команды, которая делает полезный и нужный проект.
Настоящее и будущее
С 2019 по 2022 год вышли три open source инструмента, интегрированных с Grafana: система агрегирования логов Loki, система трассировки Tempo и Mimir, который предназначен для долговременного хранения метрик мониторинга в формате временных рядов.
В 2021 году всем этим инструментам, в том числе Grafana, сменили лицензию с Apache 2.0 на AGPL 3.0. По ее условиям модификации ПО можно распространять только по этой же лицензии. Этот пункт защищает от злоупотреблений, когда на основе открытой кодовой базы компания выпускает проприетарное решение и не делится наработками с сообществом. По мнению команды Grafana Labs, такое лицензирование учитывает интересы комьюнити, при этом помогает выдерживать конкуренцию.
Однако у некоторых разработчиков возникли сомнения насчет перехода на AGPL 3.0. Поскольку это copyleft-лицензия, многие проекты с разрешительными лицензиями вроде Apache 2.0 не смогут включать в себя большую часть кода Grafana, Tempo или Loki.
Аналоги Grafana
История Grafana плотно связана с такими распространенными инструментами визуализации данных, как Kibana и Graphite. Они были (и до сих пор остаются) важной частью технологических стеков тысяч организаций.
В 2021 году компания Elastic сменила для Kibana лицензию на SSPL (Server Side Public License). В ответ на это решение было запущено ответвление Elasticsearch и Kibana – новая поисковая система OpenSearch. Инструмент построен на движке Apache Lucene. Работа с данными организована так же, как и в Elasticsearch: они хранятся в виде JSON-файлов, к которым добавляются метаданные. Сами файлы лежат в индексах.
Профильная панель визуализации данных называется OpenSearch Dashboards. Разработчики инструмента стремятся поддерживать паритет функциональных возможностей с Kibana, активно внедряя соответствующую функциональность. Хотя некоторые участники комьюнити отмечают, что в ряде областей — например, в сфере observability — OpenSearch все же отстает от своего прародителя.