我正在现场为许多系统收集 SNMP 数据,目前使用的是 Cacti。这些系统分布在许多并非始终连接到互联网的站点上,但我还需要将数据集中到单个系统(数据中心服务器)上并从中获取图表。
如果我使用集中式 Cacti 直接轮询远程系统,当站点未连接到互联网时,我会丢失数据。我应该在现场记录数据(我在每个站点都有一台服务器,我可以在上面运行任何我想要的东西),然后将所有内容“同步”到中央系统。
一种黑客攻击可能是使用 Cacti 或直接在rrdtool
现场,然后定期将rsync
RRD 数据传输到中央 Cacti 系统,但这听起来不像是一个“干净”的解决方案:每个 RRD 都必须在两个地方定义,并rsync
使用特定的文件名设置脚本。
您能建议一个更好的解决方案吗?Cacti 不是必需的,但我想在中央系统上使用类似的东西。现场系统只需要收集数据,我不需要在那里绘制图表或管理用户查看数据等的权限,用户只需访问集中式系统。
答案1
我将设置一个远程收集系统(一个简单的 snmp 轮询器),该系统可以远程存储数据,并且可以通过 http 或 ssh 进行联系...中央服务器将尝试定期联系远程服务。当它管理连接时,它会获取在此期间收集到的更新...
由于 rrdtool 能够很好地处理带时间戳的更新,因此您可以将更新重新播放到中央站点的 rrds 中……
作为奖励,您甚至可以看到相当不错的性能,因为在一次调用中对 rrd 运行多个更新比逐步执行要有效得多。
答案2
您需要某种机制来存储和转发。RRD 有一个rrdcached
,所以也许您可以缓存,然后在特定时间刷新到 NFS 挂载的磁盘。
您也可以转储、发送文件并恢复。这可能比移动整个文件更安全。
答案3
我曾经合作过的一个站点也有类似的情况,即在连接建立时 rsync 文件。但他们没有使用 cacti,只是使用基本的 mrtg。我将研究对 nagios 及其基于 pnp4nagios 的 rrd 文件执行相同的操作,这样当卫星未启动时,我们可以查看它们以用于历史记录。
问题类似 - 我可以让这些实例存在于中央服务器上,但实际上不进行任何轮询,这样我就可以拥有一个只读实例吗?我预计我必须动态编辑 nagios 配置文件以在每次更新后关闭所有检查处理。也许禁用通知和 pnp4nagios 输入,以确保万一意外执行检查时安全。
因此,您网站的问题是,cacti(在中央服务器上)是否有办法做到这一点,以便一些受监控的主机可以存在但实际上不进行轮询。这样,每个远程对象的配置文件也可以通过 rsync 同步下来。
否则,也许可以使用 drraw 或类似工具来查看远程站点?不过最好有一个控制台界面!