我有两个脚本从 SAR 中获取值并将它们放在日志文件中(一个示例):
rxkBps=`sar -n DEV 1 295 | tail -n1 | awk '{print $5}'`
rxMbps=$(echo "scale=2;$rxkBps/128" | bc -l)
echo $rxMbps >./rxMbps.log
exit
该数字始终是十进制数(例如:0.06)。
在 snmpd.conf 中,我为两个脚本添加了一个扩展部分,该部分采用该数字并将其与本示例 Get_rxMbps 中表示的 OID 相关联:
extend Get_rxMbps /bin/sh /usr/local/bin/Get_rxMbps.sh
当我在 NET-SNMP-EXTEND-MIB::nsExtendObjects 上运行 snmpwalk 时,我会返回信息,但它会将其视为字符串,并且我们的监控软件无法转换或使用字符串信息。
NET-SNMP-EXTEND-MIB::nsExtendCommand."Get_rxMbps" = STRING: /bin/sh
NET-SNMP-EXTEND-MIB::nsExtendArgs."Get_rxMbps" = STRING: /usr/local/bin/Get_rxMbps.sh
NET-SNMP-EXTEND-MIB::nsExtendInput."Get_rxMbps" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."Get_rxMbps" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."Get_rxMbps" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."Get_rxMbps" = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."Get_rxMbps" = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."Get_rxMbps" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."Get_rxMbps" = STRING: .83
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."Get_rxMbps" = STRING: .83
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."Get_rxMbps" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."Get_rxMbps" = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."Get_rxMbps".1 = STRING: .83
我是新手,继承了别人的工作,所以如果有更好的方法我也愿意,但我需要 SNMP 来查看和使用该数字作为整数而不是字符串。