Войти в платформу

Мониторинг локального модуля Честный знак: что проверять

Мониторинг локального модуля Честный знак нужен, чтобы о проблеме с продажей маркированного товара первым узнавал инженер, а не кассир с очередью покупателей. Модуль может застрять в инициализации, перестать синхронизироваться или остаться без службы после перезагрузки, а касса при этом выглядит живой. Разбираем, что ломается, какие показатели снимать и какие алерты ставить.

Зачем кассе локальный модуль

В разрешительном режиме касса перед продажей проверяет код маркировки онлайн. Если ответ не пришёл за 1,5 секунды, например из-за пропавшего интернета, кассовая программа проверяет код по локальной базе, которую загружает и обновляет локальный модуль (ЛМ ЧЗ). Модуль ставится на компьютер в сети торговой точки, и по разъяснению оператора его обязаны установить и использовать все розничные участники оборота.

Отсюда главный риск: пока интернет есть, неисправный модуль себя не проявляет и обнаруживается ровно тогда, когда нужен, — при сбое связи. Если онлайн-проверка не получила ответа, а офлайн-проверка не сработала, оператор фиксирует отклонение «Продажа КМ без проверки».

Что ломается на кассе до звонка из магазина

Сбои складываются в пять групп:

— модуль не в рабочем состоянии: застрял в инициализации (initialization), не настроен (not_configured) или ушёл в ошибку синхронизации (sync_error);

— база кодов устарела: модуль запущен, но давно не синхронизировался, потому что мешает прокси, межсетевой экран или антивирус;

— токен организации, с которым работают касса и модуль, перестал действовать или заменён, например при смене юрлица;

— остановилась служба на кассовом компьютере: служба модуля или драйвера ККТ не поднялась после обновления или перезагрузки, либо порт модуля занял другой процесс;

— недоступна касса или сеть: выключен кассовый компьютер, отвалилась сетевая ККТ, роутер или канал связи магазина.

Первые три группы видны только изнутри модуля, последние две — обычным мониторингом хоста и сети. Поэтому мониторинг касс и локального модуля Честного знака должен закрывать обе половины: модуль и кассовый компьютер с его окружением.

Как проверить статус локального модуля?

Модуль отдаёт состояние по HTTP на локальном порту, по умолчанию 5995. Запрос статуса в зависимости от версии модуля — GET /api/v1/status или /api/v2/status с логином и паролем, заданными при установке. В ответе — статус модуля (рабочее значение ready) и сведения о синхронизации базы.

Для мониторинга достаточно скрипта, который раз в минуту делает этот запрос на кассе и превращает ответ в метрики: статус (1, если ready, иначе 0, плюс метка со значением), возраст последней синхронизации в секундах и признак «модуль не ответил». Запускайте его планировщиком Windows или таймером systemd и отдавайте результат экспортёру через текстовый файл.

С каких правил начать:

— статус не ready дольше 10 минут — предупреждение; если инициализация идёт дольше часа, инструкции кассовых программ советуют писать в поддержку оператора;

— возраст синхронизации больше порога — предупреждение. Допустимый интервал оператор не публикует, но при его превышении модуль сам уходит в sync_error («acceptable synchronization interval exceeded»), поэтому порог ставьте заметно раньше, в несколько часов;

— модуль не ответил на запрос, а кассовый компьютер на связи — критический алерт.

Нужно и правило на отсутствие данных: если скрипт сломался или удалён при обновлении кассового ПО, метрика исчезнет, и правило «статус не ready» промолчит. Эту ловушку мы разбирали в статье о том, почему алерт молчит, когда метрики нет. Помогает список касс, где модуль должен работать: касса в списке, агент на связи, а статуса нет — алерт.

Как не пропустить истечение токена?

Токен организации создаётся в личном кабинете Честного знака и связывает кассы и модуль с организацией. По самой кассе не видно, что он перестал действовать: продажа просто не проходит. При смене юрлица, по ответу представителя оператора, разрешительный режим перенастраивают под новый токен — на каждой кассе.

