Руководство по системному администрированию Platform V Exchange Rates#
Термины и сокращения#
Термин |
Определение |
|---|---|
API |
Application programming interface – программный интерфейс приложения |
АС |
Автоматизированная система |
БД |
База данных |
ЕКПиТ |
Единый каталог продуктов и тарифов (опциональная интеграция) |
Сериализация |
Процесс перевода структуры данных в последовательность байтов |
Среда контейнеризации |
Рекомендуется Kubernetes, опционально поддерживается совместимость с Red Hat OpenShift 4+ |
Сценарии администрирования#
Администратору рекомендуется регулярно выполнять:
контроль состояния работы Platform V Exchange Rates;
мониторинг производительности Platform V Exchange Rates.
При выявлении нештатных ситуаций необходимо:
проверить работоспособность всех сервисов Platform V Exchange Rates;
проверить логи на наличие ошибок, возможно c помощью компонента Журналирование продукта Platform V Monitor (примеры логов представлены в разделе События системного журнала настоящего документа).
В рамках выполнения требований безопасной работы Platform V Exchange Rates Администратор выполняет следующие функции:
несет ответственность за качество проводимых им работ;
следит за сроками действия сертификатов.
Доступ к Platform V Exchange Rates имеют только те сотрудники, которым он необходим в соответствии с их должностными обязанностями. Доступ должен ограничиваться минимально необходимым объемом данных. Должны разделяться среды разработки, тестирования и эксплуатации, при этом, необходимо производить разделение обязанностей между разработчиками АС, тестирующим персоналом.
Специалисты, занимающиеся администрированием Platform V Exchange Rates, должны обладать следующими навыками:
развертывание и администрирование приложений в среде контейнеризации;
работа с СУБД PostgreSQL (рекомендуется Platform V Pahgolin SE).
Описание настроек#
В Platform V Exchange Rates настройки конфигурации выполняются с помощью следующих способов:
средств управляемой среды (через консоль OpenShift);
автоматизированной процедуры (выполняется при инсталляции); 3) через инструмент Конфигуратор (только для 3-го поколения).
Требования к составу настроек конфигурации:
− description: JDBC driver for main currency rates database
name: DB_CURRATE_MAIN_DRIVER
− description: Connection string for main currency rates database
name: DB_CURRATE_MAIN_URL
− description: JDBC driver for si currency rates database
name: DB_CURRATE_STANDIN_DRIVER
− description: Connection string for si currency rates database
name: DB_CURRATE_STANDIN_URL
− description: JDBC driver for main ekpit database
name: DB_EKPIT_MAIN_DRIVER
− description: Connection string for main ekpit database
name: DB_EKPIT_MAIN_URL
− description: JDBC driver for si ekpit database
name: DB_EKPIT_STANDIN_DRIVER
− description: Connection string for si ekpit database
name: DB_EKPIT_STANDIN_URL
− description: Owner schema name for currency rates databases (main and SI)
name: DB_CURRATE_OWNER_SCHEMA
value: CURRENCY_RATES
− description: Owner schema name for ekpit databases (main and SI)
name: DB_EKPIT_OWNER_SCHEMA
value: EKPIT
− description: Enable/disable sql query log for currency rates datasource
name: DB_CURRATE_SHOW_SQL
value: 'false'
− description: The minimum number of idle connections for currency rates databases
name: DB_CURRATE_MIN_IDLE
value: '5'
− description: The maximum number of connections in the pool for currency rates databases
name: DB_CURRATE_MAX_POOL_SIZE
value: '20'
− description: Enable/disable sql query log for ekpit datasource
name: DB_EKPIT_SHOW_SQL
value: 'false'
− description: The minimum number of idle connections for ekpit databases
name: DB_EKPIT_MIN_IDLE
value: '5'
− description: The maximum number of connections in the pool for ekpit databases
name: DB_EKPIT_MAX_POOL_SIZE
value: '20'
− description: The minimum spare worker threads
name: WORKER_THREADS_MIN_SPARE
value: '10'
− description: The maximum worker threads
name: WORKER_THREADS_MAX
value: '200'
− description: The maximum active jta transactions
name: JTA_MAX_ACTIVE_TRANSACTIONS
value: '50'
− description: JVM property for spring.config.additional−location
name: SPRING_CONFIG_ADDITIONAL_LOCATION
value: −Dspring.config.additional−location=/opt/etc/aj−kafka−security.yaml
− description: Enable/disable (false/true) integration with application−journal
name: STANDIN_CLOUD_CLIENT_STUB
value: 'false'
− description: Application−journal kafka brokers
name: STANDIN_CLOUD_CLIENT_KAFKA_BOOTSTRAP_SERVERS
− description:
name: STANDIN_ZONE_ID
value: CV
− description: Enable/disable usage NSI FACADE (true) or DB EKPIT (false)
name: USE_NSI_FACADE
value: 'true'
− description: NSI FACADE host address
name: NSI_FACADE_HOST
− description: NSI FACADE port
name: NSI_FACADE_PORT
value: '80'
− description: Enable/disable (false/true) sending messages to audit (enabled by default)
name: DISABLE_AUDIT
value: 'false'
− description: Audit host address
name: AUDIT_HOST
События системного журнала#
Для системного журнала применимы следующие уровни логирования:
FATAL — критические ошибки, при которых невозможна работа приложения.
Error — записываются сообщения обо всех ситуациях или событиях в приложении, которые считаются ошибочными:
ошибки вызова компонентов платформы;
ошибки интеграционных вызовов.
Warning — предупреждения.
Info — информация о работе приложения и текущем состоянии процессов.
Debug — подробности о работе приложения, позволяющие восстановить последовательность выполнения операций при обслуживании вызовов и вызовах внешних систем.
TRACE — подробные записи о действиях приложения. Нужны в исключительных случаях для отладки.
Все события попадают в платформенный журнал.
Описание событий error:
Класс |
Сообщение |
Причина возникновения |
|---|---|---|
CachePersistenceImpl |
cache {} is null |
Возникает если кеш с нужным именем не найден |
ObjectUtils |
Возникла ошибка в момент парсинга объекта |
Возникает если парсинг объекта произошел с ошибкой |
ContextAvailabilityMonitor |
Ошибка мониторинга |
Возникает если при установке значения метрики для сервиса мониторинга произошла ошибка |
ContextAvailabilityMonitor |
Ошибка при проверке доступности БД ЕКПиТ ({}) |
Возникает при ошибках проверки доступности БД ЕКПиТ |
ContextAvailabilityMonitor |
Ошибка при проверке доступности БД Platform V Exchange Rates ({}) |
Возникает при ошибках проверки доступности БД Platform V Exchange Rates |
OfficesCacheWarmer |
cache {} is null |
Возникает если кеш с нужным именем не найден |
CompensationServiceImpl |
При компенсации объектов произошла ошибка |
Возникает при ошибках компенсации объектов |
WarmUpCacheServiceImpl |
Error in warming |
Возникает при ошибках при разогреве кеша с данными |
RateRequestDaoHibernateImpl |
segmentsIds are empty |
Возникает, когда при подготовке sql запроса для поиска распоряжений передан пустой список ай ди сегментов |
RateRequestDaoHibernateImpl |
Сегментов нашлось больше, чем может поместиться в in условие запроса. Срочно обратитесь к разработчикам Platform V Exchange Rates. количество {} шт |
Возникает, когда при подготовке sql запроса для поиска распоряжений передан список ай ди сегментов содержащий более 1000 записей |
CurrencyAuditServiceImpl |
Ошибка аудита |
Возникает если при отправке события в аудит произошла ошибка |
CurrencyRatesSaverServiceImpl |
Ошибка сохранения курсов из Platform V Exchange Rates |
Общая ошибка при неудачном сохранения курсов из Platform V Exchange Rates |
CurrencyRatesSaverServiceImpl |
Ошибка валидации входящего распоряжения |
Возникает при ошибки валидации входящего распоряжения |
CurrencyRatesSaverServiceImpl |
Ошибка при сохранении входящего распоряжения |
Общая ошибка при неудачном сохранении входящего распоряжения |
CurrencyRatesSaverServiceImpl |
Unknown additional info %s |
Случается при загрузке курсов из журнала Компонент Прикладной журнал продукта Platform V Data Tools когда доп информация из данных объекта из журнала Компонент Прикладной журнал продукта Platform V Data Tools имеет неизвестный подтип |
CurrencyRatesSaverServiceImpl |
Ошибка при сохранении АРК сообщения из Компонент Прикладной журнал продукта Platform V Data Tools |
Общая ошибка при неудачном сохранении АРК сообщения из Компонент Прикладной журнал продукта Platform V Data Tools |
CurrencyRatesSaverServiceImpl |
Something is wrong with saving EOD price [unknown rquid] from PJ: %s |
Происходит при преобразовании XML данных из Компонент Прикладной журнал продукта Platform V Data Tools журнала, в случае если в них содержится неизвестный rquid |
CurrencyRatesSaverServiceImpl |
Something is wrong with saving EOD price [unknown rquid] from PJ: %s |
Общая ошибка происходит при неудачном сохранении сообщения |
CurrencyRatesSaverServiceImpl |
Something is wrong with saving ExrCurrency from PJ |
Общая ошибка при неудачном добавлении валюты из журнала Компонент Прикладной журнал продукта Platform V Data Tools для сохранения |
CurrencyRatesSaverServiceImpl |
Ошибка обработки сообщения от Platform V Exchange Rates |
Общая ошибка при проблемах с обработкой сообщения отPlatform V Exchange Rates |
CurrencyRatesSaverServiceImpl |
Ошибка при сохранении входящего распоряжения |
Общая ошибка возникает при ошибках сохранения распоряжение на сохранение курса ЮЛ от АС АРК |
CurrencyRatesSaverServiceImpl |
Ошибка при отправке сообщения в Компонент Прикладной журнал продукта Platform V Data Tools |
Возникает при возникновении ошибок при отправке распоряжения на сохранение курса в Компонент Прикладной журнал продукта Platform V Data Tools |
CurrencyRatesSaverServiceImpl |
Произошла ошибка при сохранении распоряжения из прикладного журнала |
Происходит при ошибках в сохранении распоряжения присланного из Компонент Прикладной журнал продукта Platform V Data Tools |
CurrencyRatesSaverServiceImpl |
Ошибка обработки сообщения от Platform V Exchange Rates: {} |
Возникает при ошибках сохранения Platform V Exchange Rates |
CurrencyRatesSaverServiceImpl |
Произошла ошибка при отправке сообщения в Компонент Прикладной журнал продукта Platform V Data Tools: + сообщение |
Возникает при ошибках отправки курсов из Platform V Exchange Rates в Компонент Прикладной журнал продукта Platform V Data Tools |
CurrencyRatesSaverServiceImpl |
Произошла ошибка при компенсации данных |
Возникает если случаются ошибки при компенсации данных, начатой из-за ошибки при отправке сообщения в Компонент Прикладной журнал продукта Platform V Data Tools |
LegalRateServiceImpl |
Все входные параметры обязательны и не могут быть пустыми |
Возникает если какой либо параметр для поиска курсов пустой |
ExrRateServiceImpl |
Курс ЦБ для валюты %s отсутствует |
Возникает если в БД не удалось найти курс ЦБ |
ExrRateServiceImpl |
Переданные валюты не найдены в справочнике %s |
Возникает если в БД не удалось найти валюты по переданным кодам |
IndividualRateServiceImpl |
Все входные параметры обязательны и не могут быть пустыми |
Возникает если какой либо параметр для поиска курсов пустой |
IndividualRateServiceImpl |
Подходящее распоряжение не найдено: [%s%s%s] - [{%s}] - [{%s}] |
Возникает когда по текущим входным данным не найдено распоряжение в БД |
IndividualRateServiceImpl |
Модуль курса валют. Подходящее распоряжение не найдено: [%s%s%s] - [{%s}] - [{%s}] |
Возникает когда переданы пустая коллекция распоряжений для поиска курсов валют |
IndividualRateServiceImpl |
Модуль курса валют. Распоряжение относится к курсам для мерных слитков. Rquid: %s |
Возникает когда распоряжение не содержит курсов валют |
IndividualRateServiceImpl |
сообщение от исключения |
Возникает если единица измерения не найдена |
IndividualRateServiceImpl |
Модуль курса валют. Отсутствует курс валют. Регион: %s; Региональное отделение: %s; ВСП: %s; тип валюты: %s; Код базовой валюты: %s |
Ошибка возникает когда не удалось найти курс валют для заданных кодов |
IndividualRateServiceImpl |
Модуль курса валют. Отсутствует курс для металла. Регион: %s; Региональное отделение: %s; ВСП: %s; тип валюты: %s;Код металла: %s; Покупка: %s |
Ошибка возникает когда не удалось найти курс для металла для заданных кодов |
IndividualRateServiceImpl |
Отсутствуют диапазоны курса |
Ошибка в методе подготовки курсов для распоряжений если не переданы выборочные распоряжения |
ExchangeRatesForLegalEntitiesImpl |
Отсутствует обязательный параметр [%s] |
Возникает в методе для получения курсов ЮЛ при валидации запроса для курса ЮЛ в случае когда дата запроса отсутствует |
ExchangeRatesForLegalEntitiesImpl |
Отсутствует обязательный параметр [%s] |
Возникает в методе для получения курсов ЮЛ при валидации запроса для курса ЮЛ в случае когда в запросе отсутствуют курсы |
ExchangeRatesForLegalEntitiesImpl |
Не поддерживаемый тип финансовых инструментов [%s] |
Возникает в методе для получения курсов ЮЛ когда передан неизвестный тип инструмента |
ExchangeRatesForLegalEntitiesImpl |
{сообщение от пойманного исключения} |
Возникает при пойманных исключениях во время выполнения запроса для курса ЮЛ |
RatesXlsxImportFromResourceServiceImpl |
Ошибка при импорте исторических данных {} |
Возникает при импорте исторических данных когда статус ответа при сохранении курсов КФИ не равен статусу ОК |
RatesXlsxImportFromResourceServiceImpl |
Ошибка при импорте исторических данных {} |
Возникает при импорте исторических данных когда во время сохранения курсов КФИ произошла ошибка |
RatesXlsxImportFromResourceServiceImpl |
Ошибка при импорте исторических данных. Отсутствует источник |
Возникает при импорте исторических данных когда не удалось обнаружить источник с данным |
RatesXlsxImportFromResourceServiceImpl |
Ошибка при импорте исторических данных |
Возникает при импорте исторических данных когда произошло что-то не так. Общая ошибка |
Описание событий warn:
Класс |
Сообщение |
Причина возникновения |
|---|---|---|
WarmUpCacheServiceImpl |
Error in warming |
При любом пойманном исключении при разогреве кеша |
RateRequestDaoHibernateImpl |
запрос {} был уже изменен |
Возникает в случае когда проверка номера версии или метки не выполнилась |
RatesTypeDaoImpl |
В запросе присутствуют взаимоисключающие даты |
Происходит при получении ставки межбанковского кредитования, когда дата использования совпадает с датой публикации |
RatesTypeDaoImpl |
В запросе отсутствуют даты |
Происходит при получении ставки межбанковского кредитования, когда дата использования и дата публикации переданы пустыми |
RatesTypeDaoImpl |
На указанные наименование [%s] и дату [%s] ставки отсутствуют |
Возникает если не удалось найти ставку в БД для переданной даты запроса и имени ставки |
JsonServiceImpl |
Не удалось сериализовать объект |
Возникают при ошибках сериализации |
CurrencyRatesSaverServiceImpl |
Ошибка обработки сообщения от Platform V Exchange Rates: {} |
Общая ошибка возникает при обработке сообщения-запроса для передачи курсов валют и курсов металлов |
CurrencyRatesSaverServiceImpl |
Начинаем процедуру компенсации закомиченных данных |
Появляется при ошибке при отправке сообщения в Компонент Прикладной журнал продукта Platform V Data Tools |
CurrencyRatesSaverServiceImpl |
Данные успешно компенсированы |
Сообщение об успешно компелированных данных при отправке в Компонент Прикладной журнал продукта Platform V Data Tools |
RateAveragesServiceImpl |
Не найдены курсы ЦБ для валюты %s в интервале %s-%s |
Возникает когда не удалось найти курсы ЦБ в указанный период дат |
RateRequestMonitorServiceImpl |
Ошибка сортировки списка распоряжений |
Возникает при ошибка сортировки распоряжений |
CurrencyRateFilterImpl |
фильтрация использует неоптимальную версию |
Возникает при ошибка в методе получения подходящего сегмента для запроса |
SanitizedStringSerializer |
Разные строки после санитайза. Было: {}, Стало {} |
Происходит во время сериализации когда санитизированное строка не равна исходной строке |
События мониторинга (monitoring-events)#
Все микросервисы продукта публикуют прикладные метрики стандартным для управляемой среды выполнения способом (через «сервис» prometheus).
Прикладные метрики Platform V Exchange Rates
Идентификатор метрики |
Описание |
|---|---|
+ ".DurationTimer" |
Время выполнения методов API |
+ ".ApiCallsCounter" |
Количество вызовов |
+ ".ErrorsCounter" |
Количество ошибок |
Для времени выполнения метода также предоставляются данные, для построения гистограммы по процентному соотношению (для отсечек в 50%, 80%, 95% случаев). Кроме того отдельно регистрируются непредвиденные долгие и быстрые случаи выполнения методов (более 2 сек, и менее 5мс), а также отклонения от ожидаемого значения (100мс). Метрики по длительности выполнения одного из методов API, передаются в мониторинг, который производит их анализ.
Часто встречающиеся проблемы и пути их устранения#
В данном разделе собраны наиболее частые проблемы и описаны пути их устранения.
Проблема |
Причина |
Способ устранения |
|---|---|---|
Старая версия приложения |
— |
Ручной рестарт pod |
Произошли ошибки при старте приложения |
Следует собрать логи с приложения, на котором возникает ошибка и обратиться к технической поддержке. Это могут быть как ошибки в конфигурации, параметрах, сетевой маршрутизации, настройки баз данных, не верные сертификаты доступа |