Мониторинг локального модуля Честный знак: что проверять
Мониторинг локального модуля Честный знак нужен, чтобы о проблеме с продажей маркированного товара первым узнавал инженер, а не кассир с очередью покупателей. Модуль может застрять в инициализации, перестать синхронизироваться или остаться без службы после перезагрузки, а касса при этом выглядит живой. Разбираем, что ломается, какие показатели снимать и какие алерты ставить.
Зачем кассе локальный модуль
В разрешительном режиме касса перед продажей проверяет код маркировки онлайн. Если ответ не пришёл за 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, на почту или в вебхук; интерфейс можно открыть в живом демо. Статус локального модуля, возраст синхронизации и срок токена подключаются в течение недели пилота под ваш набор касс, условия — на странице тарифов.