Uniday · утилита для интерактивных стендов
Uniday Watchdog — программа для Windows, которая следит за приложением на интерактивном стенде или киоске и перезапускает его при краше, зависании и по расписанию. Наблюдение внешнее: менять что-то в вашей сборке не нужно.
Watchdog раз в несколько секунд убеждается, что приложение на стенде живо: есть ли процесс, отвечает ли окно, расходует ли процессорное время. Из этих проверок складываются четыре повода перезапустить приложение — и один повод остановиться и позвать человека.
Пока приложение загружается, проверки на зависание ему не мешают: сборке дают время подняться. А если она падает снова и снова, Watchdog не будет перезапускать её бесконечно — остановится и напишет вам письмо.
| Что случилось | Как Watchdog это видит | Что делает |
|---|---|---|
| Приложение закрылось или упало | Процесса нет в списке | Запускает заново — по тому же пути, с той же рабочей папкой и аргументами |
| Окно не отвечает | Системный признак «не отвечает» у окна приложения | Завершает процесс и запускает заново |
| Приложение формально живо, но встало намертво | Процесс перестал расходовать процессорное время за окно сравнения | Завершает процесс и запускает заново |
| Наступило время планового перезапуска | Ежедневное расписание, по умолчанию 00:01 | Завершает процесс и запускает заново |
| Приложение падает по кругу | Три перезапуска подряд за пять минут | Останавливает мониторинг, показывает статус «Петля рестартов» и отправляет письмо |
Все значения по умолчанию и что за каждым порогом стоит — в описании мониторинга.
Планировщик задач Windows
Считает задачу проваленной, только если она не смогла запуститься. Запущенный и зависший процесс планировщик не видит — и перезапускать его не будет.
PowerShell-скрипт
Умеет проверить отклик окна и объём памяти, но у него нет журнала, писем, интерфейса и защиты от петли перезапусков. Поддерживать его придётся самому.
Uniday Watchdog
Те же проверки плюс журнал событий, архив логов приложения с причиной завершения, график памяти и письма на почту. Настраивается мастером, а не кодом.
Утечка памяти — частая причина, по которой стенд к вечеру начинает тормозить, а ночью падает. Watchdog рисует график памяти приложения и пишет над ним, сколько она прибавляет за час. Утечка видна как ровно растущая линия, а не как жалоба посетителя.
На графике отмечено, когда приложение падало и когда ставилась новая версия сборки, — легко сравнить версии между собой. Сам рост памяти Watchdog не лечит: пока сборку не исправили, утечку снимает ежедневный плановый перезапуск.
Что именно измеряется и где лежит история — в описании мониторинга.
Поднять упавшее приложение — полдела, важно ещё понять, почему оно упало. Watchdog сохраняет лог приложения за каждый сеанс и помечает, чем сеанс закончился: штатно, сбоем, перезапуском по команде Watchdog или чем-то внешним. Любой лог отправляется разработчику сборки письмом прямо из окна — с именем стенда и временем.
Ещё Watchdog сам пишет на почту: сразу, когда приложение ушло в петлю перезапусков, и регулярно — сводку, сколько было инцидентов и каких. Сводка приходит, даже если всё тихо: так вы знаете, что стенд жив.
Player.log находится сам, для Unreal берётся свежий файл из Saved/Logs, для остальных путь задаётся вручную или остаётся пустым. Большие файлы сохраняются хвостом с пометкой об обрезке.Где лежит архив и как читать имена файлов — в описании мониторинга.
На стенде часто работает не одно приложение: витрина, кинозал, викторина. Watchdog ведёт каждое в своей вкладке — у каждого свой статус, свои перезапуски, свой график памяти и свой архив логов. Расписание, почта и автозапуск общие.
Иконка в трее показывает состояние всего стенда одним цветом, а остановить или возобновить все приложения можно одной командой.
Управление вкладками и меню в трее — в инструкции по установке и настройке.
Новую версию сборки не нужно везти на стенд. Вы кладёте её в папку на Яндекс.Диске — стенд сам замечает обновление, скачивает его, проверяет, что файл не повреждён, и подменяет приложение. Если новая версия падает или зависает, стенд сам возвращается к прежней и сообщает об этом.
Для особо важных экспонатов есть ручной режим: версия скачивается заранее, а ставится по вашей команде. Из инфраструктуры нужен только аккаунт Яндекс.Диска, подойдёт бесплатный; свой сервер не нужен.
В публичной папке лежат два файла: zip со сборкой и manifest.json — указатель с версией, именем архива, контрольной суммой sha256, размером и путём к исполняемому файлу.
В ручном режиме версии скачиваются на диск, но ставятся по команде: «Перейти на эту версию», «Откатиться», «Удалить с диска». Окно раската и отложенное применение задаются прямо в манифесте. У каждого приложения своя папка обновлений и своя история версий. Сам Watchdog обновляется тем же способом из папки релизов Uniday, наблюдаемое приложение при этом не закрывается.
Что нужно
Аккаунт Яндекс.Диска — подойдёт бесплатный — и одна опубликованная папка со сборкой и манифестом.
Что не нужно
Свой сервер, база данных, токен на стенде, открытые порты, белый IP, VPN, доменное имя. Стенд читает публичную папку анонимно — ни логина, ни токена в его настройках нет.
Ограничения
Транспорт пока только Яндекс.Диск. Публичная папка доступна любому, у кого есть ссылка. Дельта-обновлений нет — каждый раз качается весь архив, и нужен запас места не меньше двух его размеров. Версия в манифесте должна быть новой на каждый релиз.
Формат манифеста, карантин и откат по шагам — в инструкции по обновлению билдов.
Дальше Watchdog живёт в трее и не мешает полноэкранной сборке: цвет иконки показывает, всё ли в порядке. Папку с Watchdog можно перенести на другой компьютер целиком.
Watchdog.exe в папку на стенде. Рядом с файлом появятся config.json, папка логов и папка с данными приложений; особых прав не требуется.Когда Watchdog запускает приложение, его окно сворачивается само. На Windows 11 иконка закрепляется у часов сама, на Windows 10 её нужно вытащить к часам вручную. Пути внутри папки относительные, поэтому папка переносится на другой диск или компьютер целиком; заново включаются только автозапуск и пароль почты — они живут за пределами папки.
Пошагово, с ошибками мастера и составом папки — в инструкции по установке и настройке.
Планировщик задач считает задачу проваленной, только если она не смогла запуститься. Запущенный и зависший процесс он не видит и перезапускать не будет. Watchdog проверяет отклик окна и расход процессорного времени, поэтому ловит именно зависшее приложение.
Двумя независимыми проверками: системный признак «не отвечает» у окна и остановка расхода процессорного времени за короткое окно сравнения. Обе включены по умолчанию и выключаются по отдельности. В первые секунды после запуска они не применяются, чтобы не прервать долгую загрузку сборки.
Панель «Память процесса» показывает private bytes и working set и считает тренд за сеанс строкой вида «+38 МБ/ч за сеанс», а поминутная история хранится на диске около двух месяцев. Автоматического перезапуска по порогу памяти нет: пока сборку не исправили, утечку снимает ежедневный плановый перезапуск.
Да, каждому приложению — своя вкладка в одном окне. Свои у вкладки путь к исполняемому файлу, лог, счётчики, график памяти и пауза; общие на весь Watchdog — интервалы, детекторы, время планового перезапуска, автозапуск и почта.
Ежедневный плановый перезапуск включён по умолчанию, время — 00:01, меняется в настройках. Расписание общее на все вкладки. Пропущенный больше чем на час перезапуск переносится на следующую ночь, а не срабатывает днём при посетителях.
Нет. Наблюдение внешнее: процесс, отклик окна, процессорное время и память. Исходники не нужны, подойдёт любая готовая сборка. Тип приложения — Unity, Unreal или другое — влияет только на автоматический поиск лог-файла и на иконку.
Watchdog ведёт свой процесс — тот, что запущен по указанному пути. Отдельная опция «Завершать экземпляры приложения, запущенные мимо Watchdog» по умолчанию выключена; когда её включают, завершаются только экземпляры того же файла, а одноимённый процесс из другой папки не трогается.
Перезапускать сборку, которая гаснет сразу после старта, по кругу бессмысленно: стенд весь день мигает экраном, а причина остаётся невыясненной. Поэтому после трёх перезапусков за пять минут Watchdog останавливает мониторинг, показывает статус «Петля рестартов», пишет запись в журнал и при настроенной почте отправляет письмо.
В счёт идут сбой, принудительное завершение при зависании, пропажа процесса и штатный выход раньше чем через 10 секунд после старта. Остановка оператором и штатный выход после 10 секунд работы не считаются. Порог меняется только в config.json.
Пауза хранится на диске и переживает перезагрузку стенда: сбойная сборка сама не поднимется, а лог последнего сеанса уже лежит в архиве. Исключение — галочка «Запускать мониторинг при старте Watchdog»: с ней мониторинг после перезагрузки включается и счёт начинается заново. Снимается пауза только вручную: кнопкой «Возобновить» в окне или из меню в трее. Подробнее — в разделе про мониторинг.
Лог приложения за каждый сеанс сохраняется в архив с причиной завершения и кодом возврата: штатное завершение, сбой, перезапуск watchdog, ручное завершение или «неизвестно». Нужный файл отправляется письмом разработчику прямо из окна — с версией Watchdog, именем устройства и временем.
Watchdog запускается вместе с Windows и может сразу включать мониторинг, даже если перед выключением он стоял на паузе. Второй экземпляр из той же папки не запускается — открывается окно уже работающего. Пауза «Петля рестартов» тоже сохраняется на диске: без галочки «Запускать мониторинг при старте Watchdog» сбойная сборка после перезагрузки сама не поднимется, с ней — мониторинг включится и счёт перезапусков начнётся заново.
Для установки достаточно скопировать файл в папку. Watchdog — не служба: он работает в сеансе пользователя, поэтому на стенде настраивают автоматический вход в Windows. Если наблюдаемое приложение запущено с повышенными правами, а Watchdog — нет, проверки отклика и зависания по процессору пропускаются.
Нет. Аппаратный сторожевой таймер — это устройство, которое перезагружает компьютер, когда перестаёт получать сигнал. Uniday Watchdog — программа: она перезапускает приложение внутри работающей Windows. Если зависла сама операционная система, нужен именно аппаратный таймер.
Да, подойдёт любое приложение с окном. Тип сборки влияет только на автоматический поиск лога. Если исполняемый файл — лаунчер, который порождает процесс с другим именем, имя процесса указывается вручную в настройках.
Остальные вопросы — в справочнике по Watchdog.
Четыре страницы: как поставить, когда и почему перезапускает, как обновлять сборки и что делать, если что-то пошло не так.
Watchdog мы написали для своих стендов: Uniday делает интерактивные инсталляции для музеев, выставок и производств.
КОНТАКТЫ
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01
© UNIDAY, 2014-2025
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01