简体   繁体   中英

Network Monitoring

Image : http://i40.tinypic.com/2hodx55.png

I have built a Network Interface Monitor using Php and SNMP , but now when i execute it on localhost i see my graph goes to origin(0) again and again (Please see the image) and also the speed on Y axis is wrong. At times it goes in Millons and Millions.

please can anyone tell me what is the problem in the code below

<?php
  $int="wlan0";


session_start();

     $rx0 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.10.3');
     $tx0 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.16.3');
   sleep(5);
     $rx1 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.10.3');
     $tx1 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.16.3');

       $rx0 = substr($rx0, 11);
       $tx0 = substr($tx0, 11);
       $rx1 = substr($rx1, 11);
       $tx1 = substr($tx1, 11);

       $tBps = $tx1 - $tx0;
       $rBps = $rx1 - $rx0;

       $round_rx=$rBps;
       $round_tx=$tBps;



       $time=date("U")."000";


    $_SESSION['rx'][] = "[$time, $round_rx]";   
     $_SESSION['tx'][] = "[$time, $round_tx]";
      $data['label'] = $int;
         $data['data'] = $_SESSION['rx'];

              if (count($_SESSION['rx'])>60)
        {
        $x = min(array_keys($_SESSION['rx']));
         unset($_SESSION['rx'][$x]);

        }




            echo '{"label":"'.$int.'","data":['.implode($_SESSION['rx'], ",").']}';


             ?>

What you are seeing here is a classic case of polling a counter faster than its refresh interval. It is often the case that counters (in this case, interface counters) are updated every few seconds (10-15 seconds is a common value).

If the counter updates every 15 seconds, and you ask for data every 5 seconds, then you will receive the same value once or twice in a row (depending on latency, processing time, etc.). If you receive the same value twice , then you will see a zero value for the delta (which is what your image shows).

There are two ways to get around this:

  1. Ask for data less frequently than the counters are updated (30-second polling usually works fine). Obviously, if you can find out the exact refresh interval, then you can use that.
  2. Modify the configuration of your equipment to refresh its counters faster . Sometimes this is possible, sometimes it is not; it just depends on the manufacturer, the software, and what has been implemented.

For Net-SNMP "snmpd" daemons, you can walk NET-SNMP-AGENT-MIB::nsCacheTable (1.3.6.1.4.1.8072.1.5.3) for more information about its internal caching of counters.

For example:

snmpwalk -v2c -cpublic localhost 1.3.6.1.4.1.8072.1.5.3 | grep .1.3.6.1.2.1.2.2
NET-SNMP-AGENT-MIB::nsCacheTimeout.1.3.6.1.2.1.2.2 = INTEGER: 3
NET-SNMP-AGENT-MIB::nsCacheStatus.1.3.6.1.2.1.2.2 = INTEGER: cached(4)

Here, you can see that my particular box is caching IF-MIB::ifTable (.1.3.6.1.2.1.2.2), which is the table that you're using, every three seconds. In my case, I would not ask for data any more often than every three seconds. NET-SNMP-AGENT-MIB::nsCacheTimeout (.1.3.6.1.4.1.8072.1.5.3.1.2) is marked as read-write, so you might be able to issue an a "set" command to change the caching duration.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM