phpsnmpcacti

php's snmp2_real_walk function can not get the right cpu number


all. I have a question about the snmp2_real_walk.
my PHP version:PHP 5.1.6 OS: Red Hat Enterprise Linux Server release 5.5.I have a remost host with 8 core. And the localhost's machine cpu number is also 8 core.
When i use the snmpwalk command like following:

[root@webjk tmp]# snmpwalk -v 2c -c public xxx.xxx.xxx.xxx .1.3.6.1.2.1.25.3.3.1
HOST-RESOURCES-MIB::hrProcessorFrwID.768 = OID: SNMPv2-SMI::zeroDotZero  
HOST-RESOURCES-MIB::hrProcessorFrwID.769 = OID: SNMPv2-SMI::zeroDotZero  
HOST-RESOURCES-MIB::hrProcessorFrwID.770 = OID: SNMPv2-SMI::zeroDotZero  
HOST-RESOURCES-MIB::hrProcessorFrwID.771 = OID: SNMPv2-SMI::zeroDotZero  
HOST-RESOURCES-MIB::hrProcessorFrwID.772 = OID: SNMPv2-SMI::zeroDotZero  
HOST-RESOURCES-MIB::hrProcessorFrwID.773 = OID: SNMPv2-SMI::zeroDotZero  
HOST-RESOURCES-MIB::hrProcessorFrwID.774 = OID: SNMPv2-SMI::zeroDotZero   
HOST-RESOURCES-MIB::hrProcessorFrwID.775 = OID: SNMPv2-SMI::zeroDotZero  
HOST-RESOURCES-MIB::hrProcessorLoad.768 = INTEGER: 1  
HOST-RESOURCES-MIB::hrProcessorLoad.769 = INTEGER: 1  
HOST-RESOURCES-MIB::hrProcessorLoad.770 = INTEGER: 2  
HOST-RESOURCES-MIB::hrProcessorLoad.771 = INTEGER: 1  
HOST-RESOURCES-MIB::hrProcessorLoad.772 = INTEGER: 3  
HOST-RESOURCES-MIB::hrProcessorLoad.773 = INTEGER: 1  
HOST-RESOURCES-MIB::hrProcessorLoad.774 = INTEGER: 6  
HOST-RESOURCES-MIB::hrProcessorLoad.775 = INTEGER: 13  
HOST-RESOURCES-MIB::hrProcessorLoad.775 = No more variables left in this MIB View (It is past the end of the MIB tree)

Then i use the following php code:

<?php
$a=snmp2_real_walk("58.211.72.38:161", "public", ".1.3.6.1.2.1.25.3.3.1", (500 * 1000), 1);
print_r($a);
?>  

It comes with the result:

Array
(
    [HOST-RESOURCES-MIB::hrProcessorFrwID.768] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorFrwID.769] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorFrwID.770] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorFrwID.771] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorFrwID.772] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorFrwID.773] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorFrwID.774] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorFrwID.775] => OID: SNMPv2-SMI::zeroDotZero
    [HOST-RESOURCES-MIB::hrProcessorLoad.768] => INTEGER: 1
    [HOST-RESOURCES-MIB::hrProcessorLoad.769] => INTEGER: 1
    [HOST-RESOURCES-MIB::hrProcessorLoad.770] => INTEGER: 2
    [HOST-RESOURCES-MIB::hrProcessorLoad.771] => INTEGER: 1
    [HOST-RESOURCES-MIB::hrProcessorLoad.772] => INTEGER: 2
    [HOST-RESOURCES-MIB::hrProcessorLoad.773] => INTEGER: 1
    [HOST-RESOURCES-MIB::hrProcessorLoad.774] => INTEGER: 7
    [HOST-RESOURCES-MIB::hrProcessorLoad.775] => No more variables left in this MIB View (It is past the end of the MIB tree)
)  

When use snmp2_real_walk,it just find 7 cpu cores, not the snmpwalk's 8 cpu cores.But when i use the snmp2_real_walk to query localhost's cpu information or some remote host with 4 cores, it will comes the right result.
PS: i find this problem when i use the cacti 0.8.7e. I tried to use the SNMP - Get Processor Information data query to graph the 8 cores remote machine. But it only detect 7 cores. I find the cacti use the snmp2_real_walk function to get the cpu's information.


Solution

  • I have find out the problem. snmp2_real_walk need PHP >= 5.2 and my host's PHP version is 5.1.
    So i upgrade the PHP and the problem solved.