rddtool

Parlez ici des outils utilisables conjointement à Apache (analyseurs de logs... etc).

Modérateur : Modérateurs

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » ven. 12 nov. 2004, 20:29

Lu

avant j'avais mrtg, maintenant, j'utilise un script PHP qui fait l'update des bases RRD et qui fait faire les graphes aussi.

Le problème: mon script recupere des valeurs dispo par l'interface SNMP. Pour l'instant, j'ai pu trouver les OID mémoire et CPU. Ces deux graphes sont donc complets.

Par contre, il existe une node, ou on peut trouver netbytessentpersecond
mais aucune valeur n'est disponible dedans.
Comment avoir les valeurs des debits montant et descendant avec php (snmp ) sur une machine win32.


Ensuite, est-ce que les gens de l'exterieur (internet) peuvent lire mes infos MRTG ?? Par ce que, y a des trucs qui ne devraient pas être affiché. Encore un peu, et SNMP met a dispo mes mots de passe <_<

Une autre chtite question. J'utilise PHP, par ce que je me sert de rrdtool pour me faire des graphes a partir de données disponibles dans une base mysql.
Est-ce vraiment plus lent d'utiliser php plutot que perl (ou pas du tout). Est-ce que perl supporte mysql ?



Donc la question surtout, c'est pour faire un graph mrtg avec les debits
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.

Avatar de l’utilisateur
Gandalf
Sorcier des forums
Sorcier des forums
Messages : 2528
Inscription : jeu. 04 déc. 2003, 22:58

Messagepar Gandalf » sam. 13 nov. 2004, 13:38

est-ce que tu as une démo de ton script ? je suis curieux de voir ça :)

perl et php... kif-kif je pense... mais il faut aimer programmer en perl :P

sinon, oui, je pense qu'il existe un binding perl/mysql : <a href='http://search.cpan.org/search?query=mysql&mode=module' target='_blank'>http://search.cpan.org/search?query=mysql&mode=module</a>
Celui qui détruit quelque chose pour savoir ce que c'est, a quitté le chemin de la sagesse.

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » dim. 14 nov. 2004, 0:12

ben voila le script php.on peut configurer les prises de valeurs par mysql

Code : Tout sélectionner

<?php
$start=microtime();

//conf
$c["host"]="localhost";
$c["user"]="xxx";
$c["pwd"]="xxx";
$c["db"]="stats_bdd";
$c["prefix"]="snmp_";
$c["hosts"]="192.168.0.99";

$e="\n";

echo "There is ".mktime()."$e $e $e";

$c_host=str_replace(".","-",$c["hosts"]);

@mysql_connect($c["host"],$c["user"],$c["pwd"]) or die("SQL Connection error$e");
@mysql_select_db($c["db"])or die("BDD select error$e");


$mysql_res=mysql_query("SELECT * FROM ".$c["db"].".".$c["prefix"]."config ORDER BY id ASC");
echo "Searching nodes graph $i $e $e";
$first_exec=0;

while ($mysql_tbl=mysql_fetch_array($mysql_res,MYSQL_ASSOC))
{   
   if ($mysql_tbl["file"]!=$file AND $first_exec==1)
   {
  $templates=substr($templates,1);
  $values=substr($values,1);
  $output=shell_exec("rrdtool update ".$file.".rrd --template ".$templates." N:".$values);
  echo "Updating graph $file $templates;$values $e $e";
  $values="";
  $templates="";
   }
   echo "Node ".$mysql_tbl["node"]." found $e";
   $first_exec=1;
   if ($node!=$mysql_tbl["node"])
  $valuetest=@snmpwalk($c["hosts"], "public", $mysql_tbl["node"]);
   
   $valuetemp=split(":",$valuetest[$mysql_tbl["result"]]);
   $value=trim($valuetemp[$mysql_tbl["split"]]);
   $node=$mysql_tbl["node"];
   $file=$mysql_tbl["file"];
   
   $templates.=":".$mysql_tbl["name"];
   $values.=":".$value;
}
$templates=substr($templates,1);
$values=substr($values,1);
$output=shell_exec("rrdtool update ".$file.".rrd --template ".$templates." N:".$values);
echo "Updating graph $file $templates;$values $e $e";
$values="";
$templates="";
  
echo "Update end"."$e";

$end=microtime();
if ($end<$start) $end=$end+1;
echo "Execution: ".number_format(($end-$start),3)."s $e $e";
?>


il est pas fini, je pense qu'il y a 2,3 trucs a améliorer pour accèlerer l'execution.
En gros, la table contient toutes les infos permettant de recuperer une valeur données et ou la stocker. Ensuite, le script fait un update par exec().

Qu'en penses-tu ?



en se qui concerne le probleme de debit internet c'est reglé. Avant j'utilisais snmp4nt pour recuperer les valeurs sous winxp, et maintenant j'utilise informant, qui parait plus fiable, mais qui offre moins de nodes.
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » dim. 14 nov. 2004, 14:38

lol :lol:

je pensais pas qu'un visiteur serait assez bête pour essayer les login:xxx ,pass:xxx sur mon serveur mysql :D .



Voila, je l'ai modifié.

Code : Tout sélectionner

Ma table contient des enregistrement comme ça:
      id  file                node                                 name        split  
      1 rrdf_mbm_a .1.3.6.1.4.1.9600.1.10.6.1.5.0 temp_case 0
      1 rrdf_mbm_a .1.3.6.1.4.1.9600.1.10.6.1.5.1 temp_cpu 0
      1 rrdf_mbm_a .1.3.6.1.4.1.9600.1.10.6.1.5.48 fan_case 0
      2 rrdf_mbm_b .1.3.6.1.4.1.9600.1.10.6.1.5.32 volt_core1 0
      2 rrdf_mbm_b .1.3.6.1.4.1.9600.1.10.6.1.5.33 volt_core2 0
      2 rrdf_mbm_b .1.3.6.1.4.1.9600.1.10.6.1.5.34 volt_p3 0
      2 rrdf_mbm_b .1.3.6.1.4.1.9600.1.10.6.1.5.35 volt_p5 0
      2 rrdf_mbm_b .1.3.6.1.4.1.9600.1.10.6.1.5.36 volt_p12 0
      2 rrdf_mbm_b .1.3.6.1.4.1.9600.1.10.6.1.5.37 volt_m12 0
      2 rrdf_mbm_b .1.3.6.1.4.1.9600.1.10.6.1.5.38 volt_m5 0
      4 rrdf_network .1.3.6.1.4.1.9600.1.1.3.1.3.1 net_ul 1
      4 rrdf_network .1.3.6.1.4.1.9600.1.1.3.1.2.1 net_dl 1


Sur certaines nodes, je reçoit la valeur demandée, précédée du type de la valeur (gauge32,counter32 ..), ex: gauge32:245321012. Donc je peux demander un split dans ce cas pour prendre la deuxieme valeur.

Le dernier champ de la node specifie la ligne a prendre. Quand on demande des valeurs SNMP, desfois on en reçoit 10. En ajoute .2 a la node sondée, on va recevoir la ligne 3 (ça commence par 0).Si on ajoute .5 on aura la 6eme.

Le champ id, permet d'ordonner la table d'un certaine manière ainsi, comme les données a entrer dans le fichier mnm_a et ceux de mbm_b sont issu de la meme node .1.3.6.1.4.1.9600.1.10.6.1.5, ben on demande a ce que les données des deux fichiers a sonder sont executé a la suite, et dans le script, y a une ptite condition, qui evite de redemander des valeurs SNMP, si la node sondé précédement est la même...

j'ai vraiment beaucoup de mal a expliquer.

V'la une mise a jour du script, qui diminue le temps d'execution d'1/3.


Si toute fois quelqu'un est interessé, je reexpliquerai au calme.

Code : Tout sélectionner

<?php
$start=microtime();

//conf
$c["host"]="localhost";
$c["user"]="xxx";
$c["pwd"]="xxx";
$c["db"]="stats_bdd";
$c["prefix"]="snmp_";
$c["hosts"]="192.168.0.99";

$e="\n";

$c_host=str_replace(".","-",$c["hosts"]);

@mysql_connect($c["host"],$c["user"],$c["pwd"]) or die("SQL Connection error$e");
@mysql_select_db($c["db"])or die("BDD select error$e");


