2013-07-01 2 views
1

Image: http://i40.tinypic.com/2hodx55.pngSurveillance réseau

J'ai construit une interface réseau moniteur à l'aide Php et SNMP, mais maintenant quand je l'exécute sur localhost je vois mon graphe va à l'origine (0) encore et encore (S'il vous plaît voir l'image) et la vitesse sur l'axe Y est incorrecte. Parfois, ça se passe dans Millons et Millions.

s'il vous plaît quelqu'un peut me dire quel est le problème dans le code ci-dessous

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


      ?> 

Répondre

0

Ce que vous voyez ici est un cas classique de l'interrogation d'un compteur plus rapide que son intervalle de rafraîchissement. Il arrive souvent que les compteurs (dans ce cas, les compteurs d'interface) soient mis à jour toutes les quelques secondes (10-15 secondes est une valeur commune). Si le compteur est mis à jour toutes les 15 secondes et que vous demandez des données toutes les 5 secondes, vous recevrez la même valeur une ou deux fois de suite (en fonction de la latence, du temps de traitement, etc.). Si vous recevez le même valeur deux fois, alors vous verrez une valeur nulle pour le delta (qui est ce que vos spectacles d'images).

Il y a deux façons de contourner ce problème:

  1. demander des données moins fréquemment que les compteurs sont mis à jour (30 secondes polling fonctionne généralement très bien). Évidemment, si vous pouvez trouver l'intervalle d'actualisation exact, vous pouvez l'utiliser.
  2. Modifier la configuration de votre équipement pour rafraîchir ses compteurs plus rapidement. Parfois c'est possible, parfois non. cela dépend du fabricant, du logiciel et de ce qui a été implémenté.

pour Net-SNMP daemons "de SNMPD", vous pouvez marcher NET-SNMP-AGENT-MIB :: nsCacheTable (1.3.6.1.4.1.8072.1.5.3) pour plus d'informations sur la mise en cache interne des compteurs.

Par exemple:

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) 

Ici, vous pouvez voir que ma boîte particulière est mise en mémoire cache IF-MIB :: ifTable (.1.3.6.1.2.1.2.2), qui est la table que vous êtes en utilisant, toutes les trois secondes. Dans mon cas, je ne demanderais pas de données plus souvent que toutes les trois secondes. NET-SNMP-AGENT-MIB :: nsCacheTimeout (.1.3.6.1.4.1.8072.1.5.3.1.2) est marqué en lecture-écriture, de sorte que vous pourriez être en mesure d'émettre une commande « set » pour modifier la durée de la mise en cache.

Questions connexes