从本地网络上的多台机器检索状态的最佳方法


Best method of retrieving stats from multiple machines on local network

所以我正在构建一个应用程序,用于监视网络上基于rasp PI的设备。设备正在运行一个程序,该程序提供了一个关于我们需要记录的设备性能的统计数组,您可以通过端口连接到设备的套接字访问该数组。该网络目前有100个这样的设备,但很快将增长到数百个设备在一个单一的网络。

目前,应用程序通过ssh2_scp将脚本部署到每个设备,然后应用程序运行本地ip列表并使用stream_context_create &&Get_file_contents ping远程设备上的监控文件。监视文件,然后从本地机器获取stat数组,然后$ _post数据返回到存储在db中的应用程序。

这不是理想目前即时通讯记录需要大约1.45分钟周期通过ip的检查(以作弊的方式使用一个计数器我+ +,而美元周期通过一系列的数字而不是从数据库中得到所有的ips时它将需要做更多的ip添加新位置)和检索结果并将它们插入到数据库,设置了cron作业运行萍脚本每2分钟,随着设备数量的增加,这将超过2分钟的周期间隔,并开始产生数据积压。这样做的问题是,没有任何方法可以检查流get上下文是否检索到任何数据,或者检查设备是否从单独提交的数据中正确运行。

应用程序所在的服务器是一个巨大的野兽,所以计算能力在那方面不是问题,但在rasp pi设备上,它运行的我不希望它运行任何web服务器,最多可能是内置的php web服务器,但我更希望他们不运行任何web服务器的安全,以及事实上他们的主要目的不是web服务器。

我一直在考虑从命令行运行php守护进程服务,并且想知道是否更适合将监视器应用程序作为守护进程服务运行,以建立直接到机器的套接字连接以来回检索数据。如果我要沿着这条路走下去,我将如何处理它,我将为侦听端口并通过该端口返回stat数组的被监视设备创建守护进程脚本,然后监视应用程序守护进程建立到每个设备的连接并输入数据吗?

如果有什么最好的方法或最有效的方法,我非常感谢。

你可以通过套接字连接到端口上的设备来访问这个数组。

我将简单地创建一个接受一系列主机作为参数的脚本,然后使用netcat访问该端口。该脚本遍历指定的主机,并将结果转储到数据库。这减轻了任何粗糙的pi侧执行。对于可伸缩性,只需运行多个脚本,每个脚本同时在您的大型服务器上使用不同范围的设备。