2013-07-01 3 views
1

Изображение: http://i40.tinypic.com/2hodx55.pngМониторинг сети

Я построил интерфейс монитора сети с помощью Php и SNMP, но теперь, когда я исполняю его на локальном хосте я вижу, мой график (0) снова и снова идет к зарождению (смотрите изображение), а также скорость на оси Y неверна. Время от времени это происходит в Миллонсе и Миллионах.

пожалуйста, может кто-нибудь сказать мне, что это проблема в коде ниже

<?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'], ",").']}'; 


      ?> 

ответ

0

То, что вы видите здесь, это классический случай опроса счетчик быстрее, чем интервал обновления. Часто бывает, что счетчики (в данном случае счетчики интерфейсов) обновляются каждые несколько секунд (10-15 секунд - это общее значение).

Если счетчик обновляется каждые 15 секунд, и вы запрашиваете данные каждые 5 секунд, вы получите одно и то же значение один или два раза подряд (в зависимости от времени ожидания, времени обработки и т. Д.). Если вы получили то же значениедважды, то вы увидите нулевое значение для дельты (это то, что показывает ваше изображение).

Есть два способа обойти это:

  1. Попросить данные реже, чем счетчики обновляются (30-секундный опрос, как правило, работает отлично). Очевидно, что если вы можете узнать точный интервал обновления, вы можете это использовать.
  2. Измените конфигурацию своего оборудования, чтобы обновить его счетчики быстрее. Иногда это возможно, иногда это не так; это зависит только от производителя, программного обеспечения и от того, что было реализовано.

Для Net-SNMP "SNMPD" демонов, вы можете ходить NET-SNMP-AGENT-MIB :: nsCacheTable (1.3.6.1.4.1.8072.1.5.3) для получения дополнительной информации о его внутреннем кэшировании счетчиков.

Например:

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) 

Здесь вы можете увидеть, что моя частная коробка кэширование IF-MIB :: ifTable (.1.3.6.1.2.1.2.2), который является таблица, в которой вы используя каждые три секунды. В моем случае я не стал бы запрашивать данные чаще, чем каждые три секунды. NET-SNMP-AGENT-MIB :: nsCacheTimeout (.1.3.6.1.4.1.8072.1.5.3.1.2) помечен как чтение-запись, поэтому вы можете выполнить команду «set», чтобы изменить продолжительность кэширования.

Смежные вопросы