$mysql_res=mysql_query("SELECT file,node,name,split FROM ".$c["db"].".".$c["prefix"]."config ORDER BY id ASC");
echo "Recuperation des valeurs SNMP $e $e";

while ($sqltbl=mysql_fetch_array($mysql_res,MYSQL_ASSOC))
{   
   $svalue_range=substr(strrchr($sqltbl["node"],"."),1);
   $svalue_node=substr($sqltbl["node"],0,strlen($sqltbl["node"])-strlen($svalue_range)-1);
   
   if ($sqltbl["file"]!=$lastest_file AND $lastest_file!="")
   {
  $templates=substr($templates,1);
  $values=substr($values,1);
  shell_exec("rrdtool update ".$lastest_file.".rrd --template ".$templates." N:".$values);
  echo "Mise a jour des donnees de $lastest_file: $templates;$values $e $e";
  $values="";
  $templates="";
   }

   if ($lastest_node!=$svalue_node)
  $svalue_result=@snmpwalk($c["hosts"], "public",$svalue_node);
   
   $valuetemp=split(":",$svalue_result[$svalue_range]);
   $value=trim($valuetemp[$sqltbl["split"]]);
   
   $lastest_file=$sqltbl["file"];
   $lastest_node=$svalue_node;
   
   $templates.=":".$sqltbl["name"];
   $values.=":".$value;
}
$templates=substr($templates,1);
$values=substr($values,1);
shell_exec("rrdtool update ".$lastest_file.".rrd --template ".$templates." N:".$values);
echo "Mise a jour des donnees de $lastest_file: $templates;$values $e $e";
  
echo "Fin de la recuperation et de la mise a jour $e $e";

echo "Mise a jour des graphiques $e";
shell_exec("graphs.cmd");
echo "Fin de la mise a jour des graphiques $e $e";

$end=microtime();
if ($end<$start) $end=$end+1;
echo "Temps d'execution: ".number_format(($end-$start),3)."s $e $e";
?>
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.

Avatar de l’utilisateur
Geronimo
Grand chef des forums
Grand chef des forums
Messages : 212
Inscription : jeu. 04 déc. 2003, 21:14
Localisation : France
Contact :

Messagepar Geronimo » lun. 15 nov. 2004, 2:28

Salut Apis,

Regarde ici, ça devrait te donner des idées pour savoir ce que tu peux monitorer sous Windows avec SNMP...<a href='http://www.wtcs.org/snmp4tpc/' target='_blank'>http://www.wtcs.org/snmp4tpc/</a>

A+
Geronimo
Donne un poisson à un homme, tu le nourriras une journée.
Apprends-lui à pêcher, il mangera toute sa vie.

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » lun. 15 nov. 2004, 19:27

ouaip ouaip.

deja, je ne savais pas quoi prendre entre les deux. Depuis 1 ou 2 mois j'utilisais SNMP4NT.

Et donc avec le SNMP4NT, j'avais beaucoup de valeur qui n'étais pas données quand on les sondait: elles répondaient "Wrong parameter" sous getif, et rien du tout quand on sonde avec mrtg ou en php.

Finalement, le week-end dernier, je suis retourné sur le site, en me disant, j'ai du louper une etape, et j'ai installé le SNMP4W2K. Et puis c'était pareil. Ya vraiment pleins de valeurs a sonder dans les deux, mais chez moi, beaucoup de sont pas lisibles. J'ai pourtant essayé de refaire un truc propre en supprimant tout les .mib et en reinstallant snmp4nt et getif.

J'ai donc finalement installé snmp-informant.
On retrouve quand meme, les classiques, que les classiques:
-disques dur
-processeurs
-memoire
-interface reseau
-liste de processus, threads...

Ici, pas d'info sur l'état de l'OS, ou des différents protocoles, mais le peu qui est présent, fonctionne a tout les coups


Bon finalement, pour savoir, sous winxp, j'aurais du mettre snmp4nt ou snmp4w2k?


Voila l site, pour snmp-informant
<a href='http://www.snmp-informant.com/' target='_blank'>http://www.snmp-informant.com/</a>
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.


Revenir vers « Outils liés à Apache »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité