 |
Projet SNMP UPS WEB Monitor
Projet SNMP UPS WEB Monitor
Ce projet decrit l'installation et la configuration d'un monitoring de l'activite d'un onduleur via le protocole snmp
Les logiciels necessaire:
- installpkg ucd-snmp-4.2 pour la distribution slackware
- Les outils snmp sont inclus dans certaines version de php 4
Installation:
Il faut lancer le deamon snmptrapd qui intercepte tout ce qui arrive de la carte snmp et le place dans le syslog.
Exemple d'interrogation:
sous unix:
pokie:# snmpwalk 176.134.1.6 public 33
33.1.1.1.0 = "MGE UPS Systems"
33.1.1.2.0 = "ESV8+"
33.1.1.3.0 = "V1.1"
33.1.1.4.0 = "V3.35"
...
Le programme principal en php (demo):
<html>
<head>
<title>Infos Onduleur MGE</title>
</head>
<body>
<?
// php_mge.phps
//
// Ce script permet d'observer quelques parametres via le serveur apache
en php
// Il va interroger la carte snmp de l'onduleur MGE Pulsar ESV8 et regarder
dans
// les logs du systeme tous les defauts apparus depuis l'installation de
celui-ci.
//
// Ce script est adaptable aux autres onduleurs pourvus d'une interface snmp.
//
// Dans la section linux, vous trouverez egalement un tarball qui contient
des
// scripts et config pour recevoir un email sur son GSM lorsqu'un evenement
se produit.
//
// Le 8 Novembre 2002.
//
$ip_onduleur = 0.0.0.0; // Mettre ici l'IP de
l'onduleur
exec("snmpget $ip_onduleur public system.sysDescr.0 33.1.2.1.0 33.1.2.3.0 33.1.2.4.0 33.1.4.1.0 33.1.4.4.1.5.1",$pages);
$batteries = array ("2" => "OK", "3" => "Faibles", "4" => "Dechargees");
$modeond = array ("3" => "normal", "4" => "Bypass", "5" => "Batterie", "6" => "Booster", "7" => "Reducer");
$messond = array ( 0 => "Initialisation", 11 => "Alimentation onduleur
sur batterie",
12 => "Alimentation onduleur sur secteur", 17 => "<font color=red>Pas
de secteur</font>",
18 => "<font color=green>Retour du secteur</font>", 19 => "Mode booster",
20 => "Fin du mode booster", 29 => "<font color=gray>Attente</font>", 37 => "Probleme Communication",
38 => "Communication OK", 51 => "Mode buck", 52 => "Fin du mode buck");
echo "<br><table>\n";
for($i=0;$i<count($pages);$i++)
{
list($item,$tab)=split(" = ",$pages[$i],2);
switch ($i) {
case 0 : echo "<tr><td>Model</td><td>$tab</td></tr>\n"; break;
case 1 :
echo "<tr><td>Batteries</td><td>$batteries[$tab]</td></tr>\n";
break;
case 2 : echo "<tr><td>Autonomie</td><td>$tab mn</td></tr>\n"; break;
case 3 :
$tabi = $tab * 2;
$reste = 200 - $tabi;
echo "<tr><td>Charge batteries</td><td>";
echo "<img src=\"icons/gprg.png\" border=0 width=$tabi height=16>";
echo "<img src=\"icons/bprg.png\" border=0 width=$reste height=16>";
echo " $tab %</td></tr>\n";
break;
case 4 :
echo "<tr><td>Mode</td><td>$modeond[$tab]</td></tr>\n";
break;
case 5 :
$tabi = $tab * 2;
$reste = 200 - $tabi;
echo "<tr><td>Charge reseau</td><td>";
echo "<img src=\"icons/prg.png\" border=0 width=$tabi height=16>";
echo "<img src=\"icons/bprg.png\" border=0 width=$reste height=16>";
echo " $tab %</td></tr>\n";
break;
}
}
echo "</table>\n";
echo "<br>\n";
echo "<table width=600>\n";
echo "<tr><td>Date</td><td>Evènement</td></tr>\n";
$log = file("/var/log/syslog");
$nblog = count($log);
for ($i = 1; $i < $nblog; $i++) {
$data = chop($log[$nblog-$i]);
if (strpos($data,"Trap")) {
$date = substr($data,0,strpos($data," pokie"));
$even = substr($data,strpos($data,"(")+1);
$even = substr($even,0,strpos($even,")"));
echo "<tr><td>$date</td><td>$messond[$even]</td></tr>\n";
}
}
?>
</table>
</body>
</html>
|
 |