12. Дополнительная информация

12.1. Настройка параметров в файле конфигурации

При запуске Datamart Platform Studio параметры конфигурации программы считываются из файла переменных окружения .env. Пример файла с пояснением значений параметров:

# версия студии
STUDIO_VERSION="dev"

# Настройка адресов хранилищ для обновления
DOCKER_REGISTRY=nexus.datamart.ru/dms - адрес для обновления докер-контейнеров Студии,  используется для проверки наличия обновлений контейнеров
GLOBAL_VALUES='{"nexus":"http://127.0.0.1:8881", "nexus_registry":"127.0.0.1:8882"}' - назначаются глобальные настройки по умолчанию

# настройки подключения Datamart Studio к Gitea
GITEA_HOST=http://gitea - может меняться для дочерних студии при обновлении из Мастера
GITEA_PORT=3000

# настройки не требуют изменения
RAILS_ENV=production
RAILS_SERVE_STATIC_FILES=true
RAILS_MAX_THREADS=10
RAILS_SECRET_KEY_BASE=*****
RAILS_MASTER_KEY=*****
RAILS_LOG_TO_STDOUT=''
RAILS_LOG_LEVEL=error # debug|info|warn|error|fatal|unknown - уровень логирования |prod| можно изменить в переменных окружения, если это требуется службе поддержки
APP_HOST=app
APP_PORT=5000

# настройки подключения Datamart Studio к Postgres
DB_HOST=db - хост postgresql для студии (не трогать, если используется потгрес студии)
DB_PORT=5432 - порт postgresql для студии (не трогать, если используется потгрес студии)
DB_PORT_EXPOSED=55432 - порт postgresql студии, который отдается наружу из докера (при отдельном postgresql не используется)
DB_USER=postgres - юзер postgresql
DB_PASSWORD=***** - пароль postgresql
DB_NAME=datamart_ - префикс схемы студии в postgresql (лучше не трогать)
# NOTE: имя БД в Postgres формируется, как DB_NAME || RAILS_ENV. В текущем примере конфигурации имя БД Студии в Postgres = "datamart_production"


# настройки подключения Datamart Studio к Redis (не требуется менять, если используется редис студии)
REDIS_HOST=redis - хост редис для студии
REDIS_PORT=6379 - порт редис для студии
REDIS_PASSWORD=**** - пароль по умолчанию для подключения к Redis студии.
REDIS_URL=redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/1 - url для подключения к Redis студии

# настройки подключения к ActiveDirectory(LDAP) используются при авторизации по LDAP
AD_HOST=10.128.0.33
AD_PORT=389
AD_ATTRIBUTE=sAMAccountName - атрибут по которому выполняется поиск пользователей в LDAP
AD_BASE=OU=Users_datamart,DC=datamart,DC=ru - по какой группе выполняется поиск пользователей в LDAP
AD_ADMIN_USER=CN=datamart_studio_services,CN=Users,DC=datamart,DC=ru - пользователь с правами админа для подключения к LDAP
AD_ADMIN_PASS=*****
AD_SSL=false - использование ssl при подключении


# настройки папок не требуют изменения
DATAMART_VOL=./
DMS_DIRS=./dms-dirs - директория, в которой располагаются все dms-* директории (очень желательно не трогать)
POSTGRES_VOL=./volumes/postgres вольюм постгрес студии
NEXUS_VOL=./volumes/nexus - вольюм нексус студии
GITEA_VOL=./volumes/gitea - вольюм гити студии
STORAGE_VOL=/opt - не трогать

# настройки резервного копирования
BACKUP_DIR=./backup - директория для сохранения и чтения бэкапов студии


# информация о владельце данной версии ПО
STUDIO_OWNER="ООО «Датамарт»" - владелец студии
STUDIO_OWNER_NAME=datamart - техническое наименование владельца студии

#
STUDIO_SEED_DEMO=no - не трогать
STUDIO_SEED_REPOSITORY=yes - не трогать

# создание пользователя при первом запуске
STUDIO_SEED_USER=no - (устанавливать в "yes" только если AUTH=DB)
STUDIO_SEED_USER_FIRST_NAME=Администратор - имя первоначального пользователя
STUDIO_SEED_USER_LAST_NAME=Датамарт - фамилия ...
STUDIO_SEED_USER_EMAIL=datamart@datamart.ru -  ...
STUDIO_SEED_USER_USERNAME=datamart - логин
STUDIO_SEED_USER_PASSWORD=*****

# создание организации по умолчанию при первом запуске
STUDIO_SEED_ORGANIZATION_NAME="" - имя организации, которая создается при первом запуске
STUDIO_SEED_ORGANIZATION_TITLE="" - тех наименование (идентификатор)
STUDIO_SEED_ORGANIZATION_OGRN="" - ОГРН (требуется для привязки прав пользователей на организацию)

# метод авторизации в данной версии ПО
AUTH=AD - метод авторизации моджет иметь значения: DB/AD/IAM

# пользователь по умолчанию для запуска ансибл плейбуков
ANSIBLE_USER=root -

# данные настройки не используется в проде
SENTRY_URL='' - не трогать (не используется)
SEED_DM_MNEMONIC=base
SEED_DM_TITLE="Базовая витрина данных"
SEED_DM_DESCRIPTION="Базовая витрина данных"
SEED_DM_STATUS=serving

# настройки взаимодействия с watchtower api
WATCHTOWER_HTTP_API_TOKEN="*****" - токен для взаимодействия с watchtower api (менять нет необходимости)
WATCHTOWER_HOST=watchtower - не трогать
WATCHTOWER_PORT=8080 - не трогать

# Формат сохранения логов
LOG_FORMATTER=default - формат логов обычный или для ГосТеха (default || gostech)
LOG_FORMATTER_BACKTRACE_LENGTH=7

# настройки экспорта метрик мониторинга в формате PROMETHEUS
PROMETHEUS_EXPORTER_HOST=0.0.0.0 - не трогать
PROMETHEUS_EXPORTER_PORT=9394 - не трогать
# cpu and memory usage data update interval
PROMETHEUS_DATA_UPDATE_INTERVAL=2 - интервал (сек.) обновления метрик для PROMETHEUS

# настройки параметров отправки событий аудита
SEND_AUDIT_EVENTS=false - отправлять или нет (true/false)
AUDIT_SERVICE_HOST=http://example.com/audit - адрес хост аудита (URL)
AUDIT_SERVICE_EVENT_ENDPOINT=v2/event - эндпоинт event аудита
AUDIT_SERVICE_METAMODEL_ENDPOINT=v2/metamodel - эндпоинт метамодели аудита
# path to cert inside app container
AUDIT_SERVICE_CERT=${STORAGE_VOL}/mtls.pem - файл сертификата для подключения к сервису аудита (если значение не установлено, то сертификат при подключении к сервису аудита не используется)


# настройки параметров отправки логов
LOGSTASH_HOST=logstash.example.com - хост для отправки логов
LOGSTASH_PORT=5045
LOGSTASH_TLS=On - tls или без (On/Off)
NODE_ID=$(hostname) - не трогать

# настройки параметров подключения к сервису авторизации IAM
KEYCLOAK_CLIENT_NAME=studio - имя приложения в IAM
KEYCLOAK_CLIENT_SITE=https://kc.datamart.ru - адрес IAM
KEYCLOAK_CLIENT_REALM=studio-dev - Realm в IAM
KEYCLOAK_CLIENT_BASE_URL='' - путь в url после KEYCLOAK_CLIENT_SITE

# Настройка количества зарезервированных Resque Workers для Студии
RESQUE_QUEUE_POOL_SIZE=0 - пул рескью воркеров (0 - значение по умолчанию, в текущей версии Студии поднимает 1 очередь.)

# ссылка на документацию в интерфейсе ПО.
STUDIO_DOCS_URL="" - Если не указано, по умолчанию будет https://docs-studio.datamart.ru/

12.2. Содержание токена IAM

При подключении медода авторизации IAM, Datamart Platform Studio получает токен, содержание которого используется для аутентификации пользователя, назначения ему роли и предоставления прав доступа к компонентам организации внутри Datamart Platform Studio.

Пример содержимого токена:

{
  "exp": 1689607285,
  "iat": 1689603685,
  "jti": "c0b5ad2b-387a-4c2c-a051-b6a913be61cb",
  "iss": "https://kc.datamart.ru/realms/studio-dev",
  "sub": "1567dab7-7590-4c4f-b5ca-f32ad95558cc",
  "typ": "Bearer",
  "azp": "studio",
  "session_state": "6bd1da30-0ccd-4059-952f-784bb30e5c7d",
  "acr": "1",
  "realm_access": {
    "roles": [
      "superadmin",
      "admin"
    ]
  },
  "scope": "openid email",
  "sid": "6bd1da30-0ccd-4059-952f-784bb30e5c7d",
  "upn": "admin",
  "email_verified": true,
  "address": {},
  "name": "admin admin",
  "groups": [
    "superadmin",
    "admin"
  ],
  "preferred_username": "admin",
  "given_name": "admin",
  "organization_ogrn": [
    "1111",
    "2222"
  ],
  "family_name": "admin",
  "email": "admin@admin.admin"
}

, где:

preferred_username - имя авторизованного пользователя;

email - email авторизованного пользователя;

roles - роли, назначенные авторизованному пользователю (передается массив, т.к. одному пользователю может быть назначено несколько ролей);

organization_ogrn - массив с ОГРН организаций, компоненты которых будут доступны пользователю. При этом, для пользователя с ролью superadmin будут доступны все компоненты без ограничений.

12.3. Состав метрик мониторинга

Метрики мониторинга Datamart Platform Studio собираются по адресу http://<адрес сервера Datamart Studio>:8089/metrics/

Настройка интервала сбора метрик мониторинга задается в параметре PROMETHEUS_DATA_UPDATE_INTERVAL в конфигурационном файле. По умолчанию 2 сек.

Состав собираемых метрик следующий:

# HELP collector_working Is the master process collector able to collect metrics
# TYPE collector_working gauge
collector_working 1


# HELP collector_rss total memory used by collector process
# TYPE collector_rss gauge
collector_rss 251285504


# HELP collector_metrics_total Total metrics processed by exporter web.
# TYPE collector_metrics_total counter
collector_metrics_total 0


# HELP collector_sessions_total Total send_metric sessions processed by exporter web.
# TYPE collector_sessions_total counter
collector_sessions_total 0


# HELP collector_bad_metrics_total Total mis-handled metrics by collector.
# TYPE collector_bad_metrics_total counter
collector_bad_metrics_total 0

# HELP http_requests_total Total HTTP requests from web app.
# TYPE http_requests_total counter
http_requests_total{action="other",controller="other",status="-1"} 50
http_requests_total{action="other",controller="other",status="404"} 6
http_requests_total{action="other",controller="other",status="200"} 268
http_requests_total{action="show",controller="installations",status="200"} 8
http_requests_total{action="other",controller="other",status="304"} 121
http_requests_total{action="tab",controller="installations",status="200"} 2
http_requests_total{action="new",controller="installations/live_logs",status="200"} 3
http_requests_total{action="create",controller="installations/live_logs",status="200"} 3
http_requests_total{action="destroy",controller="installations/live_logs",status="200"} 3
http_requests_total{action="dashboard",controller="datamart",status="200"} 4
http_requests_total{action="index",controller="datamarts",status="200"} 2
http_requests_total{action="show",controller="organizations",status="200"} 1
http_requests_total{action="available_actions",controller="organizations",status="200"} 1
http_requests_total{action="resources",controller="organizations",status="200"} 2
http_requests_total{action="create",controller="studio_configurations/updates",status="204"} 1

# HELP http_request_duration_seconds Time spent in HTTP reqs in seconds.
# TYPE http_request_duration_seconds summary
http_request_duration_seconds{action="other",controller="other",quantile="0.99"} 0.0019614920020103455
http_request_duration_seconds{action="other",controller="other",quantile="0.9"} 0.0019614920020103455
http_request_duration_seconds{action="other",controller="other",quantile="0.5"} 0.0019614920020103455
http_request_duration_seconds{action="other",controller="other",quantile="0.1"} 0.0019614920020103455
http_request_duration_seconds{action="other",controller="other",quantile="0.01"} 0.0019614920020103455
http_request_duration_seconds_sum{action="other",controller="other"} 1.3575201407074928
http_request_duration_seconds_count{action="other",controller="other"} 445
http_request_duration_seconds_sum{action="show",controller="installations"} 2.5403705686330795
http_request_duration_seconds_count{action="show",controller="installations"} 8
http_request_duration_seconds_sum{action="tab",controller="installations"} 0.3344039097428322
http_request_duration_seconds_count{action="tab",controller="installations"} 2
http_request_duration_seconds_sum{action="new",controller="installations/live_logs"} 0.5146652460098267
http_request_duration_seconds_count{action="new",controller="installations/live_logs"} 3
http_request_duration_seconds_sum{action="create",controller="installations/live_logs"} 0.06433052569627762
http_request_duration_seconds_count{action="create",controller="installations/live_logs"} 3
http_request_duration_seconds_sum{action="destroy",controller="installations/live_logs"} 0.08614633977413177
http_request_duration_seconds_count{action="destroy",controller="installations/live_logs"} 3
http_request_duration_seconds{action="dashboard",controller="datamart",quantile="0.99"} 0.12403355538845062
http_request_duration_seconds{action="dashboard",controller="datamart",quantile="0.9"} 0.12403355538845062
http_request_duration_seconds{action="dashboard",controller="datamart",quantile="0.5"} 0.12403355538845062
http_request_duration_seconds{action="dashboard",controller="datamart",quantile="0.1"} 0.12403355538845062
http_request_duration_seconds{action="dashboard",controller="datamart",quantile="0.01"} 0.12403355538845062
http_request_duration_seconds_sum{action="dashboard",controller="datamart"} 3.710968255996704
http_request_duration_seconds_count{action="dashboard",controller="datamart"} 4
http_request_duration_seconds_sum{action="index",controller="datamarts"} 3.430244617164135
http_request_duration_seconds_count{action="index",controller="datamarts"} 2
http_request_duration_seconds_sum{action="show",controller="organizations"} 0.2341424524784088
http_request_duration_seconds_count{action="show",controller="organizations"} 1
http_request_duration_seconds_sum{action="available_actions",controller="organizations"} 0.026224397122859955
http_request_duration_seconds_count{action="available_actions",controller="organizations"} 1
http_request_duration_seconds_sum{action="resources",controller="organizations"} 1.199452392756939
http_request_duration_seconds_count{action="resources",controller="organizations"} 2
http_request_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.99"} 0.019537821412086487
http_request_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.9"} 0.019537821412086487
http_request_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.5"} 0.019537821412086487
http_request_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.1"} 0.019537821412086487
http_request_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.01"} 0.019537821412086487
http_request_duration_seconds_sum{action="create",controller="studio_configurations/updates"} 0.019537821412086487
http_request_duration_seconds_count{action="create",controller="studio_configurations/updates"} 1

