Руководство по системному администрированию#
Сценарии администрирования#
Администрирование базы и схемы данных#
Создание пользователя и табличных пространств#
Все действия выполняются администратором целевой БД.
Предварительно на сервере БД должны быть установлены Pangolin (PSQL), pgBouncer, а также должна быть создана база данных.
В примере вместо значений имя_пользователя, имя_схемы, имя_БД и пароль_пользователя нужно подставить свои значения. По умолчанию имя пользователя, БД и схемы имеют наименование mdmp.
Следует выполнить следующие действия:
Создать пользователя-владельца и схему mdmp (название можно выбрать иное), придумать пароль.
CREATE USER имя_пользователя WITH PASSWORD 'пароль_пользователя' LOGIN NOSUPERUSER INHERIT NOREPLICATION; CREATE SCHEMA имя_схемы AUTHORIZATION имя_пользователя;Создать под пользователем ОС папки табличных пространств mdmp_model_data, mdmp_big_model_data, mdmp_big_model_idx через sudo mkdir на любом достаточно свободном разделе на усмотрение администратора компонента NSIX и задать владельца этой папки и его группу как Pangolin (PSQL) (название может отличаться).
sudo mkdir путь_к_табличному_пространству_MDMP_MODEL_DATA_на_диске sudo mkdir путь_к_табличному_пространству_MDMP_BIG_MODEL_DATA_на_диске sudo mkdir путь_к_табличному_пространству_MDMP_MODEL_IDX_на_диске sudo mkdir путь_к_табличному_пространству_MDMP_BIG_MODEL_IDX_на_диске sudo chown postgres:postgres путь_к_табличному_пространству_MDMP_MODEL_DATA_на_диске sudo chown postgres:postgres путь_к_табличному_пространству_MDMP_BIG_MODEL_DATA_на_диске sudo chown postgres:postgres путь_к_табличному_пространству_MDMP_MODEL_IDX_на_диске sudo chown postgres:postgres путь_к_табличному_пространству_MDMP_BIG_MODEL_IDX_на_дискеCоздать в БД сами табличные пространства.
CREATE TABLESPACE mdmp_model_data OWNER mdmp LOCATION 'путь_к_табличному_пространству_MDMP_MODEL_DATA_на_диске'; CREATE TABLESPACE mdmp_big_model_data OWNER mdmp LOCATION 'путь_к_табличному_пространству_MDMP_BIG_MODEL_DATA_на_диске'; CREATE TABLESPACE mdmp_model_idx OWNER mdmp LOCATION 'путь_к_табличному_пространству_MDMP_MODEL_IDX_на_диске'; CREATE TABLESPACE mdmp_big_model_idx OWNER mdmp LOCATION 'путь_к_табличному_пространству_MDMP_BIG_MODEL_IDX_на_диске';Выдать права пользователю.
GRANT CONNECT ON DATABASE имя_БД TO имя_пользователя; GRANT CREATE ON TABLESPACE mdmp_model_data TO имя_пользователя; GRANT CREATE ON TABLESPACE mdmp_big_model_data TO имя_пользователя; GRANT CREATE ON TABLESPACE mdmp_big_model_idx TO имя_пользователя; GRANT CREATE ON SCHEMA имя_схемы TO имя_пользователя; GRANT ALL PRIVILEGES ON SCHEMA имя_схемы TO имя_пользователя; GRANT USAGE ON SCHEMA имя_схемы TO имя_пользователя; GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA имя_схемы TO имя_пользователя; GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA имя_схемы TO имя_пользователя;Создать роль MDMP_APPL_ROLE и пользователя MDMP_APPL для доступа приложений без права удаления схемы, выдать им права на БД и схему, созданные в предыдущем пункте.
CREATE ROLE IF NOT EXISTS mdmp_appl_role WITH PASSWORD 'пароль_пользователя'; GRANT CONNECT ON DATABASE имя_БД TO mdmp_appl_role; GRANT USAGE ON SCHEMA имя_схемы TO mdmp_appl_role; GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA имя_схемы TO mdmp_appl_role; GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA имя_схемы TO mdmp_appl_role; CREATE USER mdmp_appl WITH PASSWORD 'пароль_пользователя' LOGIN NOCREATEDB NOCREATEROLE NOSUPERUSER INHERIT IN ROLE MDMP_APPL_ROLE NOREPLICATION NOBYPASSRLS; GRANT CONNECT ON DATABASE имя_БД TO mdmp_appl; GRANT mdmp_appl_role TO mdmp_appl; ALTER ROLE mdmp_appl_role SET search_path TO имя_схемы; ALTER user mdmp_appl SET search_path TO имя_схемы;
Переименование схемы БД и смена владельца#
Все действия выполняются администратором целевой БД.
Переименование схемы осуществляется командой:
ALTER SCHEMA имя_схемы RENAME TO новое_имя_схемы;
Если планируется использовать воссозданную схему под старым именем, то для переименованной схемы требуется создать нового пользователя, сменить владельца и выдать новому пользователю права на схему.
Смена владельца осуществляется командой:
ALTER SCHEMA имя_схемы OWNER TO имя_нового_пользователя;
Затем нужно сменить владельца всех таблиц и последовательностей схемы следующей процедурой:
DO $$
DECLARE
query_line varchar(1000);
rec RECORD;
m_schemaName VARCHAR(100);
BEGIN
m_schemaName := 'новое_имя_схемы';
FOR rec IN (select PT.schemaname || '.' || PT.tablename TAB from pg_tables PT
where PT.schemaname = m_schemaName and PT.tableowner <> m_schemaName)
LOOP
EXECUTE 'alter table if exists ' || rec.TAB || ' owner to '|| m_schemaName;
END LOOP;
FOR rec IN (select PS.schemaname || '.' || PS.sequencename SEQ from pg_sequences PS
where PS.schemaname = m_schemaName and PS.sequenceowner <> m_schemaName)
LOOP
EXECUTE 'alter sequence if exists ' || rec.SEQ || ' owner to '|| m_schemaName;
END LOOP;
END;
$$
Архивация дампов, копирование и восстановление#
Все действия выполняются администратором целевой БД.
Для копирования схемы с данными на другие сервера БД или создания копии, а также сохранения архива в целях резервирования следует использовать утилиты pg_dump и pg_restore от имени администратора Pangolin (PSQL).
Важная особенность — имя воссоздаваемой схемы должно совпадать с именем исходной.
Для запуска создания дампа в ОС от имени администратора БД следует использовать команду вида:
pg_dump --verbose --host=<имя_хоста> --port=<номер_порта> -d <имя_БД> --schema=<имя_схемы> --username=<имя_пользователя> --format=custom --file=/путь_к_файлу_дампа
Где <имя хоста> - доменное имя или ip-адрес сервера БД, с которого осуществляется снятие дампа (localhost если сервер БД и сервер с установленной утилитой одинаковые).
Можно не указывать "username" если предусмотрена авторизация по умолчанию от имени администратора.
Допустимые форматы
Путь к файлу дампа должен располагаться в директории, к которой у пользователя Pangolin (PSQL) есть полный доступ, а на разделе имеется достаточно свободного места.
Рекомендуется использовать разделы /pgbackup или /pgarclogs, где, как правило, есть свободное место.
Не рекомендуется использоваться раздел /pgdata, где место требуется для самой БД.
Далее перед восстановлением, если требуется создать схему-копию, необходимо сделать следующее:
переименовать исходную схему в новую (смотреть раздел в данном документе Переименование схемы БД и смена владельца);
создать пользователя-владельца для новой схемы и переназначить на него объекты схемы (смотреть раздел в данном документе Переименование схемы БД и смена владельца);
создать новую пустую схему и выдать права на нее исходному пользователю;
восстановление из дампа осуществляется на пустую схему командой вида:
pg_restore --verbose --host=<имя_хоста> --port=5432 -d <имя_БД> --schema=<имя_схемы> --username=<имя_пользователя> /путь_к_файлу_дампа
Конфигурация сервера приложений среды контейнеризации для компонента NSIX#
Создание и настройка ролевых прав пользователей#
Все действия выполняются администратором целевой БД.
Для добавления прав учетных записей пользователей в среду контейнеризации требуется зайти в меню User Management — Role Bindings, и нажать кнопку Create Binding.
Имя ролевой связки может быть любым (для улучшенной навигации желательно указывать имя пользователя и роли).
Имя роли выбирается из списка доступных. Если роли с нужными правами нет, ее можно создать в меню User Management — Roles, взяв за основу одну из существующих ролей и отредактировав необходимые права в yaml формате.
Имя пользователя — как в нужном домене.
Настройка параметров приложений#
Все действия выполняются администратором целевой БД.
Параметры приложений задаются в меню Workloads — Config Maps.
Для изменения настроек следует открыть файл yaml и отредактировать нужные конфигурации:
nsix-cm-mdc — общие параметры приложений для внешних сервисов, такие как активность и хост компонента Аудит (AUDT) продукта Platform V Audit SE (AUD);
nsix-cm-mdc-db — параметры схемы БД, кроме пароля;
nsix-cm-mdc-ivs, nsix-cm-mdc-kmd, nsix-cm-mdc-jobs, nsix-cm-mdc-api — параметры конкретных модулей;
nsix-cm-mdc-fluent-bit — параметры системы fluent bit в виде конфигурационного файла .conf, встроенного в yaml; Настройки параметров secrets редактируются в разделе Workloads — Secrets.
Используются secrets с переменной JDBC.MDC_POSTGRES.PASSWORD, содержащей пароль БД, и с переменной DBC.MDC_POSTGRES.USER, содержащей имя пользователя.
В Config Maps среды контейнеризации модуля cm-mdc присутствуют параметры:
OTHER_SERVER_TYPE, который может принимать значения параметра или стенда на котором выполняется установка дистрибутива;
OTHER_KMD_ENABLED, в котором при значении true модуль mdc-kmd включен, при значении false модуль mdc-kmd отключен.
Получение токенов удаленного доступа#
Все действия выполняются администратором целевой БД.
Для выполнения удаленного доступа к пространству Kubernetes или OpenShift (опционально) из внешних заданий Jenkins следует использовать токен сервис-аккаунта.
Для этого необходимо:
войти в меню User management — Service Account;
выбрать нужный сервис аккаунт (обычно jenkins);
пролистать вниз страницу сервис-аккаунта, выбрать secret вида имя аккаунта-token;
в разделе Data нажать Revel values и скопировать значение последнего поля token. В дальнейшем использовать его в нужном задании Jenkins (например, зашифровать и добавить в репозиторий задания Jenkins, либо добавить в credentials).
Запуск/Перезапуск#
Все действия выполняются администратором целевой БД.
После установки приложений их pods по умолчанию стартуют автоматически.
Для перезапуска модулей нужно войти в меню Workloads — Deployment Configs.
После этого открыть конфигурацию развертывания нужного модуля и либо отредактировать его с изменением (рестарт пойдет автоматически), либо во вкладке Replication Controllers удалить текущий контроллер реплик (после удаления активного контроллера автоматически создается новый с запуском нового pod), либо в свернутом меню Actions выбрать Start rollout (в этом случае создается новый контроллер без удаления старого).
Необходимо убедиться, что в разделе Workloads — Pods все pods egress / ingress (если он используется), а также pods модулей mdc-api, mdc-jobs, mdc-ivs, mdc-kmd, mdc-ui запущены (находятся в статусе Running) и не содержат ошибок, а pods с таким же именем и названием deploy завершены.
Конфигурация ролевой модели#
Все действия выполняются администратором целевой БД.
Файл с ролевой моделью включается в поставку и при развертывании прикладного проекта загружается в AUTZ. Загрузка может быть осуществлена с помощью Pipeline, либо сотрудниками в АРМ AUTZ в том случае если инструменты DevOps Pipeline не функционируют. Загруженные привилегии могут быть включены в существующие в AUTZ наборы привилегий, либо для них могут быть созданы новые наборы. Управление наборами привилегий осуществляется в АРМ AUTZ. Набор привилегий назначается пользователю по условию включения данного пользователя в привязанную к набору привилегий группе пользователей.
После того, как модель авторизации импортируется в промышленную среду, любые изменения в данную модель должны вноситься с использованием одного источника данных, которым является файл с моделью авторизации. В том случае, если после импорта модели авторизации администратор сопровождения компонента вносит изменения в модель авторизации по отдельной заявке (например, включает разрешение в новый канал), данные изменения должны быть отражены в исходном файле, который содержится в поставке. Если этого не произойдет, изменения, которые вносил администратор сопровождения компонента, будут аннулированы при последующем развертывании обновления приложения.
Работа с системным журналом#
Включение, отключение, настройка размера, выбор уровня журналирования выполняется путем конфигурирования в консоли среды контейнеризации сущности ConfigMap с именем nsix-cm-mdc-fluent-bit в формате fluentbit.
Настройка правил безопасности на граничных прокси (Ingress, Egress)#
Все входящие и исходящие соединения Компонента проходят через ingress/egress proxy.
Для входящих/исходящих взаимодействий используется mTLS 1.2.
Настройка защищенного сетевого взаимодействия осуществляется продуктом Platform V Synapse Service Mesh (SSM), основанным на Istio.
На egress proxy реализованы механизмы аутентификации и авторизации (для исходящих запросов) через использование компонента One-Time Password (OTP) / OTT (OTTS) продукта Platform V Backend (#BD).
Чтобы у различных команд сопровождения не возникало необходимости передачи secrets при настройке клиента OTTS, работа должна быть построена по следующему сценарию:
Администратор прикладного модуля выполняет генерацию ключевой пары в p12-контейнере:
keytool -genkey -keyalg EC -sigalg SHA256withECDSA -keystore ${module_id}.p12 -storetype PKCS12 -keysize 256 -dname
"CN=${module_id}" -alias ${module_id}
Администратор прикладного модуля формирует запрос на сертификат:
keytool -certreq -keyalg EC -sigalg SHA256withECDSA -keystore ${module_id}.p12 -storetype PKCS12 -alias ${module_id} > ${module_id}_cert_req.pem
В результате выполнения данной команды создается файл CSR - ${module_id}_cert_req.pem, который необходимо передать администратору компонента OTTS в заявке на генерацию сертификата для модуля.
События системного журнала#
За логирование отвечает компонент Журналирование (LOGA) продукта Platform V Monitor (OPM). Расположение системного журнала событий настраивается в этом компоненте. Подробности настройки приведены в документации к компоненту Журналирование (LOGA) продукта Platform V Monitor (OPM).
Для системного журнала применимы следующие уровни логирования:
FATAL — критические ошибки, при которых невозможна работа приложения.
Error — информация об ошибках в работе приложения. Ошибки данного уровня можно разделить на следующие типы:
ошибки вызова компонентов платформы;
ошибки интеграционных вызовов.
Warning — предупреждения.
Info — информация о работе приложения и текущем состоянии процессов.
Debug — подробности о работе приложения, позволяющие восстановить последовательность выполнения операций при обслуживании вызовов и вызовах внешних систем.
TRACE — подробные записи о действиях приложения. Нужны в исключительных случаях для отладки.
Примечание
События уровней TRACE и Debug не рекомендуется использовать в промышленных инсталляциях.
Все сервисы передают сообщения в системный журнал на разных уровнях логирования в зависимости от события. В системный журнал также попадают сообщения о регистрации метрик. Данные системного журнала можно использовать для диагностики сбойных ситуаций, относящихся к некорректному использованию прикладных модулей компонента NSIX.
Реализованная интеграция с компонентом Журналирование (LOGA) продукта Platform V Monitor (OPM) позволяет выполнять сбор, предобработку, транспортировку, хранение, поиск и просмотр логов прикладных модулей компонента NSIX в централизованной системе хранения логов данного компонента.
Если в системном журнале нет сообщений об ошибках, значит работа происходит в штатном режиме.
Сообщение |
Уровень логирования |
Компонент |
Описание события |
|---|---|---|---|
Could not clear cache |
ERROR |
Все |
Не удалось очистить кеш модуля |
Could not get dictionary mapping |
ERROR |
Все |
Ошибка получения mapping справочника |
Could not launch a job |
ERROR |
mdc-jobs |
Ошибка запуска регламентного задания |
Could not send data to Audit |
ERROR |
Все |
Ошибка при отправке данных в компонент Аудит (AUDT) продукта Platform V Audit SE (AUD) |
Ошибка аутентификации технического пользователя: {} |
ERROR |
Все |
Ошибка аутентификации технического пользователя |
Запущена задача: Экспорт справочников в витрину данных (конфигурируемый) |
INFO |
Все |
Информация о запуске на выполнение регламентного задания |
Файл не поддерживаемого формата |
WARNING |
Все |
Проверка на поддерживаемые типы файлов, допустимых для запуска регистрационного задания |
Примечание:
*
Если в строке колонки «Компонент» указано значение «Все», это следует понимать как:
mdc-ivs;
mdc-jobs;
mdc-kmd;
mdc-api.
События ротации secrets
Сообщение |
Уровень логирования |
Компонент |
Описание события |
|---|---|---|---|
Ошибка при запуске SecretsFileWatchService |
ERROR |
Все |
Событие появляется, когда произошла ошибка инициализации сервиса ротации secrets. Сервис отслеживания изменения в файлах с secrets |
Старт обновления secrets |
INFO |
Все |
Событие возникает, когда произошло изменение в одном из файлов с secrets |
Обновление secrets завершено, время обновления {total ms}" |
INFO |
Все |
Событие появляется в случае полного завершения ротации secrets, независимо от статуса ротации |
Старт инициализации подключения для {objectName}" |
INFO |
Все |
Событие возникает при старте ротации определенного типа подключения * |
Ошибка инициализации подключения |
ERROR |
Все |
Появляется, когда при инициализации одного из типов подключения * произошла ошибка. Это может быть неверный логин или пароль |
Завершена инициализации подключения для {objectType} со статусом {status}, время реинициализации {total ms}" |
INFO |
Все |
Событие публикуется по завершению инициализации подключения, независимо от статуса |
Примечание:
*
Если в строке колонки «Компонент» указано значение «Все», это следует понимать как:
mdc-ivs;
mdc-jobs;
mdc-kmd;
mdc-api.
Примечание:
Используемые типы подключений — DATASOURCE, S3, S3_EXTERNAL.
Чтобы изменить уровень логирования, администратору необходимо зайти в консоль администрирования облачной среды, выбрать проект, в который выполнена установка компонента NSIX, и выбрать Deployment модуль, уровень логирования которого необходимо изменить. Далее перейти в терминал pod и выполнить команду:
curl localhost:8081/actuator/loggers
В консоли будут выведены группы пакетов, уровень логирования которых можно изменить. Пример запроса для изменения уровня логирования sql запросов:
curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}' http://localhost:8081/actuator/loggers/sql
События мониторинга#
Все прикладные модули компонента публикуют метрики по стандарту мониторинга Prometheus. Метрики доступны для сбора системой мониторинга через HTTP-endpoint/actuator/prometheus. Сбор и отправка метрик выполняется с использованием подключаемого клиентского модуля компонента Объединенный мониторинг Unimon (MONA) продукта Platform V Monitor (OPM).
Наименование бизнес-операции |
Частота сбора метрики |
Название метрики |
Тип метрики |
Описание метрики |
Описание результатов выполнения операции |
Модуль |
|---|---|---|---|---|---|---|
Создание/обновление версии данных справочника |
~100 событий в сутки |
dictUsageMetric |
Counter |
Метрика использования справочников |
Количество обновлений и созданий версий справочника |
mdc-ivs |
Проверка доступности рабочих директорий на чтение и запись данных |
~15 событий в сутки |
dirsAvailabilityMetric |
Gauge |
Метод фиксирует в мониторинге доступность директорий |
Доступность на чтение и запись по каждой из рабочих директорий, с указанием пути директорий |
все |
Измерение времени работы регламентных заданий |
~15 событий в час |
jobTimeMetric |
Gauge |
Метрика времени выполнения регламентных заданий |
Время работы каждого регламентного задания в виде даты-времени начала и даты-времени конца работы. Дополнительно выводится статус завершения работы регламентного задания |
mdc-jobs |
Подсчет количества ошибок на API для работы с UI |
~20 событий в час |
restExceptions |
Counter |
Метрика обработчика исключений |
Количество ошибок по каждому из методов API для работы с UI |
все |
Измерение времени работы методов API для работы с UI |
~500 событий в час |
restMethodExecutions |
Timer |
Измеряет время выполнения метода в точке среза |
Время работы каждого из методов API для работы с UI |
все |
Мониторинг утилизации коммунальных (мультитенантных) и мульти-инстансных ресурсов. Реализована схема передачи метрик продуктов Платформы для вычисления потребления аппаратных ресурсов и биллинга.
Наименование метрики |
Код метрики |
Тип метрики |
Способ расчета |
Модуль |
|---|---|---|---|---|
Суммарный объем данных в справочниках |
nsix_dictionary_total_size |
counter |
– расчет метрики осуществляется суммарно по справочникам считается сумма размеров атрибутов записи, количество записей; |
mdc-jobs |
Запросов на изменение справочников |
nsix_model_update_count |
counter |
Считает только запросы на создание справочников; |
mdc-kmd |
Количество запусков универсального регламентного задания на загрузку справочников |
nsix_universal_job_count |
counter |
количество запусков универсального регламентного задания на загрузку справочников; |
mdc-api |
Количество запусков регламентного задания публикации справочников |
nsix_publish_job_count |
counter |
– рассчитывается количество запусков универсального регламентного задания в разрезе по справочникам; |
mdc-api |
Мониторинг ротации secrets
Наименование метрики |
Код метрики |
Тип метрики |
Способ расчета |
Модуль |
|---|---|---|---|---|
Общее время обновления secret от момента обнаружения изменения включая все задержки. |
nsix_reload_total_time |
Gauge |
Время рассчитывается в разрезе каждого pod отдельно, расчет общего времени для всех pod не требуется |
Все |
Длительность реинициализации secrets |
nsix_reload_object_time |
Gauge |
Время рассчитывается в разрезе каждого pod отдельно, расчет общего времени для всех pod не требуется |
Все |
Количество полностью завершенных обновлений secrets и объектов |
nsix_reload_object_count |
Counter |
Количество рассчитывается в разрезе каждого pod отдельно, расчет общего количества для всех pod не требуется |
Все |
Часто встречающиеся проблемы и пути их устранения#
Действия при ошибках запуска приложений Компонента#
Ниже рассмотрены наиболее распространенные ошибки при запуске приложений и основные варианты их устранения.
Действия при ошибках запуска pods
Если pods нет, необходимо убедиться, что создана конфигурация развертывания (в разделе Workloads \ Deployment Configs), и в его настройках нажать Start Rollout. Если конфигурация не создана, нужно повторить процедуру ее установки и при наличии ошибок при автоустановке проверить лог и попытаться установить нужный yaml-файл вручную.
Если pod содержит ошибку вида CrashLoopBackOff или другую, подсвеченную красным цветом, нужно перейти в логи этого pod и посмотреть причину ошибки.
Это может быть, например, некорректная ссылка на Docker-образ, ошибка jdbc-соединения на стадии запуска, некорректная модель БД, отсутствие параметра конфигурации и т.д.
Необходимо убедиться, что:
в настройках конфигурации развертывания указана ссылка на существующий Docker-образ с существующего сайта;
в параметрах корректно указано имя secret, содержащего данные хоста хранилища Docker-образов;
secret с данными Docker-образов создан и содержит корректные логин и пароль.
Затем перейти в раздел Pods и следить за появлением pods имя-модуля-deploy и имя-модуля, при появлении ошибки перейти в лог в течение минуты (далее pods самоудаляется) и, скопировав сообщение из лога, проанализировать ошибку и действовать исходя из ее типа.
JDBC Error
Ошибка проявляется при проблемах с соединением со схемой базы данных. Причин может быть несколько: некорректные параметры в конфигураторе (например, неправильный логин и пароль), просроченный пароль учетной записи, незапущенная БД.
В первую очередь при ошибке такого рода следует проверить параметры конфигураций БД в Config Maps nsix-cm-mdc-db и убедиться, что в параметрах указаны верные диалект и драйвер СУБД, схема, адрес БД, логин и init-запросы, а также пароль в secret nsix-secret-mdc-db (secret-mdc-unver, где unver - номер версии по умолчанию). Если параметры заданы неверно, их следует исправить в консоли среды контейнеризации и связанных заданиях Jenkins, и затем перезапустить pods (например, изменив файл DeploymentConfig или удалив текущий Replication Controller - новый стартует автоматически). Если же параметры заданы верно, а соединиться с БД из внешней программы не удается по причине неправильного, просроченного пароля и т.п., следует перезапустить БД/сбросить блокировку/сменить пароль при наличии доступа, а при его отсутствии — запросить у администратора БД.
Действия, если pods запущены, но приложения не отображаются
Если pods работают, но при попытке перейти на страницу контекста выводится ошибка 404 или подобная, необходимо перейти в Networking-Routes и проверить работоспособность интерфейса и отсутствие ошибок с помощью маршрута no-ingress. Если такого маршрута по умолчанию нет, необходимо проверить маршрут ingress ввиду наличия сертификата.
В этом случае если компонент IAM Proxy (AUTH) продукта Platform V IAM SE (IAM) не настроен или не подключен, можно временно создать маршрут No-ingress вручную на основе следующего yaml-файла:
kind: Route
apiVersion: route.openshift.io/v1
metadata:
name: route-mdc-no-ingress
labels:
shard: default
spec:
host: no-ingress.mdc.apps.название_кластера.название_домена
to:
kind: Service
name: svc-mdc-ui
weight: 100
port:
targetPort: http-8080
wildcardPolicy: None
После создания маршрута следует перейти по его ссылке и убедиться, что интерфейс работает и кнопки приложений при нажатии открывают список и не выводятся ошибки самого приложения.
При наличии ошибок проверьте логи pods соответствующего компонента.
Действия при ошибках отправки событий в компонент Аудит (AUDT) продукта Platform V Audit SE (AUD)#
При появлении сообщения об ошибке отправки данных в компонент Аудит (AUDT) продукта Platform V Audit SE (AUD) необходимо проверить настройки, отвечающие за интеграцию с данным компонентом. Для этого требуется открыть консоль среды контейнеризации в режиме Администратора, открыть сущность ConfigMap nsix-cm-mdc, проверить задано ли значение для системной переменной AUDIT_HOST. Если системная переменная отсутствует или содержит некорректное значение (например, недопустимый хост для приема события компонентом Аудит (AUDT) продукта Platform V Audit SE (AUD)), то необходимо запросить актуальный хост сотрудников компонента Аудит (AUDT) продукта Platform V Audit SE (AUD) и актуализировать значение системной переменной AUDIT_HOST.
Действия при ошибках интерфейса#
Прикладной интерфейс не отображается
Обычно причиной не отображения интерфейса служит неверно указанный порт или контекст в компоненте IAM Proxy (AUTH) продукта Platform V IAM SE (IAM) или в прокси-сервере.
Следует проверить, что модуль mdc-ui запущен и в адресной строке правильно указан порт и корневой контекст, а также верно настроено проксирование в конфигурации nsix-cm-mdc-nginx, особенно если UI запускается в отдельной проектной области.
В некоторых случаях Platform V может принудительно переопределять порт, указанный в настройках nsix-cm-mdc-nginx. В таком случае стоит проверить соседние порты. Например, для HTTP это могут быть 8080, 8081, 8082, 9080 и т.п., для HTTPS — 8444, 9443 и т.п.
Если используется компонент IAM Proxy (AUTH) продукта Platform V IAM SE (IAM) и прямая ссылка без него работает, а сам компонент IAM Proxy (AUTH) продукта Platform V IAM SE (IAM) — нет, исправьте его настройки и проверьте, нет ли в зоне зависших серверов, на один из которых вместо рабочего он может перенаправлять.
Прикладной интерфейс отображается, но всплывает ошибка получения данных
В данном случае причина может быть в отсутствии необходимых ролей у пользователя, либо проблемах с базой данных. При наличии проблем с AUTZ либо неверной маршрутизации от модуля интерфейса к сервисам основных приложений, ошибка как правило проявляется на главном экране. В то время как при наличии проблем с БД на главном экране выводится сообщение только при проблемах в модуле mdc-ivs. Во всех остальных случаях ошибка выводится при переходе в меню модуля.
Более точную причину ошибки можно установить, просмотрев логи pods — новое сообщение должно генерироваться в момент входа в главное меню или переход в меню модуля:
mdc-ivs, если ошибка выводится на главном экране, либо в меню Справочники и Версии справочников;
mdc-kmd, если ошибка выводится в меню Конструктор модели данных;
mdc-jobs, если ошибка выводится в меню Регламентные задания.
Если включена аутентификация через AUTZ, то следует проверить, что AUTZ работает, а в самом компоненте AUTZ у пользователя, под которым осуществлен вход, добавлены все актуальные роли, и пароль не просрочен.
В некоторых случаях AUTZ может не обрабатывать запросы из-за переполнения диска или своей базы данных, и в таком случае следует их очистить.
При наличии ошибки в БД следует проверить соединение и установить через liquibase последние патчи.
Если соединение не работает, администратору следует проверить состояние запуска БД и pgbouncer и при необходимости перезапустить (при отсутствии прав — запросить администратора). В некоторых случаях крах БД может быть вызван переполнением раздела с табличным пространством (по умолчанию - /pgdata), который в этом случае следует очистить или расширить за счет других свободных разделов.
Если соединение работает, но пароль не верный или просрочен — следует сменить пароль и актуализировать его в настройках, либо сбросить просроченный статус и при необходимости изменить парольную политику в компоненте password_policy, увеличив срок действия.
Действия при отказах технических средств#
В случае отказа какого-либо технического средства на активном плече кластера БД или сервера приложений кластерное ПО автоматически переключит работу на неактивное плечо кластера.
В случае, если не удается запустить компонент NSIX на неактивном узле, необходимо собрать логи работы приложения и обратиться в службу поддержки компонента NSIX.
Действия по восстановлению программ и/или данных при обнаружении ошибок в данных (в т.ч. при переходе на предыдущую версию ПО)#
Для обеспечения возможности отката к предыдущей или рабочей версии компонент NSIX или данных необходимо регулярно создавать резервные копии БД и каталогов сервера приложений компонента NSIX в соответствии с настоящим документом.
Действия в случаях обнаружения несанкционированного вмешательства в данные#
В случаях обнаружения несанкционированного вмешательства в данные необходимо посмотреть события изменения данных в компоненте Аудит (AUDT) продукта Platform V Audit SE (AUD), связаться с автором данных изменений и выяснить причины. Далее действовать по ситуации. С целью предотвращения несанкционированного вмешательства в данные до устранения проблемы рекомендуется остановить сервер приложений и сервер БД компонента NSIX.
Регламентные работы / работы по восстановлению#
Откат компонента NSIX
Для отката компонента NSIX к ранним версиям ПО после установки обновлений в самом простом случае достаточно изменить хеш-код sha256 текущего Docker-образа в строке image в конфигурационных файлах nsix-mdc-iv, nsix-mdc-jobs, nsix-mdc-kmd, nsix-mdc-ui и nsix-mdc-api. В более сложных случаях, если требуется изменить настройки Deployment Config и Config Maps на более ранние (например, если ранняя версия содержала ныне удаленную переменную), следует удалить текущую версию. В самом сложном общем случае, если были глобальные изменения (такие как переименование сущностей yaml), требуется удалить все объекты yaml в среде контейнеризации, относящиеся к Компоненту, и затем установить их из старого дистрибутива.
Откат БД
Для отката системы к БД более ранней версии компонента NSIX необходимо восстановить БД из созданной ранее резервной копии. Создание резервной копий данных и восстановление данных из резервной копии выполняется штатными утилитами (средствами) администрирования БД, такими как pg_dump и pg_restore соответственно. Информация об их использовании приведена в разделе Архивация дампов, копирование и восстановление настоящего Руководства по системному администрированию компонента Сервис управления справочными данными (NSIX).
Действия при ошибках работы api#
При загрузке больших файлов формата TransferReference приложение может выдавать ошибку следующего типа:
Ошибка выполнения POST запроса org.springframework.web.client.ResourceAccessException: I/O error on POST request for
"localhost:8080/mdc-api/rn/DEFAULT_TENANT/dictionary-version/content": Broken pipe (Write failed);
Данное исключение возникает при подаче больших файлов (около 1.5 гб)
Решение
Необходимо увеличить значение параметра MULTIPART_MAX_UPLOAD_SIZE в конфигурации проекта.
По умолчанию данный параметр принимает значение в 16 Мегабайт