Руководство по системному администрированию#

Сценарии администрирования#

Сценарии, приведенные в этом разделе, выполняются администратором инфраструктуры.

  • Администратору рекомендуется регулярно выполнять:

    • контроль состояния работы 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.

Часто встречающиеся проблемы и пути их устранения#

В данном разделе собраны наиболее частые проблемы и описаны пути их устранения.

Проблема

Причина

Способ устранения

Ошибки при развертывании и функционировании Продукта

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