使用 Nagios 监控网卡使用情况

使用 Nagios 监控网卡使用情况

按照这个问题我想使用 Nagios(而不是 Cacti)监控我的 Windows 服务器的网络利用率。

是否有人对使用 NSClient 或通过 SNMP 查询 WMI 计数器有任何指导,以便 nagios 可以收集 rrd 数据并使用 pnp4nagios 进行绘图?

或者有没有人有可以实现这个功能的插件?

谢谢

答案1

我正在使用 Centreon,它提供了 perl 脚本 check_centreon_snmp_traffic。

答案2

通过使用check_bandwidth3Nagios 插件并通过 SNMP 检查。我不知道为什么我没有想到先通过 SNMP 检查,因为这是我为我的思科套件收集统计数据的方式!

答案3

标准 Nagios 插件应该包含一个 SNMP 插件,它可以很好地检查 NIC 的带宽使用情况。当 SNMP 在混合环境中具有更高的互操作性时,我从未费心使用 WMI。我尽量不使用 NRPE 或 NSClient,因为这意味着如果您进行更改或更新插件,则需要做更多工作来维护它们。

至于能否使用 RRD 工具绘制 Nagios 的数据图表,您必须设置一个脚本,该脚本将从 Nagios 检查执行中收集性能数据,并使用这些数据填充您的 RRD 数据文件。Nagios 中没有任何东西可以做到这一点。基于 Nagios 的 Groundwork OpenSource Monitor 确实提供了一些功能来做到这一点。在我们的环境中,我们使用 Nagios 进行监控,使用 Cacti 进行绘图……即使用正确的工具来完成工作……

答案4

WMI 甚至可以用于快速接口。SNMP 对于 >=1Gbps 接口不太适用,因为 Windows 上没有 64 位计数器,并且32 位计数器溢出,性能监视器计数器也不会,因为它们只是速率(字节/秒),而不是绝对计数器 [1])。你提到你有 nsclient,它可以轻松查询 WMI,因此你可以这样做:

check_nrpe -H <host> -c CheckWMIValue -a 'Query=select BytesReceivedPersec, BytesSentPersec from Win32_PerfRawData_Tcpip_NetworkInterface where name = "<interface-name>"' Check:BytesReceived:=BytesReceivedPersec Check:BytesSent:=BytesSentPersec

尽管名称为 BytesReceivedPersec,这是一个 64 位计数器(总字节数),而不是速率(字节/秒)。

[1] - 任何已经采用速率形式(字节/秒)的东西(如 perfmon 计数器)都无法正常工作。例如,如果您每 5 分钟检查一次,假设您检查一个空闲接口并得到 0 BytesReceived/sec,然后在 3 分钟内下载/读取大文件并使接口达到最大值,然后它在下一分钟回到空闲状态。当您轮询 BytesReceived/sec 时,您将再次得到 0,即使大多数时间您都在提取大量数据。您需要一个绝对的 Bytes Sent/Received 计数器,以便您可以从第二次检查中减去第一次检查并除以时间间隔。

相关内容