经过大量研究,我发现了问题所在。pfSense和FreeNAS都通过FreeBSD begemot SNMP守护程序(bsnmpd)提供SNMP支持。为了提供内存使用情况,CPU使用情况和平均负载信息,begemot SNMP守护程序需要snmp_ucd.so
加载一个附加模块。
我发现以下论坛线程解释要加载snmp_ucd.so
,但是在我的两个系统上却不存在。
为了解决这个问题,我创建了一个虚拟机并在上面安装了FreeBSD 8.3。在此虚拟机内部,我使用FreeBSD Ports系统使用以下命令下载并构建所需的snmp_ucd.so
库:
cd /usr/ports/net-mgmt/bsnmp-ucd
make all install clean
cd /usr/ports/net-mgmt/bsnmptools
make all install clean
之后,我曾经从FreeBSD虚拟机scp
复制/usr/local/lib/snmp_ucd.so
到pfSense服务器以及FreeNAS服务器。
然后,我使用FreeNAS GUI添加以下辅助参数:
begemotSnmpdModulePath."ucd" = "/mnt/Garrison/jail/usr/local/lib/snmp_ucd.so"
这自动将线添加到/etc/snmpd.config
FreeNAS服务器上,并且我能够获得图形!
pfSense服务器比较棘手,因为它不允许我使用GUI来应用更改,并且pfSense脚本将自动重建并/etc/snmpd.config
覆盖我的更改。为了使pfSense工作,我必须进行编辑/etc/inc/services.inc
。在这行之前的内容是:
fwrite($fd, $snmpdconf);
我添加了以下内容:
//Josh Additions: Make load avg and CPU usage work:
$snmpdconf .= <<<EOD
# Josh additions:
begemotSnmpdModulePath."ucd" = "/usr/local/lib/snmp_ucd.so"
EOD;
然后,禁用和重新启用SNMP将应用更改,并且CPU使用率图表现在可以正常工作!这种变化几乎肯定不会在pfSense升级中持续存在,但是我找不到更简单,更稳定的方法来应用该变化。