Використання Redash аналітичної бази даних реєстру
Сторінка технічної документації є баченням майбутньої реалізації, актуальність якого може бути застарілою. |
Загальний опис
В цьому перехідному дизайні розглядається налаштування Redash таким чином, щоб він використовував вже наявний в реєстрі аналітичний Postgres.
Функціональні сценарії
-
Cтворення та налаштування аналітичних звітів та інформаційних панелей
-
Перегляд та маніпуляція відображенням даних реєстру на інформаційних панелях
-
Перегляд та аналіз даних журналу подій аудиту реєстру на інформаційних панелях
-
Резервне копіювання та відновлення реєстру
Поточна реалізація
Кожен екземпляр сервісу аналітичної звітності реєстру Redash (viewer та admin) створюють собі окремі екземпляри Postgres. Така поточна реалізація
-
Споживає додаткові ресурси віртуальних машин реєстру.
-
Несе додаткові витрати з точки зору операційного обслуговування. Для кожного потрібен моніторинг, оновлення, резервне копіювання тощо.
-
Наразі ні моніторингу, ні резервного копіювання для цих екземплярів postgres немає, а оновлення якщо й проводяться, то зі значним запізненням у порівнянні з реєстром аналітичним екземпляром postgres.
Ознайомитись з поточною реалізацією можна на сторінці Підсистема аналітичної звітності реєстру або Підсистема моделювання регламенту реєстру
Загальні принципи та положення
-
Окремі екземпляри СКБД
redash-admin-postgresql
таredash-viewer-postgresql
під екземпляри Redash не створюються -
Кожний екземпляр Redash використовує свою відповідну базу в аналітичному екземплярі
analytical-instance1-xxxx
Postgres реєстру -
Врахувати що
redash-admin
розгортається тільки коли режим розгортання реєстру є розробницьким (deploymentMode
==development
) -
redash-admin
таredash-viewer
мають окремих користувачів в аналітичному екземплярі СКБД та створюються liquibase скриптом. -
Адаптувати registry-publication-pipeline
Цільовий дизайн
Liquibase скрипти мають бути написані згідно з конвенціями описаних в README.md registry-postgres
. Приклад створення бази
--liquibase formatted sql
--changeset platform:create-redash-viewer-db
CREATE DATABASE redash-viewer with owner=${redashAdminUser};
Скрипти для міграції бази:
#!/bin/bash
admin_pod=redash-admin-postgresql-0
viewer_pod=redash-viewer-postgresql-0
pg_ver=9.6
ctr_name=redash-chart-postgresql
AdminVer=$(oc exec $admin_pod -n $NAMESPACE -c $ctr_name -- bash -c 'cat $PGDATA/PG_VERSION')
ViewerVer=$(oc exec $viewer_pod -n $NAMESPACE -c $ctr_name -- bash -c 'cat $PGDATA/PG_VERSION')
# Admin PostgreSQL DB
if oc -n $NAMESPACE get secret redash-chart-postgresql 2> /dev/null && [ "$AdminVer" = "$pg_ver" ]; then oc exec $admin_pod -n $NAMESPACE -c $ctr_name \
-- bash -c 'export PGPASSWORD=$POSTGRES_PASSWORD; pg_dump -Uredash redash -c -f /bitnami/postgresql/redash96dump.sql && mv /bitnami/postgresql/data /bitnami/postgresql/data96'
fi
# Viewer PostgreSQL DB
if oc -n $NAMESPACE get secret redash-chart-postgresql 2> /dev/null && [ "$ViewerVer" = "$pg_ver" ]; then oc exec $viewer_pod -n $NAMESPACE -c $ctr_name \
-- bash -c 'export PGPASSWORD=$POSTGRES_PASSWORD; pg_dump -Uredash redash -c -f /bitnami/postgresql/redash96dump.sql && mv /bitnami/postgresql/data /bitnami/postgresql/data96'
fi
#!/bin/sh
export PGPASSWORD=$POSTGRES_PASSWORD
if test -f /bitnami/postgresql/redash96dump.sql; then
echo "Load Dump"
psql -Uredash redash -f /bitnami/postgresql/redash96dump.sql
rm -rf /bitnami/postgresql/redash96dump.sql /bitnami/postgresql/data96
else
echo "Dump file not exist, skip and run Postgresql"
fi
Скрипти бекапування та відновлення
В репозиторії backup-management
необхідно оновити скрипти відновлення та резервного копіювання та прибрати звідти старі
екземпляри Postgres для Redash:
....
"statefulset,app=postgresql-admin,postgresql-admin"
"statefulset,app=postgresql-viewer,postgresql-viewer"
....
Компоненти системи та їх призначення в рамках дизайну рішення
У даному розділі наведено перелік компонент системи, які задіяні або потребують змін в рамках реалізації дизайну.
Підсистема | Компонент | Модуль | Опис змін |
---|---|---|---|
Підсистема аналітичної звітності реєстру |
redash-viewer |
Застосування змін конфігурації бази даних: вказання використання зовнішньої бази та URL. |
|
Підсистема моделювання регламенту реєстру |
redash-admin |
||
Підсистема управління даними реєстру |
registry-postgres |
Створення бази |
|
Підсистема резервного копіювання та відновлення |
backup-management |
Оновлення скриптів резервного копіювання та відновлення. |
|
Підсистема управління Платформою та реєстрами |
control-plane-gerrit |
Оновлення Network Policies |
|
Підсистема розгортання регламенту реєстру |
registry-regulations-publications-pipelines |
github:/epam/edp-ddm-registry-regulations-publication-pipeline |
Адаптування пайплайнів cleanup та delete registry та класу Redash. |
Підтримка зворотної сумісності
В екземплярах redash-viewer
і redash-admin
можуть бути присутні особові налаштування користувачів, тому для підтримки працездатності
необхідно провести міграцію бази вже існуючим скриптом при оновленні реєстру.
Високорівневий план розробки
Попередній план розробки
-
Додати функціонал по створенню баз
redash-viewer
іredash-admin
в аналітичному екземплярі registry postgres. -
Додати liquibase функціонал по створенню користувача
redash
в аналітичному екземплярі registry postgres. -
У значеннях
redash-chart
ввімкнути зовнішній postgres та задати відповідну URL бази. -
Оновлення Network Policies.
-
Helm chart Redash підтримує налаштування
externalPostgreSQL
. ВвімкненняexternalPostgreSQL
також вимикає створення окремого екземпляру Postgres для кожного з Redash. -
Перевикористати міграційний скрипт, що був створений для міграції бази даних з Postgres 9.5 на 14, щоб виконати міграцію під час оновлення реєстру.
-
Оновити підхід до резервного копіювання та відновлення реєстру.
-
Оновити відповідні архітектурні діаграми для відображення нової взаємодії.