如何从间歇性连接的网站收集SNMP读数?

我正在为现在使用Cacti的许多系统收集SNMP数据。 这些系统分布在许多并不总是连接到互联网的网站上,但我也需要将数据集中在一个系统(数据中心服务器)上,并从中获取图表。

如果我直接使用集中式仙人掌轮询远程系统,当网站没有连接到互联网时,我会丢失数据。 我应该在现场logging数据(我在每个站点都有一台服务器,我可以运行任何我想要的),然后将所有内容“同步”到中央系统。

一个黑客可能是一个仙人掌或直接rrdtool现场,然后定期rsync RRD数据中央Cacti系统,但这听起来不像一个“干净”的解决scheme:每个RRD将不得不在两个地方定义和rsync脚本用特定的文件名设置。

你能提出更好的解决scheme吗? 仙人掌不是要求,但我想在中央系统上使用类似的东西。 现场系统只需要收集数据,我不需要在那里图表或pipe理用户查看数据和类似的东西的权利,用户将只能访问集中式系统。

    我会设置一个远程收集系统(一个简单的snmp轮询),远程存储数据,可以通过http或ssh联系…中央服务器将尝试定期联系远程服务服务。 当它pipe理连接时,它将获得同时收集的更新…

    由于rrdtool可以很好地处理时间戳更新,因此可以在中央站点重新播放更新到rrds中。

    作为一个奖励,你甚至可以看到相当不错的performance,因为在一次调用中将多个更新转换为rrd比起来一步一步地更有效。

    你需要一些机制来存储和转发。 RRD有一个rrdcached所以也许你可以caching,然后在某些时候刷新到一个NFS挂载的磁盘。

    你也可以转储,发送文件和恢复。 这可能比移动整个文件更安全。

    与我一起工作的一个站点有一个类似的情况是rsync连接启动时的文件。 他们不使用仙人掌,只是基本的mrtg。 我将看看对于Nagios和基于pnp4nagios的rrd文件也是这样,所以我们可以在卫星未启动的时候查看它们的历史logging。

    问题是相似的 – 我可以有这些实例存在于中央服务器上,但实际上没有任何轮询,所以我可以只有一个只读的实例? 我希望我将不得不编辑nagiosconfiguration文件,以closures每次更新后的所有检查处理。 也许禁用通知和pnp4nagiosinput只是为了安全以防止意外执行检查。

    所以你的网站的问题是,如果cacti(在中央服务器上)有一个这样做的方式,所以一些受监控的主机可以存在,但实际上并没有进行轮询。 通过这种方式,每个远程对象的configuration文件也可以只是rsync的。

    否则,也许可以使用drraw或类似的工具来查看远程站点? 虽然最好有一个控制台界面!