# HELP http_request_redis_duration_seconds Time spent in HTTP reqs in Redis, in seconds.
# TYPE http_request_redis_duration_seconds summary
http_request_redis_duration_seconds_sum{action="other",controller="other"} 0.009621337056159973
http_request_redis_duration_seconds_count{action="other",controller="other"} 6
http_request_redis_duration_seconds_sum{action="show",controller="installations"} 0.012585863471031189
http_request_redis_duration_seconds_count{action="show",controller="installations"} 8
http_request_redis_duration_seconds_sum{action="tab",controller="installations"} 0.0033137649297714233
http_request_redis_duration_seconds_count{action="tab",controller="installations"} 2
http_request_redis_duration_seconds_sum{action="new",controller="installations/live_logs"} 0.004552192986011505
http_request_redis_duration_seconds_count{action="new",controller="installations/live_logs"} 3
http_request_redis_duration_seconds_sum{action="create",controller="installations/live_logs"} 0.001010611653327942
http_request_redis_duration_seconds_count{action="create",controller="installations/live_logs"} 3
http_request_redis_duration_seconds{action="dashboard",controller="datamart",quantile="0.99"} 0.0017080903053283691
http_request_redis_duration_seconds{action="dashboard",controller="datamart",quantile="0.9"} 0.0017080903053283691
http_request_redis_duration_seconds{action="dashboard",controller="datamart",quantile="0.5"} 0.0017080903053283691
http_request_redis_duration_seconds{action="dashboard",controller="datamart",quantile="0.1"} 0.0017080903053283691
http_request_redis_duration_seconds{action="dashboard",controller="datamart",quantile="0.01"} 0.0017080903053283691
http_request_redis_duration_seconds_sum{action="dashboard",controller="datamart"} 0.008207693696022034
http_request_redis_duration_seconds_count{action="dashboard",controller="datamart"} 4
http_request_redis_duration_seconds_sum{action="index",controller="datamarts"} 0.0016184374690055847
http_request_redis_duration_seconds_count{action="index",controller="datamarts"} 1
http_request_redis_duration_seconds_sum{action="show",controller="organizations"} 0.0014959275722503662
http_request_redis_duration_seconds_count{action="show",controller="organizations"} 1
http_request_redis_duration_seconds_sum{action="resources",controller="organizations"} 0.00341237336397171
http_request_redis_duration_seconds_count{action="resources",controller="organizations"} 2
http_request_redis_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.99"} 0.002705104649066925
http_request_redis_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.9"} 0.002705104649066925
http_request_redis_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.5"} 0.002705104649066925
http_request_redis_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.1"} 0.002705104649066925
http_request_redis_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.01"} 0.002705104649066925
http_request_redis_duration_seconds_sum{action="create",controller="studio_configurations/updates"} 0.002705104649066925
http_request_redis_duration_seconds_count{action="create",controller="studio_configurations/updates"} 1

# HELP http_request_sql_duration_seconds Time spent in HTTP reqs in SQL in seconds.
# TYPE http_request_sql_duration_seconds summary
http_request_sql_duration_seconds_sum{action="other",controller="other"} 0.06140446662902832
http_request_sql_duration_seconds_count{action="other",controller="other"} 6
http_request_sql_duration_seconds_sum{action="show",controller="installations"} 0.048522837460041046
http_request_sql_duration_seconds_count{action="show",controller="installations"} 8
http_request_sql_duration_seconds_sum{action="tab",controller="installations"} 0.004923224449157715
http_request_sql_duration_seconds_count{action="tab",controller="installations"} 2
http_request_sql_duration_seconds_sum{action="new",controller="installations/live_logs"} 0.007257640361785889
http_request_sql_duration_seconds_count{action="new",controller="installations/live_logs"} 3
http_request_sql_duration_seconds_sum{action="create",controller="installations/live_logs"} 0.000997498631477356
http_request_sql_duration_seconds_count{action="create",controller="installations/live_logs"} 3
http_request_sql_duration_seconds_sum{action="destroy",controller="installations/live_logs"} 0.0009742006659507751
http_request_sql_duration_seconds_count{action="destroy",controller="installations/live_logs"} 3
http_request_sql_duration_seconds{action="dashboard",controller="datamart",quantile="0.99"} 0.0022352486848831177
http_request_sql_duration_seconds{action="dashboard",controller="datamart",quantile="0.9"} 0.0022352486848831177
http_request_sql_duration_seconds{action="dashboard",controller="datamart",quantile="0.5"} 0.0022352486848831177
http_request_sql_duration_seconds{action="dashboard",controller="datamart",quantile="0.1"} 0.0022352486848831177
http_request_sql_duration_seconds{action="dashboard",controller="datamart",quantile="0.01"} 0.0022352486848831177
http_request_sql_duration_seconds_sum{action="dashboard",controller="datamart"} 0.012792453169822693
http_request_sql_duration_seconds_count{action="dashboard",controller="datamart"} 4
http_request_sql_duration_seconds_sum{action="index",controller="datamarts"} 0.0022542476654052734
http_request_sql_duration_seconds_count{action="index",controller="datamarts"} 2
http_request_sql_duration_seconds_sum{action="show",controller="organizations"} 0.0054513514041900635
http_request_sql_duration_seconds_count{action="show",controller="organizations"} 1
http_request_sql_duration_seconds_sum{action="available_actions",controller="organizations"} 0.000303804874420166
http_request_sql_duration_seconds_count{action="available_actions",controller="organizations"} 1
http_request_sql_duration_seconds_sum{action="resources",controller="organizations"} 0.005123749375343323
http_request_sql_duration_seconds_count{action="resources",controller="organizations"} 2
http_request_sql_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.99"} 0.0002689734101295471
http_request_sql_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.9"} 0.0002689734101295471
http_request_sql_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.5"} 0.0002689734101295471
http_request_sql_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.1"} 0.0002689734101295471
http_request_sql_duration_seconds{action="create",controller="studio_configurations/updates",quantile="0.01"} 0.0002689734101295471
http_request_sql_duration_seconds_sum{action="create",controller="studio_configurations/updates"} 0.0002689734101295471
http_request_sql_duration_seconds_count{action="create",controller="studio_configurations/updates"} 1

