Misschien is dit wel wat: http://www.status2k.com/
Afdrukvoorbeeld
Misschien is dit wel wat: http://www.status2k.com/
Nee dit is eigen bouw
Misschien moeten we eens gaan werken aan NOC 2.0. Arnold, tijd voor wat jQuery en CSS werk?
Wel jammer dat je nu per jaar moet betalen. Ik heb het 2 jaar terug gekocht voor 15 dollar namelijk.
Werkt wel erg goed. Je kan nieuws plaatsen op de pagina en deze aanpassen aan je eigen stijl.
Randy : als je dat wilt doen : graag ;-)
Ik heb gisteren zelf iets simpels in elkaar geflanst. Ga het nog uitbreiden met geschiedenis van een servers, en SMS. Mocht er iemand interesse in het script tot nu toe hebben hoor ik het wel.
http://noc.dacira.nl
(Alles is toe te voegen via MySQL. Zowel de services als de servers. Je kan dus zelf de services aanmaken.)
Prijs? Ik zeg toch hebben, wil het hier best plaatsen. Ga ook uitbreidingen maken, dus als iemand mee wil helpen? We kunnen er best een totaalpakket van maken.
Laad nu inderdaad de pagina gewoon opnieuw, wil het nog iets gaan uitbreiden door het met ajax te doen.
Dit is gratis, uitbreiding wil ik wel commerciëel maken. Als er geïnteresseerden zijn om samen zoiets te maken, roep maar dan maken we een afspraak.
Overigens heb je hier wel PDO voor nodig, het bestaat uit 1 bestand + 3 images. En natuurlijk de database.
Hoe controleer je de servers? Zet anders het script hier als code in.. wie weet hebben anderen input.
Dit is hem nu:
Code:<?php
echo "<meta http-equiv='refresh' content='5;URL=index.php'>";
define("DATAB_TYPE","mysql"); // DATABASE TYPE
define("DATAB_HOST","localhost"); // DATABASE HOSTNAME
define("DATAB_USER","user"); // DATABASE USERNAME
define("DATAB_PASS","pass"); // DATABASE PASSWORD
define("DATAB_DATA","db"); // DATABASE DATABASE
// MAAK CONNECTIE MET DE DATABASE VIA PDO
$db = new PDO(DATAB_TYPE.':host='.DATAB_HOST.';dbname='.DATAB_DATA.'',DATAB_USER,DATAB_PASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// FUNCTIE OM DE BESCHIKBAARHEID VAN EEN SERVICE TE BEPALEN
function check($ip,$poort) {
$check = @fsockopen($ip,$poort,$error1,$error2,5);
if (!$check) {
return "<img src='down.png'>";
}
else {
return "<img src='up.png'>";
}
}
// HAAL DE SERVERS OP EN WEERGEEF DEZE IN EEN ARRAY
$sql = $db->prepare("SELECT id,hostname,ipadres FROM servers WHERE status='Actief' ORDER BY hostname ASC");
$sql->execute();
$servers = $sql->fetchAll(PDO::FETCH_ASSOC);
// HEADER CREATIE
echo "<h1>NOC</h1>";
echo "<table>";
echo "<tr>";
echo " <td><strong>Naam:</strong></td>";
// HAAL BESCHIKBARE SERVICES OP EN WEERGEEF DEZE
$sql = $db->prepare("SELECT id,naam,poort FROM services ORDER BY poort ASC");
$sql->execute();
$services = $sql->fetchAll(PDO::FETCH_ASSOC);
foreach($services as $service) {
echo "<td><strong>".$service['naam']."</strong></td>";
}
echo "</tr>";
// WEERGEEF ALLE SERVERS IN RIJEN ONDER ELKAAR
foreach ($servers as $server => $value) {
echo "<tr>";
echo "<td>".$value['hostname']."</td>";
foreach($services as $service) {
// HAAL DE SERVICES VAN EEN SERVER OP
$sql = $db->prepare("SELECT * FROM servers_services WHERE server_id = ? AND service_id = ?");
$sql->execute(array($value['id'],$service['id']));
$result = $sql->rowCount();
if ($result == 1) { // ALS DE SERVICE BIJ DE SERVER GECONTROLEERD MOET WORDEN
echo "<td>".check($value['ipadres'],$service['poort'])."</td>";
}
else { // ALS DE SERVICE NIET GECONTROLEERD HOEFT TE WORDEN OF NIET DRAAIT
echo "<td><img src='unused.png'></td>";
}
}
echo "</tr>";
}
echo "</table>";
?>
Ik ben zelf ook even wat in elkaar aan het knutselen:
Client server:
- middels een cronjob worden de volgende acties ondernomen:
- haalt gegevens van de client server op mbt load, hdd ruimte en dergelijke.
- controleert of de masterserver beschikbaar is. Zo niet, gebruikt hij een andere masterserver.
- stuurt de verkregen info naar de masterserver
Master server:
- ontvangt de informatie van de client server
- controleert of de poorten op de client server bereikbaar zijn
- slaat de verkregen informatie in het juiste formaat op in de database.
- daarnaast draait op de master een cronjob die controleert of alle client servers op tijd de laatste info hebben verstuurd, mocht een client server niet op tijd zijn moet er gecontroleerd worden of de poorten van die client server bereikbaar zijn.
Dit lijkt mij persoonlijk beter, omdat je zo veel meer info kunt ophalen en het vergt minder van de master server.