Grafana это бесплатное решение для визуализации данных. Из коробки она может довольно легко подтянуть данные с логов, баз данных а также приложений.
Если понять основные моменты работы с графаной то визуализировать данные на ней довольно удобно. Графана довольно мощный инструмент и имеет множество возможностей.
Запускаем Grafana в докере.
Используя докер мы можем запустить графану, чтобы это сделать нужно:
Welcome to Grafana.
Через несколько секунд на вашем сервере на 3000 порту будет доступна Grafana. На старте она попросит ввести имя и пароль, введите admin/admin. На первом входе будет необходимо сменить admin пароль. Главная страница будет выглядеть примерно вот так:
Главная страница графаны.
Прежде чем работать с графаной нам нужны данные. Добавляем DataSource.
Один из ключевых моментов - настройка подключения данных. Есть множество вариантов датасурсов (источников данных) а также соответствующего языка запросов. Например наиболее популярными являются:
Prometheus - датасурс для мониторинга метрик с языком PromQL.
Loki - датурс для мониторинга логов с языком LogQL
InfluxDb - датасурс для хранения временных рядов (хотя она не ограничена этим) с языком InfluxQl.
MySQL/PostgreSQL/MSSQL/.. - датасурсы для работы с реляционными базами данных, идет вместе со знакомым многим SQL.
Список датасурсов огромен, ниже я вставлю картинку с опциями.
Только часть доступных datasoure'ов.
Подключаем Postgres DataSource.
Для того чтобы не нагружать читателя и сфокусироваться на построении графиков мы подключим самый простой вариант - Postgres базу данных с относительно популярной схемой - сотрудники.
Схема данных используемая для построения графиков:
Этих данных хватит чтобы построить наиболее популярные графики.
Для старта базы данных с нужными данными нужно:
Создать файл schema.sql и скопировать туда вот эти строки
Создать еще один файл docker-compose.yaml (чтобы не было конфликтов можно создать его в отдельной папке вместе с schema.sql и лучше поменять пароль YOUR_COMPLEX_PASSWORD на что то более серьезное).
Запустить команду docker-compose up -d
Интегрируем нашу запущенную базу данных добавляя Postgres DataSource.
Для добавления базы данных нужно нажать Home => Connections => Data sources и затем нажать Add new data source
После выбора PostgreSQL введите следующие данные как показано ниже (только подставьте IP и пароль который вы выбрали ранее, если ничего не меняли то YOUR_COMPLEX_PASSWORD )
после ввода данных нажмите Save & test
Строим первый график. Подготовка.
Перед построением графика нужно добавить его в Dashboards. Для этого нажимаем слева Dashboards => New (кнопка справа) => New Dashboard => Add visualization и выбираем созданный ранее PostgresSQL датасурс (ну или как вы его назвали)
Готовим данные для графика.
Теперь мы можем использовать данные из базы для их визуализации. После того как датасурс подключен нам нужно отформатировать данные и "подогонать" их под формат нужный для конкретного графика.
На панели снизу нужно еще раз выбрать PostgresSQL и тогда графана предложит конструктор запросов но честно для SQL запросов мне лично удобнее просто писать текстовый запрос. Чтобы сменить конструктор на текст сменитe Builder => Code (справа сверху)
Последнее замечание перед написанием графиков.
В нашем случае мы используем SQL язык для обработки данных и он достаточен прост для подготовки данных. В случае интеграции Prometheus, Loki подготовка во многом требует знания языка запросов PromQL и LogQL и они не так очевидны для новичка (но довольно гибки).
Пишем первый запрос - график текущих зарплат и даты трудоустройства.
Чтобы построить график зарплат сотрудников и дат их трудоустроства нам нужно сделать следующий запрос:
SELECT hire_date, salary FROM employees LIMIT 50
после этого нужно нажать Run Query. Также можно нажать сверху справа на поле ввода графиков и затем на кнопку Suggestions. Тогда графана автоматически предложит возможные варианты графиков:
Думаю для первой части будет достаточно. Во второй части подробнее рассмотрим работу с данными и как именно "подгонять" данные под нужные форматы для графиков.
Кто интересуется айти темой приглашаю в мой телеграм канал, там вы найдете больше информации а также запись стрима где я строю все эти графики (а также использую локи для аналитики логов).
Всем спасибо за внимание, скоро я выложу вторую часть.