Windows上的16TB卷和SNMP


12

随着大于16TB的卷变得越来越普遍,人们认识到,用于报告SNMP中的标准“ HOST-RESOURCES” MIB中的磁盘大小和使用情况的32位值不足以报告适当的磁盘大小。

Net-SNMP似乎已通过简单地操纵“ AllocationUnits”的值来维护磁盘利用率的32位值(因为总磁盘大小/使用量等于32位空间值乘以分配单位)来解决此问题,从而允许用于计算大于8 / 16TB的卷。假设您对分配单位没有任何报告兴趣,并且可以接受少量的误差。这似乎是一个优雅的解决方案。

https://bugzilla.redhat.com/show_bug.cgi?id=654384

但是,Window的内置SNMP服务似乎继续遭受此错误的困扰,仅报告已使用/分配的磁盘空间的模数,从而导致报告的磁盘大小不准确。

有没有一种方法可以使Windows正确报告超过16TB的卷的磁盘使用情况?我们试图简单地安装Net-SNMP 5.5 x64并完全禁用Windows SNMP服务,但是很遗憾,这不能解决我们的问题。

使用NetSNMP扩展时,我们为感兴趣的特定磁盘收集的信息如下:

在此处输入图片说明

无论我们使用的是原始Windows SNMP服务还是NetSNMP,这些结果都是相同的。

我见过仙人掌社区的人们提到只是编写解决方案的脚本。不幸的是,我们使用Observium进行快速和基本的系统监视。如果无法从Window侧解决此问题,是否可以使Observium报告自定义MIB?

- 更新 -

在错误报告中提到将“ realStorageUnits”添加到snmpd.conf文件中时,在设置该指令时我们遇到了以下问题:

realStorageUnits对我们不利

- 更新2 -

好吧,经过大量的修改,它看起来不像Net-SNMP的任何Windows版本都像“ realStorageUnits”指令一样。启动SNMP时,包含该指令将导致警告。我们尝试使用5.5、5.6和5.7版本。这里有没有人想出如何让SNMP在Windows上报告16 TB以上的卷?


您说安装Net-SNMPD不能解决问题。您是说它没有像预期的那样调整AllocationUnits,还是您没有成功运行它?
亚历山大·扬森

它似乎并没有改变分配单位。该服务运行良好,但是最后,它似乎并未更改所报告的内容-磁盘值仍然不正确,并且所报告的各种值仍与以前相同。我可以确认,但是“ SNMP Service”已停止,并且“ Net-SNMP Service”已启动。我有可能配置错误吗?
Univ426

另外,我还使用一个非常基本的v2c“ rwcommunity <string>”设置来公开树,以进行测试。
Univ426

首先,您可以查询OID .1.3.6.1.4.1.2021.100.2.0来检查它是否真的是Net-SNMP。在使用Net-SNMP的我的(Linux)主机上,它提供SNMPv2-SMI::enterprises.2021.100.2.0 = STRING: "5.4.1"
Alexander Janssen

我得到“ UCD-SNMP-MIB :: versionTag.0 = STRING:5.5”看起来有些不同,但是netSNMP 5.5是我已安装的版本。关闭Net-SNMP并打开Windows SNMP服务,我得到“ UCD-SNMP-MIB :: verionTag.0 =在MIB视图中没有其他变量了”,看来NetSNMP肯定正在运行
Univ426

Answers:


2

不久前,有一个 Net-SNMP 5.5 补丁,它realStorageUnits为配置文件引入了一个新选项。

来自Redhat Bugreport#748410

为了解决此问题(hrStorageSite值负),此更新为/etc/snmp/snmpd.conf配置文件realStorageUnits添加了一个新选项。通过将此选项的值更改为0,用户现在可以重新计算hrStorageTable中的所有值,以确保hrStorageSize和hrStorageAllocationUnits的乘积始终产生准确的设备大小。

([方括号]中的文字是我的)

因此,将配置指令添加realStorageUnits 0到snmpd.conf可能会解决您的问题。

但是,直到最后一个兆字节为止,这些值都是不正确的。嗯

我无法确定此修补程序是否包含在您的Net-SNMP二进制发行版中,但是如果您可以报告结果以及所使用的二进制文件,那就太好了。另外,我现在还没有测试它是否缺少足够的硬件。


感谢Alex,我们之前曾尝试过-很有希望-不幸的是,这样做时,我们收到以下错误-C:/usr/etc/snmp/snmpd.conf:第2行:警告:未知令牌:realStorageUnits。例如,该指令是否刚刚放到任何地方,即在“ rwcommunity private”下方?
Univ426 2012年

哈哈,是的,我之前曾经犯过这个错误-我仔细检查了一下,但会用图片更新我的问题。
Univ426

我是否有可能在写该指令时出错?
Univ426 2012年

不,看起来不错。抱歉,我现在迷路了。我没有适合您的Windows版本的计算机来验证这一点,但是,老实说,您的snmpd.conf看起来有点“小”。尝试使用v2c的最小配置。不知道这是否会有所帮助,但会确保没有其他时髦的东西发生。并且,根据localnet指令调整网络。
亚历山大·詹森

在Linux上使用我的最低配置的5.5可以从该realStorageUnits指令愉快地开始。如果仍然无法使用此功能,我会明显感觉到您正在使用的NetSNMP二进制文件中不包含此功能。
亚历山大·詹森

1

我知道这不是您问题的直接答案,但也许会有所帮助。我建议您尝试与制作SNMP Informant的团队联系:http : //www.snmp-informant.com/

它们扩展了Windows SNMP代理,以解决Microsoft对其某些OID的限制。我将它与Zenoss一起使用,以获得更准确的CPU利用率和存储数量,并且很有可能解决您的问题,但是我不能肯定地说。


您也可以使用它来查询WMI计数器。
SpacemanSpiff 2012年

这不是一个坏主意,我一定会考虑的。从理论上讲,Net-SNMP库应该执行相同的操作,但是其明显的自定义级别可能会有所帮助,谢谢!
Univ426
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.