有哪些技术可以监控软件的多个实例?

有哪些技术可以监控软件的多个实例?

StackOverflow 的一名成员建议我在这里提出这个问题。

我有一款自助服务亭软件,将在多个站点运行。我想远程监控少量参数。

自助服务终端应用程序本身已经基本完成。我现在正在开发一款软件,该软件将从中央位置监控所有自助服务终端,以便客户可以远程查看特定详细信息(例如,自助服务终端中有多少现金、自助服务终端是开着还是关着、它目前是否处于故障状态等)。因为我还处于开发的早期阶段,所以我的选择相当广泛。我知道我没有给出太多的资格要求,但我想尝试获得各种潜在的解决方案。一些细节:

  • Kiosk 软件是一款在 Windows Embedded 上运行的 VB6 应用程序
  • 监控软件将在 Windows 现代桌面版本(XP、Vista 或 7)上运行
  • 数据库是 SQL Server 2008

我最初的想法是开发一个 .NET 应用程序,该应用程序会按照设定的时间间隔(例如每秒左右)报告每个信息亭的最后一个数据库事务,但我真的希望信息亭软件能够实时报告其状态,也许只需发送一个嵌入少量信息的数据包即可。我不确定从哪里开始,关于可能需要对信息亭软件进行哪些修改,以及监控软件需要什么。非常欢迎提供有关这些主题的文章链接。

答案1

我的建议是:选择已经证明监控能力的产品。不要开发服务器端监控工具。

您可以使用开源解决方案,例如扎比克斯或者纳吉奥斯甚至是付费的。

Zabbix 有一个称为 UserParameter 的东西。您可以使用它来扩展 zabbix 的“标准”功能。例如,您可以创建一个应用程序(或 VBS 脚本、powershel 等),用于验证信息亭有多少登录用户(或您需要的任何内容)。通过使用本地 zabbix 服务,将调用并执行此应用程序/脚本,并将收集的值发送到 zabbix 服务器。

使用这种技术,您可以设置 zabbix 在信息亭有太多登录用户时发送警报/阈值来通知您。

通过使用“专业”监控工具,您还可以监控信息亭的其他方面,例如 CPU、内存、网络等。

我所在的公司有一些信息亭,我们使用 zabbix 来监控它。

--编辑 -- 关于您的陈述“以便客户可以远程查看特定详细信息”,在我看来,这是另一个必要条件,它将解决方案推向已经建立的解决方案:安全性。例如,Zabbix 可以“附加”到 LDAP 服务器,并且可以很好地控制用户(用户可以看到什么以及用户可以做什么)。

答案2

您可以以 Zabbix 的功能为基础,仅实现您实际需要的功能。

例如:在我们公司,我们有一个 Zabbix 辅助脚本,它定期通过 UDP 以非常简单的格式发送主机的监控数据:item value~item value etc 脚本的另一部分在 Zabbix 服务器主机上运行,​​从多个主机接收这些行,并使用更复杂的 Zabbix 本机协议将它们一次传输到多个 Zabbix 服务器。我们付出的代价是安全性(任何人都可以发送伪造的数据包)和可能的数据包丢失,但在我们的私有网络内,这是可以接受的。

您可以在自助服务终端运行类似的代理,并让它们开始根据客户命令向客户发送此类数据。当然,您将缺少历史记录和触发器,但如果您需要它们,那么为 Zabbix 实现 MSSQL 支持会更容易。

对于后者,只有 DB 接口代码可能需要更改(好吧,只需查找特定于引擎的#ifdef)。逻辑本身在日常操作中使用纯 SQL,而不使用存储过程。DB 模板是特定于引擎的,并打包为 .sql 文件以手动运行。要在 Windows 中编译服务器,MinGW 或 Cygwin(可能带有 -mno-cygwin 编译器选项)是您的好朋友。

相关内容