Дашборд Superset для просмотра статуса деплоя сервисов Git

от автора

1       Что было неудобно? И для чего это всё?

Изначально я занимался одним проектом со стороны тестирования в роли старшего тестировщика. У нас микросервисная архитектура — около 15 сервисов хранится в Git. Для тестирования на стенде нужно развернуть примерно 5-7 сервисов за один релиз. Всего стендов два, и после тестирования их же нужно деплоить в продакшн.

 Проблема в том, что у нас практически нет системы мониторинга состояния сервисов. Я не получал автоматической информации о том, что происходит с каждым из них, а расспросы коллег не давали ясных ответов.

 Со временем мне стало важно быстро понимать, какие ветки задеплоены на конкретных стендах для всех сервисов, входящих в релиз. В Git такой возможности прямо из коробки нет — нельзя выбрать сразу список сервисов из разных проектов и посмотреть их окружения в виде таблицы или списка.

 Поэтому мне приходилось делать так: заходить в каждый проект, открывать репозиторий сервиса, искать меню «Operate», затем «Environments» и там уже смотреть нужный стенд. И так — для каждого сервиса при деплое на тестовый стенд, при обновлении в продакшн или во время тестирования. 

 Когда количество проектов увеличилось, а релизов и сервисов стало больше, необходимость быстро получать актуальную информацию о статусе сервисов на стендах стала особенно важной.

2       Как было по умолчанию?

Я знаю большинство сервисов и могу быстро проверить в Git по любому из них установленную ветку. Мы постоянно создаем и обновляем чек-листы для каждого релиза — в них указаны все сервисы, их версии, теги и ветки. За несколько минут я могу пройтись по всем сервисам релиза в Git, сравнить это с чек-листом и убедиться, что на нужном стенде стоит правильная версия.

Со временем к этому привыкаешь, и на выполнение таких проверок уходит всё меньше времени. Однако с ростом количества проектов появляется новая сложность: у каждого проекта есть свой ответственный тестировщик, который должен следить за тем, чтобы все сервисы во время релиза работали корректно.

3       Почему выбрал Superset?

Несмотря на это, периодически хотелось видеть нужный мне срез сервисов на стенде сразу, а не ходить каждый раз по списку в Git. Ранее что-то подобное видел в разных системах мониторинга. Поинтересовался, что есть в наличии у разработки и девопсов. Из доступного и уже используемого ПО в компании был Superset (BI-платформа с открытым исходным кодом, служащая для визуализации данных и аналитики бизнеса — из вики). Ранее не сталкивался, но альтернатив не было. Посмотрел, как можно в нём отображать информацию — строить красивые графики, таблички и т.д. Сформировал требования, отдал в команду BI. 

Пример Дашборда в Superset

Пример Дашборда в Superset

4       Как создавал дашборд в Superset?

Процесс состоял из нескольких этапов:

1) Настроить интеграцию Supeset и БД Git

Сделал через запрос в техподдержку.

2) Написать запрос, который вытаскивает необходимые данные из БД

Получил доступ к тестовой базе данных и изучил, какие таблицы и поля нужны. Попробовал написать собственный запрос, но из-за нехватки знаний столкнулся с трудностями. Тогда обратился за помощью к девопсам. Мы вместе посидели около 40 минут, и в итоге я получил рабочий запрос, который до сих пор немного дорабатываю при необходимости.

3) Вставить запрос в Superset и вывести его в дашборд

Здесь мне помог админ BI. Мы прошли несколько итераций, связанных с особенностями именно Superset и настройкой дашборда. Например, запрос к базе данных выполняется без ошибок, а на дашборде отображается неправильно или выглядит не так, как хотелось бы. В течение недели мы решили эти вопросы.

4) Настроить доступы для пользователей

Также через админа сделали, создали несколько групп, раздали права, я получил доступ на редактирование запроса и к формированию дашборда.

5       Использование дашборда

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

 

Наш дашборд и варианты фильтрации

Наш дашборд и варианты фильтрации

Список могу фильтровать по любому значению любого столбца (настраивается в Superset).

В гите проставляю метки (topics) для фильтрации по проекту.

Конечное использование дашборда вышло за рамки того, что я планировал — иногда смотреть список сервисов на одной из сред.

Сейчас им пользуются в обязательном порядке как тестировщики при деплое на стенды qa, так и релиз-менеджеры и разработчики при деплое на прод. Это происходит в реальном времени, статус меняется сразу, виден весь список сервисов с тегами, средой установки, датой установки, тем, кто задеплоил, и то чем пользуются наиболее часто. При желании можно посмотреть и другие параметры.

В итоге созданный дашборд успешно решил задачи которые я хотел оптимизировать: получение актуальной и наглядной информации о сервисах на всех стендах, экономия времени, возможность вывести информацию по каждому из заданных параметров.

6       Что дальше?

— Периодически вношу изменения в интерфейс — именование столбцов, настройки фильтрации и поиска 

— Добавляю на регулярной основе новые сервисы 

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

— Планирую добавить возможность просмотра сервисов на стенде за выбранную дату, без привязки к конкретному релизу — что-то вроде версионности. Пока выглядит сложно и кажется проще реализовать это через Git. Но для одного сервиса это легко сделать, а для нескольких — удобнее использовать дашборд.

Вот так, шаг за шагом, мы решаем задачи и совершенствуем наши инструменты. Надеюсь, мой опыт был полезен и вдохновит вас на новые идеи. Удачи в ваших проектах!


ссылка на оригинал статьи https://habr.com/ru/articles/930598/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *