Руководство по системному администрированию 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

Произошли ошибки при старте приложения

Следует собрать логи с приложения, на котором возникает ошибка и обратиться к технической поддержке. Это могут быть как ошибки в конфигурации, параметрах, сетевой маршрутизации, настройки баз данных, не верные сертификаты доступа