我们最近将我们的一台 MYSQL 机器升级为 2.5TB 的阵列。
这样做之后,OpenNMS 停止报告有关我们的 mysql 数据分区的信息......
当我做一个:
snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9
我在 /var/log/messages 中看到这个
Aug 3 16:44:11 mysql6 snmpd[8789]: Connection from UDP: [127.0.0.1]:47333
Aug 3 16:44:11 mysql6 snmpd[8789]: truncating signed value to 32 bits (10)
Aug 3 16:44:11 mysql6 snmpd[8789]: truncating signed value to 32 bits (10)
当我从 snmpd.conf 中删除分区时,我没有收到任何通知......其余资源数据都填充在 OpenNMS 中。
从我的谷歌搜索来看,这似乎是一个常见问题,但我找不到任何解决方案。
有人知道解决办法吗?
答案1
这实际上不是一个答案,但是对于评论来说它太大了。
- Linux 2.6.26-gentoo-r4 #10 SMP 2009 年 1 月 17 日星期六 22:38:48 EST i686 Intel(R) Celeron(R) CPU E1200 @ 1.60GHz 正版 Intel GNU/Linux
- NET-SNMP版本:5.4.2.1
- 逻辑卷大小:3.4TB
我没有遇到任何问题。但我不确定 snmpd 是否编译为 64 位。不过我很乐意为您做任何 (非侵入式) 检查。
答案2
我在另一个平台上遇到了这个问题。我发现您的日志告诉了您,它返回的值超过了有符号 32 位整数的最大值。特定的 SNMP 守护程序返回负数,这就是我发现它是有符号/无符号整数问题的原因。在我的脚本中,我进行了数学运算,将有符号整数转换为无符号整数,这将使我能够监视这个最大 4TB 的特定卷。此时,我几乎运气不佳。
至于解决方法……听起来它不会让您获得原始值,因此您可能必须编写一个脚本,该脚本将在查询特定 OID 时执行。此脚本将返回卷的 KB 值,而不是 B 值。这应该可以让您达到 16TB,然后才会达到最大值。
在您的 snmpd.conf 文件中,输入类似这样的内容(我从一些 vmware 笔记中抄袭过来,因此您使用的 OID 应该是其他内容):
exec .1.3.6.1.4.1.6876.99999.2.0 sqlvolspace /usr/local/script/sqlvolspace /dev/mapper/volname
然后,当您查询该 OID 时,您将获得一个适合 32 位整数的值。当然,您必须编写该脚本。它应该只返回一个整数。