作为一名在 IT 基础设施监控方面预算有限的当地政府雇员,我(和其他员工)尽可能依赖低成本、免费和开源的工具来提供网络监控和基础设施报告解决方案。

我们最近能够利用带有 Cacti 的第三方 MIB 库来收集一些关于我们的防火墙的有趣统计数据,而且对于所获得的价值来说,这样做非常容易。

入门指南:我正在为 Cacti 编写本指南,但您可以_最有可能_为您的网络监控工具使用相同的技术,即使它是付费解决方案。此外,感谢Palo Alto Networks免费提供他们的 MIB 库,但请稍微搜索一下您选择的供应商,看看他们提供什么。最后,如果您想使用 Cacti 启动并运行,那么操作方法很容易获得。因此,让我们开始吧!

在我们的场景中,我们希望跟踪与我们的 VPN 网关的并发 VPN 连接的数量,并将该数据提供给管理层以用于使用、扩展和节省成本的目的。开箱即用,这很难做到;网关的内置 Web 管理工具不显示此统计信息。然而,一点互联网调查显示供应商_确实_有一个 SNMP MIB 包来监控这个数据点。

https://docs.paloaltonetworks.com/globalprotect/7-1/globalprotect-admin/set-up-the-globalprotect-infrastructure/globalprotect-mib-support#

备份一分钟 - SNMP 是简单网络管理协议。 SNMP 收集器可以通过运行“轮询”并在(至少)社区字符串(基本上是密码)上进行身份验证(希望如此)来从设备(目标)收集统计信息。

MIB 或管理信息库是称为 OID 或对象标识符的 SNMP 可轮询对象的分层数据库。 OID 是您尝试收集的数据。通常,OID 提供有关接口上使用的带宽之类的数据。当您定期在目标上运行轮询器时(通常为 5 分钟),您可以将结果绘制在图表上。

[bw_graph01](https://res.cloudinary.com/practicaldev/image/fetch/s--54C0rlon--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws .com/i/nptzkgw7didanzvxb7i.png)

MIB 有一些标准化,大多数 SNMP 收集器将预先安装通常的可疑对象,以方便收集接口统计信息、温度、处理器/内存利用率等信息。如果没有供应商同意使用标准 MIB,SNMP 的用处将大大降低;大多数收藏家开箱即用。在我们的案例中,我们正在寻找供应商提供的增强功能来监控他们的专有解决方案。

所以回到仙人掌。 Cacti 的工作原理是为几个底层进程集成一个 Web 界面,使一个普通的 Linux VM 成为一个强大的 SNMP 收集器,但“轮询器”是snmpd。在 CentOS 中,您可以在/usr/share/snmp/mibs中安装自定义 MIB - 对于我们使用的供应商 (Palo Alto)wget下载并解压压缩的 MIB 文件到mibs文件夹。请注意,它们还包括相关的校验和,但其他供应商可能没有,也不是必需的。

[mib_folder01](https://res.cloudinary.com/practicaldev/image/fetch/s--PTBbNNhZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws .com/i/1w3di1hgkpb1tgy4cj8c.png)

现在我们有了 MIB,我们需要告诉snmpd在进行投票时寻找它们。为此,我们向上到/usr/share/snmp并创建一个名为snmp.conf的文件并添加 MIB 文件,一次一行。在我们的例子中, GlobalProtect VPN 会话整数是PAN-COMMON-MIB, 所以我们添加到snmp.conf是一行 - 不需要重新启动守护程序。

mibs +PAN-COMMON-MIB

注意:还有一种方法可以同时添加所有 MIB 文件,但snmpd的文档并未明确推荐这样做。

现在我们的 MIB 文件已加载,我们转到供应商的文档以找出与我们要收集的数据相对应的 OID。为了跟踪这些 VPN 会话,OID 是 1.3.6.1.4.1.25461.2.1.2.5.1.3,并且 MIB 定义了一个后缀(请参阅您的供应商的文档,这将是有意义的)0,因此为了收集我们的数据,我们使用 1.3.6.1.4.1.25461.2.1.2.5.1.3.0。

为了在生产前对此进行测试,我们可以使用这种格式的snmpget命令,假设您使用的是 SNMP 版本 2(并且如果您没有运行_至少_版本 2,您会遇到问题):

snmpget -v2c -c $your_community_string $target.ip $OID

该命令立即轮询目标,并希望返回您的数据点。

PAN-COMMON-MIB::panGPGWUtilizationActiveTunnels.0 = INTEGER: 1197

从这里,我们可以在 Cacti 中创建我们的自定义轮询器。我们已经开始使用“通用 OID”模板创建一个新图表,并将我们刚刚测试的 OID 放入“自定义数据”字段,同时提供适当的标签。

[custom_01](https://res.cloudinary.com/practicaldev/image/fetch/s--GLBaPVDE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws .com/i/kbezpcys853dxdd40myx.png)

我们后来将“Generic OID”模板克隆到一个始终使用这个 OID 的新模板,这样我们就可以减少创建新图形的手动操作。在此处查看您选择的 SNMP 收集器的文档以获取相关操作方法。

我们现在有一个图表,显示了我们的云网关的 VPN 会话总数,可随时访问和跟踪:

[gp_sessions](https://res.cloudinary.com/practicaldev/image/fetch/s--MJljO1Q---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3。 amazonaws.com/i/838cm95kyabr6vqvayou.png)

概括

  • SNMP 是一种协议,可用于收集目标设备上的数据。它使用按层次分类到管理信息库 (MIB) 中的对象标识符 (OID) 来获取准确的数据。

  • 存在许多优秀的付费 SNMP 收集器,但可以使用 Cacti 等开源工具在任何预算内完成准确的收集和报告。

  • 如果您想要进行轮询/绘制图表,请咨询您的供应商。他们通常有免费的自定义 MIB 文件供您使用。 如果它是一个数值,它可能可以使用 SNMP 收集。

  • 在 Linux 中,MIB 通常存储在/usr/share/snmp/mibs

  • 在生产中使用之前,您可以使用snmpget命令测试自定义 MIB/OID 的功能。 (另外,查看snmpwalk命令)

保持冷静并监控!

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