collectd:使用动态 IP 作为网络插件

collectd:使用动态 IP 作为网络插件

我已经设置了一个服务器,用于收集其他不同服务器的统计信息。我正在使用 collectd 的网络插件,因此我通过设置侦听器来配置插件网络。

在我的网络中,我可以在配置中使用私有 IP 作为“服务器”。一切正常。其中一个服务器是远程服务器,只能通过互联网访问。因此,服务器配置为将数据发送到 DNS 地址(参见配置片段)。在此服务器上启动 collectd 服务后,它运行正常。如果我为我的连接获取了一个新的动态 IP 地址,远程服务器不会向 collectd 发送数据。只有当我在远程服务器上重新启动 collectd 时,它才会工作,直到 IP 地址再次更改。

我认为该插件在启动时仅解析一次 DNS 地址。有没有办法在不重新启动 collectd 服务的情况下解决我的问题?

配置:

<Plugin network>
#       # client setup:
        Server "name.of.server" "25826"
</Plugin>

答案1

有没有什么办法可以解决我的问题而无需重新启动 collectd 服务?

这个问题已经问过七年前。但除了重新启动 collectd 之外,仍然没有其他方法可以解决此限制。

另请参阅类似的 github 问题:网络插件无法自动重新连接动态 IP 地址

网络插件使用的是 UDP,因此没有真正的“连接”。修复此问题意味着对通过网络发送的每批值进行 DNS 查找,这会对性能造成影响。

我猜您在使用共享此设置的其他“客户端-服务器”系统时也遇到了这个问题?您无法通知 collectd 服务器 IP 地址已更改吗?或者在 DHCP 租约到期时重新加载 collectd?或者使用 AMQP 插件将值发送到服务器而不会有任何丢失的风险?我相信我们可以想象出其他解决方案,以解决看起来更像网络设置问题的问题。

相关内容