# HELP http_request_queue_duration_seconds Time spent queueing the request in load balancer in seconds.
# TYPE http_request_queue_duration_seconds summary


# HELP heap_free_slots Free ruby heap slots.
# TYPE heap_free_slots gauge
heap_free_slots{type="ruby",pid="80"} 21901

# HELP heap_live_slots Used ruby heap slots.
# TYPE heap_live_slots gauge
heap_live_slots{type="ruby",pid="80"} 861460

# HELP rss Total RSS used by process.
# TYPE rss gauge
rss{type="ruby",pid="80"} 250933248

# HELP major_gc_ops_total Major GC operations by process.
# TYPE major_gc_ops_total counter
major_gc_ops_total{type="ruby",pid="80"} 14

# HELP minor_gc_ops_total Minor GC operations by process.
# TYPE minor_gc_ops_total counter
minor_gc_ops_total{type="ruby",pid="80"} 119

# HELP allocated_objects_total Total number of allocated objects by process.
# TYPE allocated_objects_total counter
allocated_objects_total{type="ruby",pid="80"} 14312986

# HELP resque_processed_jobs Total number of processed Resque jobs.
# TYPE resque_processed_jobs gauge
resque_processed_jobs 10923

# HELP resque_failed_jobs Total number of failed Resque jobs.
# TYPE resque_failed_jobs gauge
resque_failed_jobs 90

# HELP resque_pending_jobs Total number of pending Resque jobs.
# TYPE resque_pending_jobs gauge
resque_pending_jobs 0

# HELP resque_queues Total number of Resque queues.
# TYPE resque_queues gauge
resque_queues 3

# HELP resque_working Total number of Resque workers working.
# TYPE resque_working gauge
resque_working 0

# HELP cpu_usage cpu usage percent
# TYPE cpu_usage gauge
cpu_usage 0.771274

# HELP memory_usage memory usage bytes
# TYPE memory_usage gauge
memory_usage 2256

12.4. Команды системного администратора (для использования Службой технической поддержки)

Предупреждение

Команды и настройки из данного раздела должны выполняться опытным администратором и ТОЛЬКО после консультации с сотрудниками Технической поддержки Datamart Platform Studio!

12.4.1. Ротация логов Docker-контейнеров приложений

В бандлах приложений Datamart Platform Studio, начиная с версии 1.8.2 настроена автоматическая ротация логов приложений в Docker-контейнерах.

Для ручной настройки на сервере с Docker требуется добавить в файл /etc/docker/daemon.json следующее содержимое:

{
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}

Перезапустить Docker командой:

systemctl restart docker

12.4.2. Принудительный сброс статуса инсталляции

В случае возникновения нештатных ошибок в процессе установки инсталляции на сервер, может произойти ситуация, когда инсталляция завистнет в статусе «Устанвливается».

Для вывода из этого состояния в статус «Ошибка установки» можно выполнить в консоли сервера, на котором установлена Datamart Platform Studio команду принудительной смены статуса:

docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails runner "Installation.find(<ID>).update(status: 'failed')"

, где <ID> - номер зависшей инсталляции.

Выполнение в K8s:

  1. Сначала вычисляем имя POD:

kubectl get pod -n dms | grep dms-app
  1. Потом выполняем команду rails runner:

kubectl -n dms -c dms-app exec pods/dms-app-74594b7d97-w5j7c bundle exec rails runner "Installation.find(<ID>).update(status: 'failed')"

, где вместо dms-app-74594b7d97-w5j7c подставляем актуальный идентификатор POD

Предупреждение

Данное действие не прерывает установку и не передает какие-то команды на сервер. Оно только меняет статус. Выполняйте его только в случае, если вы уверены в том, что установка тействительно завершилась с ошибкой, но статус не изменился. Данное действие рекомендуется выполнять, как исключение из правил и только после консультации с технической поддержкой Datamart Platform Studio.

12.4.3. Принудительное переключение статуса сервера

При возникновении ошибки со сбором фактов (некорректой интерпритацией результата) может возникнуть необходимость переключить сервер в режим «Факты загружены». Это можно сделать командой:

docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails runner "Server.find(<ID>).touch(:facts_loaded_at)"

docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails runner "Server.find(<ID>).remove_warning!(:facts_not_loaded)"

, где <ID> - номер «подвисшего» сервера.

Аналогичную команду можно выполнить на уровне всех серверов в ЦОД:

docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails runner "DataCenter.find(<ID_DC>).servers.each { |s| s.touch(:facts_loaded_at); s.remove_warning!(:facts_not_loaded) }"

, где <ID_DC> - номер ЦОД, в которм необходимо установить статусы всех серверов.

12.4.4. Добавление репозитория в Gitea из файла-архива

В процессе работы технической поддержки для оперативной доставки бандлов с hotfix, чтоб не собирать Gitea volume под каждый hotfix можно выполнить следующие действия:

# склонировать репозиторий из GitLab (именно clone чтоб была директория .git) # заархивировать в .tar.gz # скопировать архив на управляющий сервер Datamart Platform Studio # запустить скрипт:

./datamart-studio gitea_repo_add <путь до архива с репозиторием>

12.5. Категории прав, предоставляемые для ролей на компоненты Datamart Platform Studio

12.5.1. Список категорий прав на компоненты в Datamart Platform Studio

  • (C)reate – создание нового

  • (R)ead – просмотр данных компонента и логов

  • (U)pdate – редактирование параметров и связей компонента

  • (D)elete - удаление

  • (I)ndex – просмотр в списке с другими компонентами

  • (T)ask – выполнение задач, связанных с компонентом

  • All – все доступные действия с компонентом (алиас для C-R-U-D-I-T)

12.5.2. Категории прав, предоставляемые для ролей на действия с компонентами Datamart Platform Studio

Таблица 12.1 Категории прав, предоставляемые для ролей на компоненты Datamart Platform Studio

Компонент

Модель

superadmin

admin

devops

analytic

viewer

backup

Организация

organization

All

All

R-I

R-I

R-I

Витрина

datamart

All

All

R-I

R-I

R-I

Профиль

datamart_profile

All

All

C-R-U-D-I

C-R-U-D-I

R-I

Кластер

cluster

All

All

R-I-Т

C-R-U-D-I

R-I

Инсталляция

installation

All

All

R-I-Т

C-R-U-D-I

R-I

Настройки

property

All

All

R-U-I

R-U-I

R-I

Интерфейсы, связи

interface, interface_binding

All

All

All

All

R-I

Файлы

uploaded_file

All

All

R-U-D-I

R-U-D-I

I

Базы данных

database

All

All

R-I-T

C-R-U-D-I

I

Датацентр (ЦОД), Сервер, Сети

data_center, server, network

All

All

All

R-I

R-I

Хранилище, Репозиторий, Бандл, Приложение

rephub, repository, bundle, app

All

All

R-I-T

R-I

R-I

Настройки приложения

property

All

All

R-U-I

R-U-I

R-I

Зависимости

dependency, requirement

R-I

R-I

R-I

R-I

R-I

Глобальные настройки

global_property

All

All

All

All

R-I

Логи

action, log

C-U-R-I

C-U-R-I

C-U-R-I

R-I

R-I

Лицензии

license

All

All

R-I

R-I

R-I

Резервные копии Студии

studio_backup

C-R-I

R-I

R-I

R-I

R-I

C-R-I