Я порекомендовал мне задать этот вопрос здесь членом StackOverflow.
У меня есть программное обеспечение для киосков самообслуживания, которое будет работать на нескольких сайтах. Хотелось бы контролировать небольшое количество параметров удаленно.
Само приложение киоска практически готово. Сейчас я работаю над созданием программного обеспечения, которое будет контролировать все киоски из центра, чтобы клиент мог удаленно просматривать определенные детали (например, сколько денег находится в киоске, если киоск включен или выключен, если он в данный момент не работает и т. д.). Поскольку я нахожусь на такой ранней стадии разработки, мои возможности довольно открыты. Я понимаю, что даю не очень много квалификаций, но я хотел бы попытаться получить хороший набор потенциальных решений. Некоторые детали:
Моя первоначальная идея заключалась в разработке .NET-приложения, которое просто сообщало бы о последней транзакции базы данных для каждого киоска с заданным интервалом (скажем, каждую секунду или около того), но мне бы очень хотелось, чтобы программное обеспечение киоска сообщало о своем статусе в режиме реального времени. , возможно, просто отправка пакета с таким небольшим количеством встроенной информации. Я не совсем уверен, с чего начать с точки зрения того, какие изменения могут потребоваться в программное обеспечение киоска и что потребуется для программного обеспечения мониторинга. Ссылки на статьи по этим темам приветствуются.
Мое предложение: используйте то, что уже доказало возможности мониторинга. Не разрабатывайте инструмент мониторинга СЕРВЕРНОЙ СТОРОНЫ.
Вы можете использовать решения с открытым исходным кодом, такие как zabbix или нагиос и даже платные.
В Zabbix есть что-то, что называется UserParameter. Вы можете использовать его для расширения «стандартных» возможностей zabbix. Например, вы можете создать приложение (или сценарий VBS, powershel и т. Д.), Которое проверяет, сколько зарегистрированных пользователей имеет киоск (или все, что вам нужно). При использовании локальной службы zabbix это приложение / скрипт будет вызываться и выполняться, а собранное значение будет отправлено на сервер zabbix.
Используя этот метод, вы можете настроить zabbix для отправки предупреждений / пороговых значений, чтобы информировать вас, когда в киоске слишком много зарегистрированных пользователей.
Используя «профессиональный» инструмент мониторинга, вы также сможете отслеживать другие аспекты киоска, такие как ЦП, память, сеть и т. Д.
В компании, в которой я работаю, есть несколько киосков, и мы используем zabbix для мониторинга.
- РЕДАКТИРОВАТЬ - Что касается вашего утверждения «чтобы клиент мог просматривать определенные детали удаленно», это еще одно требование, которое, на мой взгляд, приводит решение к уже установленному: безопасность. Zabbix, например, может быть «прикреплен» к серверу LDAP, и он имеет очень хороший контроль над пользователями (что пользователь может видеть и что может делать пользователь).
Вы можете взять функциональность Zabbix за основу и реализовать только то, что вам действительно нужно.
Например: в нашей компании есть вспомогательный скрипт Zabbix, который регулярно отправляет данные мониторинга для хоста по UDP в очень простом формате: item value~item value etc
Другая часть скрипта запускается на хосте Zabbix-сервера, получает эти строки от множества хостов и передает их Zabbix-серверу, по нескольку за раз, используя более сложный собственный протокол Zabbix. Цена, которую мы платим, - это безопасность (любой может отправить поддельный пакет) и возможная потеря пакета, но в нашей частной сети это нормально.
Вы можете запустить аналогичные агенты в киосках и заставить их отправлять такие данные клиенту по его команде. Конечно, у вас не будет истории и триггеров, но если они вам понадобятся, будет проще реализовать поддержку MSSQL для Zabbix.
Для последнего, скорее всего, потребует изменений только код интерфейса БД (ну, просто поищите специфичный для движка #ifdef
s). Сама логика использует простой SQL во время рутинных операций и не использует хранимые процедуры. Шаблоны БД зависят от движка и упаковываются в файлы .sql для ручного запуска. Чтобы скомпилировать сервер в Windows, вам подружатся MinGW или Cygwin (возможно, с параметром компилятора -mno-cygwin).