Руководство по системному администрированию#
Сценарии администрирования#
Для выполнения сценариев администрирования не требуется какая-либо роль согласно ролевой модели Компонента.
При deploy в системе контейнеризации все токены, пароли, сертификаты и иная чувствительная информация хранится в одном из типов хранилищ:
в секретах системы управления контейнерами;
в файловой системе pod. Все токены, пароли, сертификаты и иная чувствительная информация получена из внешней системы хранения секретов Secret Management System.
Стратегия снятия резервных копий зависит от критичности данных, подлежащих сохранению, и определяется группой сопровождения.
Компонент BPM User Plane (далее по тексту – BPMU) продукта Platform V Flow состоит из следующих модулей:
bpmu-data-index;
bpmu-console;
bpmu-testing;
один из модулей для режима аутентификации и авторизации bpmu-server-sudir/bpmu-server-token/bpmu-server-spas.
Для каждого из модулей есть файл application.properties, который содержит блоки для настроек. Основные настройки для сервисов:
bpmu-data-index
блок
kafka– настройки подключения к kafka (настройки описаны в разделе «Блок настроек BPMU»);блок
mp.messaging– настройки topics чтения истории;блок
auth— настройки, связанные с аутентификацией пользователя (рекомендуемые режимы и настройки);блок
audit– настройки для подключения к сервису аудита;блок
tracing– настройки для подключения к сервису tracing;блок
metric– настройки Spring actuator, необходимые для получения метрик;блок
oidc— настройки для аутентификации и авторизации.
Модули bpmu-console и bpmu-testing воспроизводятся на базовом образе Nginx. Особенности администрирования отсутствуют.
Для каждого из модулей для режима аутентификации и авторизации – bpmu-server-sudir/bpmu-server-token/bpmu-server-spas также есть файл application.yml. Информация о доступных настройках описана в документе «Настройки режимов аутентификации и авторизации пользователей».
К сценариям администрирования относятся все действия и настройки, указанные в этом разделе, а также просмотр журналов (logs) и метрик мониторинга.
Сценарий «Управление конфигурацией»#
Настройка аутентификации и авторизации#
Подробнее о каждом режиме аутентификации и авторизации описано в документе «Настройки режимов аутентификации и авторизации пользователей».
Если валидация не прошла успешно, приложение не запускается. В log-файл приложения добавляется соответствующая запись.
Блок настроек BPMU#
Настройка Prometheus/Объединенный мониторинг Unimon (MONA) Platform V Monitor (OPM)#
Для подключения компонента Объединенный мониторинг Unimon (MONA) Platform V Monitor (OPM) требуется указание дополнительных аннотаций в service.
prometheus.io.port = '8180' prometheus.io.path = '/q/metrics'
Список метрик доступен в разделе «События мониторинга».
Настройка подключения к БД#
Настройки bpmu-data-index осуществляются через файл application.properties.
Настройка подключения к БД осуществляется в блоке datasource:
db-kind– тип подключаемой БД;secretName– Имя секрета БД в SecMan;jdbc.url– адрес подключения к БД.
Создание структуры БД происходит автоматически во время инициализации (запуска) приложения.
Важно! Необходима установка расширения pg_trgm для конкретной схемы БД используемой сервисом индексирования
CREATE EXTENSION pg_trgm with schema bpmx_data_index_schema;
Отключение функционала автоматического обновления БД возможно с помощью настройки:
quarkus.liquibase.migrate-at-start: true
Настройка подключения к БД осуществляется в модуле bpmu-data-index компонента BPMU в блоке "PostgreSQL" документа «Используемые параметры bpmu-data-index.conf».
Настройка работы с PostgreSQL версии 12 и выше#
Активация режима работы с PostgreSQL версии 12 и выше осуществляется с помощью настройки:
data-index.enable-postgres-12-features
В случае, если фактически используется версия 12 и выше, но значение параметра равно false, приложение может работать нестабильно, и тогда будет отброшено соответствующее предупреждение в логи. В случае, если значение параметра равно true, но фактически используется версия PostgreSQL ниже 12, приложение будет принудительно приведено в режим работы как при параметре равном false, а в лог-файлы будет отброшено соответствующее предупреждение.
Настройка подключения к Kafka#
Настройка подключения к Kafka осуществляется в блоке kafka
kafka.bootstrap.servers– адрес kafka брокера.
Настройка topics чтения истории осуществляется в блоке mp.messaging
incoming.process-instance-update-event.topic– имя topic для чтения событий по экземплярам процессов;incoming.process-instance-update-event.group.id– идентификатор группы потребителей;incoming.process-instance-update-event.partitions– количество партиций topic.
Чтение событий может осуществляться посредством брокера сообщений Kafka и подробно описаны в блоках "Kafka Channel Process Instance" и "Kafka Channel Process" документа «Используемые параметры bpmu-data-index.conf».
Далее будут описаны схемы событий.
Схема события для экземпляров процессов
Поле |
Описание* |
|---|---|
id |
Идентификатор экземпляра процесса |
parentInstanceId |
Идентификатор экземпляра родительского процесса |
rootInstanceId |
Идентификатор экземпляра корневого процесса |
processId |
Идентификатор типа процесса |
processDefinitionId |
Идентификатор модели процесса |
resourceName |
Должно быть использовано в случае мультитенантности |
rootProcessId |
Идентификатор родительского типа процесса |
processName |
Человекочитаемое имя процесса |
startDate |
Дата-время старта экземпляра процесса |
endDate |
Дата-время завершения экземпляра процесса |
state |
Статус экземпляра процесса |
businessKey |
Бизнес-ключ процесса |
version |
Версия |
bamProjectId |
Идентификатор тенанта платформы |
extIds |
Набор внешних идентификаторов экземпляра процесса, обычно используется для систем трассировки. Набор – пары «ключ-значение» (Map) |
nodeInstances |
Массив шагов экземпляра процесса |
NodeInstance |
Шаг экземпляра процесса |
id |
Идентификатор экземпляра шага экземпляра процесса |
nodeId |
Идентификатор шага в рамках контейнера (в текущей реализации равен nodeDefinitionId) |
nodeDefinitionId |
Идентификатор типа шага процесса |
nodeName |
Человекочитаемое наименование экземпляра шага экземпляра процесса |
nodeType |
Тип шага процесса |
triggerTime |
Дата-время старта выполнения экземпляра шага |
leaveTime |
Дата-время завершения выполнения экземпляра шага |
state |
Статус шага |
htmTaskId |
Идентификатор пользовательской задачи в компоненте TaskList (UTSK) продукта Platform V Flow (BPM) |
error |
Текст ошибки на шаге |
retries |
Массив с информацией о повторах шага |
retry |
Повтор |
id |
Идентификатор повтора |
reason |
Причина повтора |
result |
Результат повтора |
time |
Дата-время повтора |
strategy |
Стратегия выполнения retry (линейный\интервальный) |
plannedDate |
Плановая дата старта |
factStartDate |
Фактическая дата старта |
factEndDate |
Фактическая дата завершения |
variables |
Массив переменных экземпляра процесса |
Error |
В данном блоке хранится последняя ошибка исполнения экземпляра процесса |
nodeId |
Идентификатор шага |
errorMessage |
Текст ошибки |
Информация, доступная о контексте процесса:
GlobalInstanceID – ID процесса (в формате UUID), который пользователи могут передавать со стартовым сообщением. Если GlobalInstanceID не задан явно, то он генерируется произвольно, также в формате UUID (BusinessKey не выводится в Контекст процесса, но фактически имеет то же значение, что и GlobalInstanceID);
FLOW_PID – служебное поле контекста (processInstanceID – идентификатор экземпляра процесса).
Настройка отправки сообщений в компонент продукта Platform V Audit SE (AUD) – Аудит (AUDT)#
Настройка отправки сообщений в компонент Аудит (AUDT) продукта Platform V Audit SE (AUD) осуществляется в блоке audit
proxyUri— адрес сервиса Аудит (AUDT) продукта Platform V Audit SE (AUD);proxyVersion— версия протокола взаимодействия (строка, возможное значение v1);eventMode— тип передачи данных в Аудит (AUDT) продукта Platform V Audit SE (AUD): Быстрый/Надежный (Speed/Reliability). По умолчанию Reliability;nodeId— имя namespace, в который устанавливается модуль, для передачи в Аудит (AUDT) продукта Platform V Audit SE (AUD) (ex. hostname);retryTimeout— время ожидания перед повторной отправкой сообщения (мс);maxQueueSize— максимальное количество сообщений в очереди на отправку в Аудит (AUDT) продукта Platform V Audit SE (AUD);timeout:connection-request— время ожидания подключения к сервису (мс);connect— время ожидания соединения (мс);read— время ожидания чтения сокета (мс).
Более подробно настройки указаны в разделе «Настройки аудита» документа «Используемые параметры bpmu-data-index.conf».
Настройка работы трейсинга#
Настройка работы трейсинга осуществляется в блоке quarkus.jaeger
metrics.enabled— включение/выключение трейсинга;endpoint— URL трейсинг-коллектора;service-name— наименование сервиса data-index в системе трейсинга;zipkin.compatibility-mode— формат отправки span (true – отправка span в формате zipkin).
Более подробно настройки указаны в разделе «Трейсинг» документа «Используемые параметры bpmu-data-index.conf».
Настройка отправки метрик#
Настройка отправки метрик осуществляется в блоке quarkus.smallrye-metrics
micrometer.compatibility— включение/выключение отправки метрик;jaxrs.enabled— включение jvm метрик.
Более подробно настройки указаны в разделе «Настройки метрик» документа «Используемые параметры bpmu-data-index.conf».
Настройки очистки истории и партиционирования#
Настройка механизма очистки удаленных данных из БД осуществляется в блоке kogito.data-index.history.
Механизм очистки удаляет данные из БД партициями по дате завершения родительского процесса.
clear.enabled— включение/выключение автоматической очистки истории;clear.schedule— настройка расписания в формате Cron;storage-depth-in-days— глубина партиций в днях, которые будут оставлены. Дата, с которой будут удаляться партиции = текущая дата – storage-depth-in-days;partition-size-in-days— количество партиций в сутках;create-partitions.schedule— настройка периодичности запуска механизма партиционирования данных в cronlike формате;create-partitions.days-to-create— количество дней, на которое будут созданы партиции.
Более подробно настройки указаны в разделе «Настройки очистки истории и партиционирования» документа «Используемые параметры bpmu-data-index.conf».
Настройка ограничения доступности процессов по бизнес-ролям#
Настройка ограничения доступности процессов по бизнес-ролям осуществляется в блоке data-index
owner-role-restriction— включение/выключение разграничения видимости процессов/экземпляров процессов по бизнес-ролям пользователя.
data-index:
owner-role-restriction: true
Настройка доступности контекста#
Настройка доступности контекста осуществляется в блоке data-index
context-visible— включение/выключение доступности контекста при выполнении graphQL запросов получения информации об экземпляре процесса.
data-index:
context-visible: true
Настройка работы с пользовательскими задачами#
Настройка интеграции с UTSK для завершения задачи осуществляется в блоке htm
enabled— включение интеграции с UTSK.url— url для обращения к system API UTSK.
htm:
enabled: true
url: http://some-host:8080/
Настройка работы с массовыми операциями#
Настройка работы с массовыми операция повтора и прерывания экземпляров процессов осуществляется в блоке bulk-operations:
timeout— максимальное доступное время для выполнения массовых операций (мс);count-limit— максимальное количество экземпляров для массовой операции.
bulk-operations:
timeout: 10000
count-limit: 10000
Настройка URL ресурса с документацией продукта Platform V Flow#
Настройка URL для перехода на ресурс с документацией продукта Platform V Flow осуществляется в блоке data-index:
documentation-url— url ресурса с документаций продукта Platform V Flow;
data-index:
documentation-url: https://example-doc-link/index.html
Варианты импорта моделей процессов#
Импорт через графический интерфейс тестовой консоли (bpmu-testing)#
В тестовой консоли (bpmu-testing) перейти в раздел Процессы и нажать на кнопку Загрузить.
Ввести Endpoint для загрузки (укажите URL модуля bpmx-gateway компонента Engine (BPMX) продукта Platform V Flow (BPN)), загрузить файл с моделью или архив через кнопку Загрузить.
Нажать на кнопку Загрузить.
В результате файл/архив с моделями будет загружен в BPMX.
Импорт с помощью CURL через GraphQL (для загрузки файлов)#
Необходимо выполнить запрос к bpmu-testing:
POST https://укажите Endpoint URL bpmu-data-index/graphiql
–form 'operations="{"query":"\n mutation uploadProcessesArchive($endpoint: String, $file: [Upload!]!) {\n ProcessesUploadArchive(endpoint: $endpoint, file: $file)\n}\n ","variables":{"endpoint":"http://укажите URL bpmx-gateway:8080","file":null},"operationName":"uploadProcessesArchive"}"'
–form 'map="{"1":["variables.files.0"],"2":["variables.files.1"],"3":["variables.files.2"]}"'
–form '1=@"…/simpleMessage-no-owner.bpmn"'
–form '2=@"…/simpleMessage-owner1.bpmn"'
–form '3=@"…/simpleMessage-owner2.bpmn"'
В данном случае Endpoint указывается в самом теле запроса.
Импорт с помощью CURL через GraphQL (для загрузки архива)#
Необходимо выполнить запрос к bpmu-testing:
POST https://укажите Endpoint URL bpmu-data-index/graphiql
Необходимо указать корректный токен пользователя и следующие параметры в теле запроса в виде form-data:
–form 'operations="{"query":"\n mutation uploadProcessesArchive($endpoint: String, $file: [Upload!]!) {\n ProcessesUploadArchive(endpoint: $endpoint, file: $file)\n}\n ","variables":{"endpoint":"http://bpmx-svc-bpmx-gateway-standID-unver:8080","file":null},"operationName":"uploadProcessesArchive"}"'
–form 'map="{"1":["variables.file"]}"'
–form '1=@"…/archivename.zip"' (полный путь до архива)
В данном случае Endpoint указывается в самом теле запроса.
Интеграция с внешними системами#
Интеграция с компонентом Аудит (AUDT) продукта Platform V Audit SE (AUD)#
В связи с требованиями безопасности рекомендуется осуществлять передачу информации о произведенных действиях в компонент Аудит (AUDT) продукта Platform V Audit SE (AUD).
Журнал регистрации событий, отправляемых в компонент Аудит (AUDT) продукта Platform V Audit SE (AUD), хранится в компоненте Аудит (AUDT) продукта Platform V Audit SE (AUD).
В файле конфигурации application.properties в сервисе bpmu-data-index в блоке audit представлены настройки подключения к аудиту.
Взаимодействие производится через Rest API.
Среда исполнения осуществляет отправку следующих данных для фиксации события в компоненте Аудит (AUDT) продукта Platform V Audit SE (AUD):
Метамодель;
Событие.
Вызываемое API зависит от режима работы Аудит:
Регистрация метамодели:
$audit_URL/v1/metamodel;
$audit_URL/v1/rn/{rn}/metamodel;
Отправка события:
$audit_URL/v1/event;
$audit_URL/v1/rn/{rn}/event.
Интеграция с компонентом Журналирование (LOGA) продукта Platform V Monitor (OPM)#
Протоколирование операций для их дальнейшего анализа осуществляется в следующую директорию:
-DloggingDir = home/logs
-DloggingJSONFile = log.json
Для отправки событий журнала в Logger sidecar-контейнер должен быть подключен к тому же каталогу, что обеспечит ему возможность чтения и обработки событий.
Для корректного разбора событий необходимо, чтобы формат событий соответствовал шаблону разбора fluent-bit. Формат событий описан в xml-файле конфигурации для библиотеки logback-spring.xml.
Рекомендации по использованию механизмов безопасности#
В рамках выполнения требований безопасной работы системы рекомендуется:
Предоставлять доступ к администрированию только сотрудникам, которым он необходим в соответствии с их должностными обязанностями.
Разделять среды разработки, тестирования и эксплуатации.
Администраторам системы осуществлять контроль использования средств защиты информации.
Использовать компоненты аутентификации, авторизации и аудита в качестве внешних средств защиты.
События системного журнала#
Все события, собираемые компонентом во время работы, публикуются в компоненте Журналирование (LOGA) продукта Platform V Monitor (OPM), далее по тексту – Журналирование.
Настройки интеграции с компонентом описаны в разделе «Интеграция с внешними системами».
События регистрируются в формате json. Журнал регистрации событий располагается в АРМ Журналирование (LOGA) продукта Platform V Monitor (OPM). Местоположение АРМ сервиса Журналирования необходимо уточнять у администраторов сред.
Регистрируются события уровней:
TRACE – менее приоритетные записи (logs) для отладки, с наименьшим уровнем логирования;
DEBUG – записи (logs), необходимые для отладки приложения. Для уверенности в том, что приложение делает именно то, что от нее ожидают, или описания действия приложения;
INFO – записи (logs), которые записывают важные действия в приложении. Это не ошибки, это не предостережение, это ожидаемые действия приложения;
WARN – обозначаются записи (logs), которые содержат предостережение. Произошло неожиданное действие, несмотря на это приложение устояло и выполнило запрос;
ERROR – уровень ошибок, когда есть проблемы, которые нужно решить. Ошибка не останавливает работу приложения в целом. Остальные запросы могут работать корректно;
FATAL – ошибка, после которой приложение уже не сможет работать и будет остановлено.
События уровней Trace и Debug не рекомендуется включать в ПРОМ среде.
Перечень событий модуля bpmu-data-index:
Уровень |
Текст/шаблон сообщения |
Перевод |
|---|---|---|
ERROR |
The number of process instances not counted due to timeout. |
Превышение времени ожидания выполнения запроса |
ERROR |
The number of process instances exceeds the allowed limit {}. |
Превышено допустимое количество идентификаторов экземпляров процессов |
ERROR |
Process instances will not be scheduled for the operation due to timeout. |
Превышение времени ожидания выполнения запроса |
ERROR |
Process instances will not be scheduled for the operation due to exceeding the number of instances limit {}. |
Превышено допустимое количество идентификаторов экземпляров процессов |
ERROR |
The operation will be completed partially |
Один из engine вернул ошибку планирования операции |
ERROR |
Not found processInstance for recover operation, try to change filters |
Не найден ни один экземпляра процесса |
ERROR |
File must be of type: {}. Wrong file: {} |
Файл должен быть формата: {}. Некорректный файл: {}. |
ERROR |
ProcessDefinition with processId {} not found |
Процесс с идентификатором processId {} не найден. |
ERROR |
Not found processInstances for terminate operation, try to change filters |
Не найден ни один экземпляра процесса |
WARN |
Unknown audit mode: {}. Set default mode value: {} |
Неизвестный режим аудита: {}. Установите режим аудита по умолчанию: {} |
WARN |
Audit mode is empty. Set default mode value: {} |
Режим аудита пуст. Установите режим аудита по умолчанию: {} |
WARN |
Error while get host address {} |
Ошибка получения хоста адреса аудита {} |
TRACE |
Initializing AuditService |
Инициализация сервиса аудита |
INFO |
Deploy model(s) to Engine. Service URL: {}, upload files: {} |
Выполнен deploy процессов в Engine. URL сервиса {}, загруженные файлы {} |
INFO |
Start Process with processId: {}. Service URL: {}, body: {} |
Запущен процесс с идентификатором: {}. URL сервиса {}, тело запроса {} |
INFO |
Send Respond with processInstanceId: {}, serviceURL: {}, body: {} |
Отправлен Respond с processInstanceId: {}, URL сервиса: {}, тело запроса: {} |
DEBUG |
Sending Audit event |
Отправлено событие аудита |
DEBUG |
Process consumer received ProcessEvent: {} |
Потребитель процесса получивший ProcessEvent: {} |
DEBUG |
Append operationId:{} to processDefinition, PID: {} and increment operation.current_count |
Добавлен operationId:{} к процессу, PID: {} и увеличено значение operation.current_count |
WARN |
The Postgres version in the application settings does not match the one actually used. The application is forced to work with Postgres version below 12. |
Версия Postgres в настройках приложения не совпадает с фактически используемой. Приложение принудительно переводится в режим работы с Postgres версии ниже 12. |
WARN |
You are using Postgres version 12 or higher, but the corresponding data-index setting is not enabled. For stable operation, it is recommended to set the data-index.enable-postgres-12-features parameter to true. |
Используется версия Postgres 12 или выше, но не активирована соответствующая настройка data-index. Для стабильной работы рекомендуется перевести параметр data-index.enable-postgres-12-features в true. |
WARN |
The value found by jsonPath {} has no matches for regExp {}. Hiding it completely. |
Переменная, найденная по jsonPath {}, не соответствует regExp {} и будет замаскирована полностью. |
Трассировка запросов#
В некоторые события логирования после включения и настройки сервиса трассировок (группа настроек tracing) будут добавлены заголовки x-request-chain-id входящих HTTP-запросов.
По умолчанию данные категории имеют уровень логирования "ERROR".
События мониторинга#
Настройки интеграции с компонентом описаны в разделе «Настройка Prometheus/Объединенный мониторинг Unimon (MONA) Platform V Monitor (OPM)».
Предварительно потребитель должен создать подключение к компоненту Объединенный мониторинг Unimon (MONA) Platform V Monitor (OPM), используя соответствующий resourceName.
Метрики выставляются в формате prometheus. Подробная информация о выставляемых метриках в документации:
Для отключения сбора метрик производительности UI необходимо отключить настройку data-index.metrics.ui.publish=false (по умолчанию прописано значение true)
Метрики bpmu-data-index
Метрика |
Описание |
Лейблы |
|---|---|---|
application_bpmx_dataindex_db_availability |
Метрика состояния соединения с БД 1 – соединение установлено, 0 – нет соединения. Для пула соединений – количество соединений с разбивкой по статусам соединений |
– |
application_bpmx_dataindex_db_record_last |
Метка времени самой свежей записи в БД. Обновляется при чтении записи из истории kafka |
– |
application_bpmx_dataindex_event_event_processing_time |
Время обработки событий kafka (мс) |
– |
application_bpmx_dataindex_event_total |
Количество обработанных событий из kafka |
– |
application_bpmx_dataindex_event_successful_total |
Количество успешно обработанных событий из kafka |
– |
application_bpmx_dataindex_event_failure_total |
Количество ошибок при чтении событий из kafka |
– |
application_bpmx_dataindex_audit_availability |
Метрика состояния клиента 0 – не инициализирован, 1 – ошибка отправки, 2 – асинхронная отправка, 3 – синхронная отправка |
– |
application_bpmx_dataindex_audit_total |
Общее количество событий |
– |
application_bpmx_dataindex_audit_successful_total |
Количество успешно отправленных событий |
– |
application_bpmx_dataindex_audit_errors_service_total |
Количество незарегистрированных событий аудита |
– |
application_bpmx_dataindex_audit_errors_connection_total |
Количество неудачных попыток подключения к серверу |
– |
application_bpmx_dataindex_graphql_response_time_seconds_count |
Количество запросов во внешние сервисы |
– |
application_bpmx_dataindex_graphql_response_time_seconds_sum |
Время выполнения запросов во внешние сервисы в секундах |
– |
application_bpmx_dataindex_graphql_response_time_max_seconds |
Максимальное время выполнения запросов во внешние сервисы в секундах |
– |
application_availability |
Доступность сервиса. Наименование сервиса указано в лейбле app="data-index" |
– |
bpmu_fcp_process_instances |
Время с момента начала загрузки страницы со списком экземпляров процессов до момента, когда какая-либо часть содержимого страницы отобразится на экране |
– |
bpmu_fcp_process_instance |
Время с момента начала загрузки страницы с экземпляром процесса до момента, когда какая-либо часть содержимого страницы отобразится на экране. В разрезе id экземпляра |
– |
bpmu_fcp_processes |
Время с момента начала загрузки страницы со списком процессов до момента, когда какая-либо часть содержимого страницы отобразится на экране |
– |
bpmu_fcp_process |
Время с момента начала загрузки страницы с процессом до момента, когда какая-либо часть содержимого страницы отобразится на экране. В разрезе id процесса и модуля, в котором исполняется процесс |
– |
bpmu_lcp_process_instances |
Время рендеринга самого большого изображения или текстового блока с момента начала загрузки страницы со списком экземпляров процессов |
– |
bpmu_lcp_process_instance |
Время рендеринга самого большого изображения или текстового блока с момента начала загрузки страницы с экземпляром процесса. В разрезе id экземпляра |
– |
bpmu_lcp_processes |
Время рендеринга самого большого изображения или текстового блока с момента начала загрузки страницы со списком процессов |
– |
bpmu_lcp_process |
Время рендеринга самого большого изображения или текстового блока с момента начала загрузки страницы с процессом. В разрезе id процесса и модуля, в котором исполняется процесс |
– |
bpmu_inp_process_instances |
Максимальное время задержки во взаимодействии пользователя со страницей со списком экземпляров процессов |
– |
bpmu_inp_process_instance |
Максимальное время задержки во взаимодействии пользователя со страницей с экземпляром процесса. В разрезе id экземпляра |
– |
bpmu_inp_processes |
Максимальное время задержки во взаимодействии пользователя со страницей со списком процессов |
– |
bpmu_inp_process |
Максимальное время задержки во взаимодействии пользователя со страницей с процессом. В разрезе id процесса и модуля, в котором исполняется процесс |
– |
bpmu_user_browser |
Используемый для отображения страниц браузер. Значение версии включает в себя и мажорную, и минорную |
name, version |
bpmu_user_viewport |
Размеры видимой пользователю области страницы, которая доступна без прокрутки |
viewport |
Часто встречающиеся проблемы и пути их устранения#
Проблемы поведения модуля bpmu-data-index#
Диагностирование и решение проблем поведения модуля bpmu-data-index:
Если после запуска процесса на UI не отображается информация о запущенном экземпляре и в лог-записях модуля bpmx-engine компонента Engine (BPMX) продукта Platform V Flow (BPM) присутствует запись [WARN] "There is a difference in assigned asyncJobs and asyncStart partition numbers!" – необходимо сверить количество партиций в topics asyncJobs и asyncStart – оно должно быть одинаковым. В случае расхождения необходимо привести количество партиций к одному значению.
Если изменение параметра pidPrefix не приводит к ожидаемым изменениям в генерации PID процесса, то проверьте наличие настройки параметра pidPrefix для двух модулей компонента BPMX: bpmx-gateway, bpmx-engine (файлы темплейтов bpmx-gateway-config.yaml и bpmx-engine-config.yaml).
Ошибки в лог-записях модуля bpmu-data-index:
"Can't deserialize message. In topic: {}. Error: {}".
"Problem with deserialization or received the message with null body".
"Can't save the message to history …".
Появление данных ошибок свидетельствует о том, что модуль bpmu-data-index получает сообщения в неверном формате. Требуется установить источник сообщения и проверить настройки модуля-источника.
В случае возникновения ошибки вида "no healthy upstream" (отсутствует сетевая доступность с bpmu-dataindex) необходимо:
проверить pod bpmu-data-index;
поднять pod bpmu-data-index в случае необходимости;
проверить корректность настройки route.
Проблемы при старте процессов#
При старте процесса экземпляр не отображается на UI, а в лог-файлах присутствует запись [WARN] "Context cache size limit exceeded ({} > {}). New instances will not be started." Необходимо освободить текущий кеш (завершив процессы, находящиеся в статусе "Инцидент", если это возможно) или увеличить размер параметра engine.instanceCacheSoftLimit компонента BPMX в совокупности с лимитами памяти pod 'bpmx-engine'.
Проблемы в работе БД#
Приложение работает нестабильно, а в лог-файлах присутствует запись
The Postgres version in the application settings does not match the one actually used. The application is forced to work with Postgres version below 12.Причина в том, что при включенном режиме работы с PostgreSQL версии 12 и выше фактически используется PostgreSQL меньшей версии. Приложение было принудительно переведено к режиму работы с PostgreSQL ниже 12 версии.Приложение работает нестабильно, а в лог-файлах присутствует запись
You are using Postgres version 12 or higher, but the corresponding data-index setting is not enabled. For stable operation, it is recommended to set the data-index.enable-postgres-12-features parameter to true.Причина в том, что используется версия PostgreSQL 12 или выше, но не активирована соответствующая настройка. Необходимо осуществить корректную настройку параметраdata-index.enable-postgres-12-features. Подробнее можно прочитать в разделе «Настройка работы с PostgreSQL версии 12 и выше».
Проблемы при создании партиций#
При автоматическом создании партиций по cron может появиться ошибка из-за которой партиции не будут создаваться:
Caused by: org.postgresql.util.PSQLException: ERROR: updated partition constraint for default partition "processes_running" would be violated by some row
Where: SQL statement "create table processes_2023_10_17 partition of processes for values from ('2023-10-17') to ('2023-10-20')"
Необходимо проверить таблицы processes_running и nodes_running на наличие записей, имеющих end_time не равный null. Эти экземпляры с их node необходимо перенести в отдельные, буферные таблицы, и удалить перенесенные экземпляры из *_running.
Далее дождаться автоматического создания партиций, либо создать их с учетом настроек в data-index для партиционирования. Важно учесть, чтобы на все экземпляры были созданы партиции. Это можно узнать, посмотрев время завершения экземпляра и диапазон партиции.
Из буферных таблиц перенести данные в созданные таблицы с учетом времени завершения.
Скрипт для создания партиций экземпляров:
create table processes_{DATE_FROM} partition of processes for values from ('DATE_FROM') to ('DATE_TO');
Скрипт для создания партиций node:
create table nodes_{DATE_FROM} partition of nodes for values from ('DATE_FROM') to ('DATE_TO');
Ошибка в случае большого количества операций с процессом/экземпляром#
В случае большого количества выполненных операций с процессом/экземпляром возникает ошибка сохранения данных в БД модуля bpmu-data-index компонента BPMU:
2023-10-18 08:17:49,346 WARN [org.hib.eng.jdb.spi.SqlExceptionHelper] (pool-17-thread-1) SQL Error: 0, SQLState: 54000
2023-10-18 08:17:49,347 ERROR [org.hib.eng.jdb.spi.SqlExceptionHelper] (pool-17-thread-1) ERROR: index row size 2720 exceeds btree version 4 maximum 2704 for index "operation_ids_index"
Detail: Index row references tuple (5,5) in relation "process_definition".
Hint: Values larger than 1/3 of a buffer page cannot be indexed.
Consider a function index of an MD5 hash of the value, or use full text indexing.
Для устранения проблемы необходимо воспользоваться sql скриптом очистки операций clean_operation_ids.sql, поставляемом в дистрибутиве.