Маршрут POS-BI-HOS¶
- Table of contents
- Маршрут POS-BI-HOS
1. ПРОБЛЕМА: данные из POS не появляются в базе данных BI¶
Существует несколько возможных причин отсутствия данных в БД:- банально, данные отсутствуют (например, не сделан z-отчёт на АЗС);
- на АЗС не работает сервис PosDataExtractor (остановлен, ошибки и т.д.)
- данные с АЗС пришли, но ожидают обработки в очереди. В некоторых случаях на это требуется время (при условии работоспособности "
Message Router BI
"); - данные с АЗС пришли, но в процесс обработки прошёл с ошибками и сообщение отправлено в соответствующую очередь
.FAILED.
; - данные находятся в очереди на отправку на стороне АЗС, но не принимаются серверной стороной. Причин может также быть несколько:
- физически отсутствует или плохая связь с удалённой станцией;
- серверная сторона не устанавливает (принудительно обрывает) соединение. Напимер, исчерпан лимит коннектов или "зависший" коннект;
Для более детального анализа, рекоммендуется проделать следующие действия:
Проверить на сервере KMG-BI:¶
1. Удостовериться, что сервис "Message Router BI
" активен.
2. ... и отсутствуют проблемы ([ERROR] или [WARN]) в соответствующем log файле:
C:\Program Files\Mastersoft\MasterETL\MessageRouter\log\BI\{EntityName}\Route.log
NB! надо иметь ввиду, что на сервере KMG-BI кроме основного сервиса Message Router
присутствует дополнительный сервис "Message Router BI (bulk)
" для массовой загрузки (вручную) пропущенных данных
3. Проверить количество сообщений в состоянии ожидания обработки в очередях ActiveMQ http:// BI_SERVER:8161/admin/queues.jsp
В случае "Number of messages pending" <> 0 смотрим пункт №2 "возможных причин отсутствия данных в БД"
Также, можно кликнуть на соответствующую очередь, чтобы просмотреть её содержимое.
NB! Для доступа к админской панели логин admin
и пароль amqadmin
.
Проверить на POS:¶
1. Проверить, что активен сервис "ActiveMQ
".
2. Проверить, что активен сервис "POS Data Extractor
" и отсутствуют [ERROR] или [WARN] в log файле:
C:\PosDataExtractor\log\PosDataExtractor.log
3. Проверить количество сообщений в состоянии ожидания обработки в очередях ActiveMQ POS http://localhost:8161/admin/queues.jsp
В случае "Number of messages pending" <> 0 удостоверяемся, что АЗС присутствует в списке текущих SSL соединений ActiveMQ BI http:// BI_SERVER:8161/admin/connections.jsp , а её IP адрес соответствует коду станции
4.: При помощи "Manager Console" проверить содержимое очереди "Регистры\ очередь ActiveMQ
" и архива "Просмотр ДТЛ\ архив ActiveMQ
".
Пустая очередь ActiveMQ
означает, что все сообщения POS обработаны и отправлены локальному экземпляру ActiveMQ.
Обработанные сообщения перенесеносятся из очереди ActiveMQ
в архив ActiveMQ
.
Если данные находятся в архиве ActiveMQ
, но на сервере их всё равно нет, то следует проверить поле причина архивирования
. Значением поля должно быть 1, в ином случае запись сообщения в очередь произошло с ошибкой...
2. ПРОБЛЕМА: данные за прошлый период так и не пришли (потерялись)¶
Инициирование передачи данных из POS "руками"¶
С помощью консольной версии PosDataExtractor (pdecli), можно передать отсутствующие данные из POS на сервер KMG-BI. Запуск производится из папки PosDataExtractor.
Данные возможно передавать как за период времени, так и конкретно по номеру, если он известен. За один раз передаётся только один тип ресурса {Entity
}.
Формат записи в случае передачи данных по номеру следующий: pdecli --entity={EntityName} --resource-id={id} --commit
например: pdecli --entity=zreports --resource-id=4 --commit
(передаём Z-отчёт №4)
Формат записи в случае передачи данных за период времени следующий: pdecli --entity={EntityName} --period-begin={Start date-time} --period-end={End date-time} --commit,
где формат даты-времени: гггг-мм-дд Т чч:мм (без пробелов)
например: pdecli --entity=receipts --period-begin=2015-10-11T7:00 --period-end=2015-10-12T20:00 --commit
(передаём чеки за период с 11 октября 2015г. 7:00
до 12 октября 2015г. 20:00
)
Наиболее распространённые типы ресурсов {Entity
}, передаваемые с АЗС:
- ZReports - Z-отчёты
- Receipts - чеки
- Transactions - транзакции
- Measurements - уровнемеры
- GasDeliveries - поставки топлива
NB! Приложение автоматически определяет очередь ActiveMQ, необходимую для конкретного ресурса
Полное описание приложения (с примерами использования) дано в англоязычной документации PosDataExtractor console interface (pdecli).
internal: На основании результатов запроса bi_zreportholes_ex.sql
можно сформировать скрипты для автоматической загрузки данных с любой АЗС, которые выполняют массовую загрузку данных за заданный период времени на сервер BI.
Данные попадут в отдельные соответствующие POS.Bulk.>
очереди и будут обрабатываются собственным сервисом "Message Router BI (bulk)
".
3. ПРОБЛЕМА: POS/BOS ActiveMQ broker потерял связь с сервером¶
- проверить состояние(статус) сервиса ActiveMQ можно либо в списке сервисов
Computer\Manage\Services
, либо в коммандной строкеsc query ActiveMQ
- перезапуск сервиса ActiveMQ на POS/BOS; сервису может потребоваться время как для остановки сервиса, так и для его запуска (около 1 минуты)
sc stop ActiveMQ sc start ActiveMQ
NB! перед остановом сервиса ActiveMQ также рекоммендуется остановить сервис PosDataExtractor
(POS) либо MessageRouterBos
(BOS)
- Если ActiveMQ так и не получилось заставить работать как сервис, но данные срочно нужны, в качестве экстренной меры (до первого перезапуска компьютера) можно запустить исполняемую часть ActiveMQ вручную
c: cd \activemq\bin\ activemq.bat
Определение неправильного кода станции¶
- POS: Проверить, что в списке SSL connection сервиса ActiveMQ BI http:// BI_SERVER:8161/admin/connections.jsp код АЗС соответствует IP адресу кассы.
- BOS: Проверить, что в списке SSL connection сервиса ActiveMQ HOS http:// HOS_SERVER:8161/admin/connections.jsp код АЗС соответствует IP адресу рабочего места.
4. Что делать при смене кода станции¶
- Поменять код станции на кассе (информация о станции - регистрационный номер)
- В файле
c:\activemq\activemq.xml
на кассе и BOS'e неоходимо указать правильное название брокеров ActiveMQ (SAP-код АЗС) - Если данные с неправильными кодами попали в BI, то в таблицах
Receipts, ZReports, Events, GasFillings, TigMeasurements, CardTrns
необходимо менять содержимое поляObjectCode
.
Это может быть в некоторых случаях затруднительно, если уже существуют данные для другой/других АЗС с таким же кодом.
В дальнейшем, при смене кода АЗС, достаточно будет поменять код станции на кассе и перезапустить инсталлятор MasterETL, который автоматически сделает необходимые настройки ETL рабочего места.
internal: скрипт bi_codereplace.sql
служит для автоматизации процесса замены таблиц.