我有两台运行 FreeBSD 变体的服务器:一台是 pfSense 路由器,一台是 FreeNAS 8 服务器。这两个服务器都运行 SNMP,我正在使用第三个 Cacti 服务器收集和绘制它们的信息。
来自 pfSense 服务器和 FreeNAS 服务器的 SNMP 数据不包括内存使用、CPU 使用和平均负载。
pfSense 服务器的流量图看起来不错。来自 FreeNAS 服务器的磁盘使用报告看起来很漂亮。我只是没有获得有关内存使用情况、CPU 使用情况或平均负载的任何数据。我知道这两个服务器都应该能够提供这些数据,因为在 pfSense 和 freeNAS 网络管理员中我可以查看图表。但我更愿意将所有图表都放在 Cacti 中以便于管理。
如何让我的 pfSense 服务器通过 SNMP 提供内存使用情况、CPU 使用情况和负载平均数据?我怎样才能让我的 FreeNAS 服务器通过 SNMP 提供内存使用、CPU 使用和负载平均数据?我假设相同的过程适用于两台服务器。
经过大量研究后,我发现了问题所在。pfSense 和 FreeNAS 都通过FreeBSD begemot SNMP 守护进程 (bsnmpd)提供 SNMP 支持。为了提供内存使用情况、CPU 使用情况和平均负载信息,begemot SNMP 守护进程需要
snmp_ucd.so
加载一个额外的模块。我发现以下论坛线程解释加载
snmp_ucd.so
,但它不存在于我的两个系统上。为了解决这个问题,我创建了一个虚拟机并在上面安装了 FreeBSD 8.3。在这个虚拟机中,我使用 FreeBSD Ports 系统下载并构建所需的
snmp_ucd.so
库:在那之后,我曾经从 FreeBSD 虚拟机
scp
复制/usr/local/lib/snmp_ucd.so
到我的 pfSense 服务器和我的 FreeNAS 服务器。然后我使用 FreeNAS GUI 添加以下辅助参数:
这会自动将行添加到
/etc/snmpd.config
FreeNAS 服务器上,我能够得到图表!pfSense 服务器更棘手,因为它不允许我使用 GUI 应用更改,并且 pfSense 脚本会自动重建
/etc/snmpd.config
,覆盖我的更改。为了让 pfSense 工作,我必须编辑/etc/inc/services.inc
. 在阅读的行之前:我添加了以下内容:
然后,禁用并重新启用 SNMP 应用更改和 CPU 使用率图现在工作!这种变化几乎肯定不会在 pfSense 升级后持续存在,但我找不到更简单、更稳定的方法来应用这种变化。