10. Дополнительная информация
10.1. Настройка количества обработчиков заданий
В Datamart Platform Studio есть возможность настроить количество обработчиков заданий Resque workers (воркеров), которые будут параллельно запускать выполнение задач инсталляций, обновления приложений, других скриптов Ansible, требуемых для обслуживания Витрин данных.
Если при помощи Datamart Platform Studio планируется параллельно запускать задачи обновления и установки приложений в нескольких услугах, то имеет смысл установить количество воркеров, как минимум в 1/3 от количества обслуживаемых услуг (в т.ч. Витрин данных). Если есть необходимость, чтобы процессы обновления шли строго параллельно, то количество воркеров необходимо настроить равным количеству услуг.
Настройка производится путем указания в переменной окружения:
RESQUE_QUEUE_POOL_SIZE=1
По умолчанию, или если значение не указано, в Datamart Platform Studio будет запущен только 1 обработчик. После установки Datamart Platform Studio изменить количество обработчиков можно при помощи команды (в зависимости от платформы):
для версии на ВМ:
./datamart-studio resque-pool <число>
для версии, развернутой в среде Kubernetes (K8s):
./datamart-studio resque-pool-k8s <число>
Если не задать явное количество требуемых воркеров в параметре вызова команды, то оно будет сброшено в 1.
В интерфейсе Datamart Platform Studio в меню «Очереди задач» выводится информация об общем количестве очередей и обработчиков заданий, куда выводятся и воркеры услуг и системные воркеры. Команда resque-pool и настройка RESQUE_QUEUE_POOL_SIZE влияет только на количество воркеров услуг. Количество системных воркеров Datamart Platform Studio определяет самостоятельно, настройки на это не влияют.
Примечание
Важно, чтобы параллельно работающие Ansible playbook не выполняли свои действия одновременно на одном и том же сервере. Если на одном и том же сервере установлены несколько приложений разных услуг, то в этом случае не рекомендуется запускать их одновременную параллельную установку или обновление.
10.2. Структура служебных директорий
При установке Datamart Platform Studio в каталоге установки программы будут по умолчанию созданы следующие папки (см. Рисунок 10.1):
containets - контейнеры для оффлайн установки
dms-dirs - директория со служебными папками dms-* внутри
fluent-bit - конфиги для контейнера fluent-bit для отправки логов Datamart Platform Studio в opensearch (используется в ГосТех)
log - логи студии
volumes - вольюмы redis (nexus, gitea и БД если они нужны)
Рисунок 10.1 Структура директорий Datamart Platform Studio
В служебной директории dms-dirs расположены папки:
dms-bundles — локальные репозитории бандлов
dms-apps — дистрибутивы и конфигурации приложений
dms-installations — папка с установками компонентов
dms-clusters — папка с установками для кластеров
dms-data_centers — папка с SSH ключами для ЦОД (применяется для всех серверов ЦОД)
dms-servers — папка с серверами, в которой в том числе содержится файл ssh.config
dms-networks — папка с настройками сетей для серверов и датацентров
studio — запускаемое приложение.. _ra_dtmsconfig:
10.3. Настройка параметров в файле конфигурации
При первом запуске Datamart Platform Studio параметры конфигурации программы считываются из файла переменных окружения .env.
Примечание
При проведении обновления или перезапуске новые параметры, если они были внесены в .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 playbook
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 - пул Resque воркеров (0 - значение по умолчанию, в текущей версии Студии поднимает 1 очередь.)
# Ссылка на документацию в интерфейсе ПО.
STUDIO_DOCS_URL="" - Если не указано, по умолчанию будет https://docs-studio.datamart.ru/
# Настройки пользовательской автоматизации
DOCKER_STEP_TIMEOUT=30 - время (сек), которое DPS отводит по умолчанию на выполнение скрипта пользовательских шагов в docker
DOCKER_URL=tcp://10.129.0.46:2376 - URL подключения к docker для выполнения кода пользовательских шагов
# Настройки разрешений загрузки приватного ключа
STUDIO_ALLOW_UPLOAD_SERVER_PRIVATE_KEY=true - разрешить возможность загрузки приватного ключа для серверов
STUDIO_ALLOW_UPLOAD_DC_PRIVATE_KEY=false - разрешить возможность загрузки приватного ключа для ДЦ
# Настройка генерации ключей SSH
STUDIO_SSH_KEY_EMAIL=name@example.ru - почта с которой будет отправляться ключ SSH
# Настройки подключения к почтовому серверу для отправки уведомлений из |prod|
STUDIO_SMTP_SERVER=smtp.mail.ru - адрес сервера исходящей почты (протокол шифрования SSL/TLS)
STUDIO_SMTP_PORT=465 - порт подключения
STUDIO_SMTP_USER=name@example.ru - аккаунт почты от имени которого будут отправляться сообщения (логин)
STUDIO_SMTP_PWD=******* - пароль аккаунта
# Настройки работы |prod| по https
STUDIO_HTTPS_ENABLED=true - включено или не включено (true/false)
STUDIO_HTTPS_CERT="/opt/datamart/<folder>/<file_cert>" - путь к файлу сертификата
# Настройки подключения и управления отказоустойчивого модуля Proxy API
PROXYAPI_STUDIO_ENABLE=true - Включение/отключение модуля (true/false)
PROXYAPI_SESSION_TIMEOUT=300 - Таймаут активной сессии пользователя
SERVICE_METADATA_TIMEOUT=300 - Таймаут хранения мета-информации об услугах
10.4. Мониторинг ресурсов, управление лицензиями для организаций
В карточке каждой организации есть раздел «Мониторинг ресурсов», в котором отображается отчет об утилизации ресурсов, предоставленных согласно полученной лицензии на Datamart Platform Studio для данной организации (см. Рисунок 10.2).
В рамках отчета предоставляется отдельно данные по каждой Витрине данных, утилизация ресурсов на Типовое ПО Витрин считается отдельно и в лимит лицензии не входит.
Рисунок 10.2 Отчет об утилизации ресурсов
10.5. Содержимое JWM-токена Keycloak
При подключении метода авторизации IAM (Keycloak), 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 будут доступны все компоненты без ограничений.
10.6. Состав метрик мониторинга
Метрики мониторинга 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
10.7. Работа студии по https
При подключении к студии по защищённому протоколу HTTPS доступ осуществляется к:
Веб-интерфейсу студии
Запросам Proxy-API
Запросам API
Важно учесть, что если для настройки STUDIO_HTTPS_ENABLED установлено значение true, то необходимо заполнить параметр STUDIO_HTTPS_CERT, указав путь к доверенному сертификату. Например, если файл сертификата cert.key находится в папке cert, необходимо указать путь /opt/datamart/cert/cert.key.
10.8. Команды системного администратора (для использования Службой технической поддержки)
Предупреждение
Команды и системного администратора должны выполняться из консоли опытным администратором и ТОЛЬКО после консультации с сотрудниками Технической поддержки Datamart Platform Studio!
Для получения списка доступных команд, обратитесь в Службу поддержки Datamart Platform Studio.
10.8.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
10.8.2. Добавление репозитория в Gitea из файла-архива
В процессе работы технической поддержки для оперативной доставки бандлов с hotfix, чтоб не собирать Gitea volume под каждый hotfix можно выполнить следующие действия:
склонировать репозиторий из GitLab (именно
cloneчтоб была директория.git)заархивировать в .tar.gz
скопировать архив на управляющий сервер Datamart Platform Studio
запустить скрипт:
./datamart-studio gitea_repo_add <путь до архива с репозиторием>