如何让 FreeNAS 和 pfSense 使用 SNMP 报告更多信息?

Jos*_*osh 10 freebsd freenas snmp pfsense

我有两台运行 FreeBSD 变体的服务器:一台是 pfSense 路由器,另一台是 FreeNAS 8 服务器。这两个服务器都运行 SNMP,我正在使用第三个 Cacti 服务器收集和绘制它们的信息。

来自 pfSense 服务器和 FreeNAS 服务器的 SNMP 数据不包括内存使用、CPU 使用和负载平均。

pfSense 服务器的流量图看起来不错。来自 FreeNAS 服务器的磁盘使用报告看起来很漂亮。我只是没有得到任何关于内存使用、CPU 使用和负载平均的数据。我知道这两个服务器都应该能够提供这些数据,因为在 pfSense 和 freeNAS 网络管理员中我可以查看图表。但为了便于管理,我更愿意将所有图表都放在 Cacti 中。

如何让我的 pfSense 服务器通过 SNMP 提供内存使用情况、CPU 使用情况和负载平均数据?如何让我的 FreeNAS 服务器通过 SNMP 提供内存使用、CPU 使用和负载平均数据?我假设相同的过程适用于两台服务器。

Jos*_*osh 11

在对此进行了大量研究后,我发现了问题所在。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
Run Code Online (Sandbox Code Playgroud)

在那之后,我曾经从 FreeBSD 虚拟机scp复制/usr/local/lib/snmp_ucd.so到我的 pfSense 服务器以及我的 FreeNAS 服务器。

然后我使用 FreeNAS GUI 添加以下辅助参数

begemotSnmpdModulePath."ucd" = "/mnt/Garrison/jail/usr/local/lib/snmp_ucd.so"
Run Code Online (Sandbox Code Playgroud)

FreeNAS 截图

这将自动添加到/etc/snmpd.configFreeNAS 服务器上的行,我能够获得图表!

pfSense 服务器更加棘手,因为它不允许我使用 GUI 应用更改,并且 pfSense 脚本会自动重建/etc/snmpd.config,覆盖我的更改。为了让 pfSense 工作,我必须编辑/etc/inc/services.inc. 在这行之前:

fwrite($fd, $snmpdconf);
Run Code Online (Sandbox Code Playgroud)

我添加了以下内容:

    //Josh Additions: Make load avg and CPU usage work:
    $snmpdconf .= <<<EOD
# Josh additions:
begemotSnmpdModulePath."ucd" = "/usr/local/lib/snmp_ucd.so"



EOD;
Run Code Online (Sandbox Code Playgroud)

然后,禁用和重新启用 SNMP 应用更改和 CPU 使用图现在工作!这种变化几乎肯定不会在 pfSense 升级中持续存在,但我找不到一种更简单、更稳定的方法来应用这一变化。