Руководство по системному администрированию#
Сценарии администрирования#
Сценарии, приведенные в этом разделе, выполняются администратором инфраструктуры.
Администратору рекомендуется регулярно выполнять:
контроль состояния работы Platform V Exchange Rates;
мониторинг производительности Platform V Exchange Rates.
При выявлении нештатных ситуаций необходимо:
проверить работоспособность сервисов Platform V Exchange Rates, а именно:
crtx-cb-cloud-app – сервис для курсов ЦБ РФ,
crtx-financial-quotes-cloud-app – курсы публичных финансовых инструментов,
crtx-interbank-rates-cloud-app – ставки межбанковского кредитования,
crtx-individual-cloud-app – курсы СБ РФ для физических лиц,
crtx-legal-cloud-app app – курсы СБ РФ для юридических лиц,
crtx-supplementary-cloud-app – «вспомогательные» API. Сервисы сrtx-ark-rates receiver-cloud-app, сrtx-messenger-cloud-app не проверяются "снаружи".
В случае наличия проблем, они будут зафиксированы в лог-файлах. Проверить логи на наличие ошибок, возможно c помощью опционального компонента Журналирование (LOGA) компонента Platform V Monitor (примеры логов представлены в разделе События системного журнала настоящего документа).
В рамках выполнения требований безопасной работы Platform V Exchange Rates Администратор выполняет следующие функции:
несет ответственность за качество проводимых им работ;
следит за сроками действия сертификатов.
При возникновении внештатных ситуаций Администратор должен иметь возможность работы с БД Продукта.
Доступ к Platform V Exchange Rates имеют только те сотрудники, которым он необходим в соответствии с их должностными обязанностями. Доступ должен ограничиваться минимально необходимым объемом данных. Должны разделяться среды разработки, тестирования и эксплуатации, при этом, необходимо производить разделение обязанностей между разработчиками АС, тестирующим персоналом.
Специалисты, занимающиеся администрированием Platform V Exchange Rates, должны обладать следующими навыками:
развертывание и администрирование приложений в среде контейнеризации Kubernetes или Red Hat OpenShift 4+;
работа с СУБД PostgreSQL (рекомендуется Platform V Pangolin SE).
Описание настроек#
В Platform V Exchange Rates настройки конфигурации выполняются с помощью следующих способов: 1) средств управляемой среды (через консоль среды контейнеризации); 2) автоматизированной процедуры (выполняется при инсталляции) с использованием job в jenkins. Ниже приведено описание параметров, входящих в состав настроек конфигурации:
− описание: имя JDBC драйвера для основной БД валютных курсов
имя: DB_CURRATE_MAIN_DRIVER
− описание: строка с url для подключения к основной БД
имя: DB_CURRATE_MAIN_URL
− описание: имя JDBC драйвера для резервной БД валютных курсов
имя: DB_CURRATE_STANDIN_DRIVER
− описание: строка с url для подключения к резервной БД валютных курсов
имя: DB_CURRATE_STANDIN_URL
− описание: имя JDBC драйвера для БД справочников
имя: DB_EKPIT_MAIN_DRIVER
− описание: строка с url для подключения к БД справочников
имя: DB_EKPIT_MAIN_URL
− описание: имя JDBC драйвера для БД справочников
имя: DB_EKPIT_STANDIN_DRIVER
− описание: строка с url для подключения к резервной БД справочников
имя: DB_EKPIT_STANDIN_URL
− описание: имя схемы данных компонента в БД (основная и резервная)
имя: DB_CURRATE_OWNER_SCHEMA
значение: CURRENCY_RATES
− описание: имя схемы данных компонента в БД справочников schema (основная и резервная)
имя: DB_EKPIT_OWNER_SCHEMA
значение: EKPIT
− описание: Включение и отключение вывода в лог sql-запросов для БД курсов валют
имя: DB_CURRATE_SHOW_SQL
значение: 'false'
− описание: минимальное количество незанятых соединений с БД курсов валют
имя: DB_CURRATE_MIN_IDLE
значение: '5'
− описание: максимальное количество незанятых соединений с БД курсов валют
имя: DB_CURRATE_MAX_POOL_SIZE
значение: '20'
− описание: включение и отключение вывода в лог sql-запросов для БД справочников
имя: DB_EKPIT_SHOW_SQL
значение: 'false'
− описание: минимальное количество незанятых соединений с БД справочников
имя: DB_EKPIT_MIN_IDLE
значение: '5'
− описание: максимальное количество незанятых соединений с БД справочников
имя: DB_EKPIT_MAX_POOL_SIZE
значение: '20'
− описание: минимальное количество потоков для обработки запросов
имя: WORKER_THREADS_MIN_SPARE
значение: '10'
− описание: максимальное количество потоков для обработки запросов
имя: WORKER_THREADS_MAX
значение: '200'
− описание: максимальное количество активных транзакций
имя: JTA_MAX_ACTIVE_TRANSACTIONS
значение: '50'
− описание: параметр JVM для указания пути к файлу с дополнительной конфигурацией (spring.config.additional−location)
имя: SPRING_CONFIG_ADDITIONAL_LOCATION
значение: −Dspring.config.additional−location=/opt/etc/aj−kafka−security.yaml
− описание: включение или отключение интеграции с прикладным журналом
имя: STANDIN_CLOUD_CLIENT_STUB
значение: 'false'
− описание: список брокеров Kafka для прикладного журнала
имя: STANDIN_CLOUD_CLIENT_KAFKA_BOOTSTRAP_SERVERS
− описание: идентификатор зоны прикладного журнала
имя: STANDIN_ZONE_ID
значение: CV
− описание: способ доступа к справочникам — через API или через БД: API (NSI FACADE) — true, БД справочников — false
имя: USE_NSI_FACADE
значение: 'true'
− описание: адрес хоста, на котором расположен API NSI FACADE
имя: NSI_FACADE_HOST
− описание: номер порта, на котором расположен API NSI FACADE
имя: NSI_FACADE_PORT
значение: '80'
− описание: включение или отключение (true/false) отправки сообщений в Platform V Audit (включено по умолчанию)
имя: DISABLE_AUDIT
значение: 'false'
− описание: адрес хоста, на котором расположен API Platform V Audit
имя: AUDIT_HOST
Настройки, приведенные выше, используются в конфигурационных файлах, хранящихся в директории config/package/conf/config/parameters.
События системного журнала#
За логирование отвечает компонент Platform V Monitor Журналирование (LOGA). Расположение системного журнала событий настраивается в этом компоненте. Подробности настройки — см. в документации к компоненту Журналирование (LOGA) Platform V Monitor.
Для системного журнала применимы следующие уровни логирования:
FATAL − критические ошибки, при которых невозможна работа приложения.
Error − информация об ошибках в работе приложения. Ошибки данного уровня можно разделить на следующие типы:
ошибки вызова компонентов платформы;
ошибки интеграционных вызовов.
Warning – предупреждения.
Info – информация о работе приложения и текущем состоянии процессов.
Debug – подробности о работе приложения, позволяющие восстановить последовательность выполнения операций при обслуживании вызовов и вызовах внешних систем.
TRACE − подробные записи о действиях приложения. Нужны в исключительных случаях для отладки. Все события попадают в платформенный журнал.
При необходимости уровни логирования можно настраивать в ConfigMap через консоль администратора OpenShift.
Описание событий error:
Класс |
Сообщение |
Причина возникновения |
|---|---|---|
CachePersistenceImpl |
cache {} is null |
Возникает если кеш с нужным именем не найден |
ObjectUtils |
Возникла ошибка в момент parsing объекта |
Возникает если parsing объекта произошел с ошибкой |
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 запроса для поиска распоряжений передан пустой список id сегментов |
RateRequestDaoHibernateImpl |
Сегментов нашлось больше, чем может поместиться в in условие запроса. Срочно обратитесь к разработчикам Platform V Exchange Rates. количество {} шт |
Возникает, когда при подготовке sql запроса для поиска распоряжений передан список id сегментов содержащий более 1000 записей |
CurrencyAuditServiceImpl |
Ошибка аудита |
Возникает если при отправке события в аудит произошла ошибка |
CurrencyRatesSaverServiceImpl |
Ошибка сохранения курсов из Platform V Exchange Rates |
Общая ошибка при неудачном сохранения курсов из Platform V Exchange Rates |
CurrencyRatesSaverServiceImpl |
Ошибка валидации входящего распоряжения |
Возникает при ошибке валидации входящего распоряжения |
CurrencyRatesSaverServiceImpl |
Ошибка при сохранении входящего распоряжения |
Общая ошибка при неудачном сохранении входящего распоряжения |
CurrencyRatesSaverServiceImpl |
Unknown additional info %s |
Случается при загрузке курсов из журнала компонента Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) когда дополнительная информация из данных объекта из журнала компонента Прикладной журнал (APLJ) компонента Platform V Backend (#BD) имеет неизвестный подтип |
CurrencyRatesSaverServiceImpl |
Ошибка при сохранении АРК сообщения из компонента Прикладной журнал (APLJ) компонента Platform V Backend (#BD) |
Общая ошибка при неудачном сохранении из системы источника курсов сообщения из компонента Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) |
CurrencyRatesSaverServiceImpl |
Something is wrong with saving EOD price [unknown rquid] from PJ: %s |
Происходит при преобразовании XML данных из компонента Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) журнала, в случае если в них содержится неизвестный rquid |
CurrencyRatesSaverServiceImpl |
Something is wrong with saving EOD price [unknown rquid] from PJ: %s |
Общая ошибка происходит при неудачном сохранении сообщения |
CurrencyRatesSaverServiceImpl |
Something is wrong with saving ExrCurrency from PJ |
Общая ошибка при неудачном добавлении валюты из журнала компонента Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) для сохранения |
CurrencyRatesSaverServiceImpl |
Ошибка обработки сообщения от Platform V Exchange Rates |
Общая ошибка при проблемах с обработкой сообщения от Platform V Exchange Rates |
CurrencyRatesSaverServiceImpl |
Ошибка при сохранении входящего распоряжения |
Общая ошибка возникает при ошибках сохранения распоряжение на сохранение курса ЮЛ от системы источника курсов |
CurrencyRatesSaverServiceImpl |
Ошибка при отправке сообщения в компонент Прикладной журнал (APLJ) компонента Platform V Backend (#BD) |
Возникает при возникновении ошибок при отправке распоряжения на сохранение курса в компонент Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) |
CurrencyRatesSaverServiceImpl |
Произошла ошибка при сохранении распоряжения из прикладного журнала |
Происходит при ошибках в сохранении распоряжения присланного из компонента Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) |
CurrencyRatesSaverServiceImpl |
Ошибка обработки сообщения от Platform V Exchange Rates: {} |
Возникает при ошибках сохранения Platform V Exchange Rates |
CurrencyRatesSaverServiceImpl |
Произошла ошибка при отправке сообщения в компонент Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) |
Возникает при ошибках отправки курсов из Platform V Exchange Rates в компонент Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) |
CurrencyRatesSaverServiceImpl |
Произошла ошибка при компенсации данных |
Возникает если случаются ошибки при компенсации данных, начатой из-за ошибки при отправке сообщения в компонент Прикладной журнал (APLJ) компонента Platform V Backend (#BD) (если используется) |
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 |
Ошибка при импорте исторических данных |
Возникает при импорте исторических данных когда произошло что-то не так. Общая ошибка |
Описание событий warning:
Класс |
Сообщение |
Причина возникновения |
|---|---|---|
WarmUpCacheServiceImpl |
Error in warming |
При любом пойманном исключении при разогреве кешей |
RateRequestDaoHibernateImpl |
запрос {} был уже изменен |
Возникает в случае когда проверка номера версии или метки не выполнилась |
RatesTypeDaoImpl |
В запросе присутствуют взаимоисключающие даты |
Происходит при получении ставки межбанковского кредитования, когда дата использования совпадает с датой публикации |
RatesTypeDaoImpl |
В запросе отсутствуют даты |
Происходит при получении ставки межбанковского кредитования, когда дата использования и дата публикации переданы пустыми |
RatesTypeDaoImpl |
На указанные наименование [%s] и дату [%s] ставки отсутствуют |
Возникает если не удалось найти ставку в БД для переданной даты запроса и имени ставки |
JsonServiceImpl |
Не удалось сериализовать объект |
Возникают при ошибках сериализации |
CurrencyRatesSaverServiceImpl |
Ошибка обработки сообщения от Platform V Exchange Rates: {} |
Общая ошибка возникает при обработке сообщения-запроса для передачи курсов валют и курсов металлов |
CurrencyRatesSaverServiceImpl |
Начинаем процедуру компенсации закомиченных данных |
Появляется при ошибке при отправке сообщения в Компонент Прикладной журнал компонента Platform V Backend (#BD) (если используется) |
CurrencyRatesSaverServiceImpl |
Данные успешно компенсированы |
Сообщение об успешно компилированных данных при отправке в Компонент Прикладной журнал компонента Platform V Backend (#BD) (если используется) |
RateAveragesServiceImpl |
Не найдены курсы ЦБ для валюты %s в интервале %s-%s |
Возникает когда не удалось найти курсы ЦБ в указанный период дат |
RateRequestMonitorServiceImpl |
Ошибка сортировки списка распоряжений |
Возникает при ошибке сортировки распоряжений |
CurrencyRateFilterImpl |
фильтрация использует неоптимальную версию |
Возникает при ошибке в методе получения подходящего сегмента для запроса |
SanitizedStringSerializer |
Разные строки после санитайза. Было: {}, Стало {} |
Происходит во время сериализации когда санитизированная строка не равна исходной строке |
События мониторинга#
Микросервисы Продукта генерируют метрики мониторинга, которые передаются во внешние системы с помощью Unimon/Prometheus.
Ниже приведены метрики для следующих микросервисов:
crtx-cb-cloud-app,
crtx-financial-quotes-cloud-app,
crtx-interbank-rates-cloud-app,
crtx-individual-cloud-app,
crtx-legal-cloud-app app,
crtx-supplementary-cloud-app.
Идентификатор метрики |
Описание |
|---|---|
+ ".DurationTimer" |
Время выполнения методов API |
+ ".ApiCallsCounter" |
Количество вызовов |
+ ".ErrorsCounter" |
Количество ошибок |
Метрики для микросервиса Crtx-messenger-cloud-app:
Идентификатор метрики |
Описание |
|---|---|
+ "currency.rates.messages.SendingTime" |
Время, затраченное на отправку сообщений в Kafka |
+ "currency.rates.messages.SendingFails" |
Количество ошибок при отправке сообщения |
Микросервис Crtx-ark-rates receiver-cloud-app метрик не имеет.
Для времени выполнения метода также предоставляются данные, для построения гистограммы по процентному соотношению (для отсечек в 50%, 80%, 95% случаев). Кроме того, отдельно регистрируются непредвиденные долгие и быстрые случаи выполнения методов (более 2 сек, и менее 5мс), а также отклонения от ожидаемого значения (100мс). Метрики по длительности выполнения одного из методов API, передаются в мониторинг, который производит их анализ.
Настройки взаимодействия с Unimon описаны в документации к Компоненту Объединенный мониторинг Unimon MONA продукта Platform V Monitor.
Часто встречающиеся проблемы и пути их устранения#
В данном разделе собраны наиболее частые проблемы и описаны пути их устранения.
Проблема |
Причина |
Способ устранения |
|---|---|---|
Ошибки при развертывании и функционировании Продукта |
— |
Следует собрать логи с приложения, на котором возникает ошибка и обратиться к технической поддержке. Это могут быть ошибки в конфигурации, параметрах, сетевой маршрутизации, настройки баз данных, неверные сертификаты доступа |