Практика та же, что с SSL-сертификатами: реестр «организация — токен — даты — кассы» и предупреждение заранее, например за 14 и за 3 дня.

Что смотреть на кассовом компьютере и в сети магазина

Службы. Модуль и драйвер ККТ работают как службы. Алерт ставьте на службы с автозапуском, которые не работают дольше 3–5 минут; ручные не трогайте, иначе будут ложные тревоги. Службы с автозапуском, которые сейчас не работают, на Windows показывает команда Get-Service | Where-Object {$_.StartType -eq 'Automatic' -and $_.Status -ne 'Running'}. Имена служб модуля и драйвера зависят от версии и производителя — зафиксируйте их на эталонной кассе. В журнале System внезапные остановки служб видны по событиям 7031 и 7034 от Service Control Manager.

Порт. Если служба модуля работает, а касса получает ошибку соединения, проверьте, кто слушает порт: netstat -ano | findstr 5995, затем tasklist /fi "PID eq N", где N — номер процесса из вывода netstat. Порт должен принадлежать модулю и быть открыт в брандмауэре.

Диск и время. База кодов и журналы растут, поэтому на системный диск нужен порог — например, больше 90%. Сбитые часы ломают TLS и синхронизацию; проверка — w32tm /query /status.

Доступность. Кассовый компьютер с агентом проверяется по heartbeat: нет сигнала несколько минут — алерт. Сетевые ККТ, роутер, принтер этикеток и смарт-терминалы проверяют по пингу изнутри сети магазина раз в 30–60 секунд, алерт — после двух минут без ответа. Пинг до роутера отделяет упавшую кассу от потерянного магазина: дежурному нужен один алерт «магазин недоступен», а не пять. В сети из десятков магазинов разбор таких алертов удобно отдать на мониторинг с дежурством как услугу.

Что проверить у себя

— Отключите интернет на тестовой кассе: пройдёт ли продажа маркированного товара через офлайн-проверку?

— Знаете ли вы, сколько касс сейчас в статусе ready, — по данным мониторинга, а не со слов кассиров?

— Есть ли алерт на возраст синхронизации базы, и сработает ли он раньше, чем модуль сам уйдёт в sync_error?

— Записаны ли токены каждой организации с датами и кассами, и кто получит предупреждение до их окончания?

— Есть ли алерт на остановку служб с автозапуском, включая службу модуля и драйвера ККТ?

— Поймёт ли дежурный по алертам, что недоступен весь магазин, а не пять касс по отдельности?

— Сработает ли алерт, если скрипт проверки модуля перестанет присылать данные?

Нужен ли мониторинг модуля, если онлайн-проверка работает?

Да. Пока связь есть, неисправный модуль не мешает продажам и может сломаться за недели до первого сбоя интернета. Мониторинг нужен, чтобы к моменту, когда связь пропадёт, модуль был в статусе ready со свежей базой.

Можно ли следить за модулем без удалённого доступа к кассе?

Да, если проверку выполняет агент на самом кассовом компьютере и отправляет результат наружу по HTTPS. Входящие подключения, VPN и открытый наружу порт модуля не нужны: наружу уходят только метрики. На смарт-терминалах, куда агент не ставится, остаётся пинг, а модуль смотрят средствами кассовой программы.

Как это сделано в Voltir

Агент Voltir ставится на кассовый компьютер с Windows или Linux одной командой и только отправляет данные по HTTPS. Сразу видны доступность касс, службы Windows, включая драйвер ККТ, диск, память, процессор и пинг сетевых устройств магазина, а готовые правила алертов шлют уведомления в Telegram, на почту или в вебхук; интерфейс можно открыть в живом демо. Статус локального модуля, возраст синхронизации и срок токена подключаются в течение недели пилота под ваш набор касс, условия — на странице тарифов.

← Все новости