Bekijk Volledige Versie : [TK] NOC Script
Heb hier nog een NOC script liggen inc admin...
Meer Info:
Noc script houd van elke server uptime bij en checkt elke x min (welke je kan instellen via een cron) of de server nog up is en doet de results in een database.
En als iemand noc bezoekt ziet hij het aantal uptime in %.
Via admin kan je server toevoegen en poorten toevoegen die bij elke server worden gecheckt.
Geef maar een goed bod ;)
http://85.92.134.155/~kenneth/noc/ , design is natuurlijk te veranderen ;)
Draait dit ook op Windwos?
Zou moeten werken, zolang je een php bestand maar kan uitvoeren elke x min.
Overgens wordt het script per licentie verkocht met een prijs 40 euro inc btw (met factuur).
(wou hem eerst via bieden verkopen maar wil toch gewoon per stuk verkopen)
En hoe gaat dit script werken als er een NAT firewall voorhangt? Want wij hebben zelf ook zoiets draaiend gehad, maar dat werkte dus van geen meter aangezien de servers achter onze NAT firewalls hingen en zodra de server down ging reageerden de firewalls nog wel
En hoe gaat dit script werken als er een NAT firewall voorhangt? Want wij hebben zelf ook zoiets draaiend gehad, maar dat werkte dus van geen meter aangezien de servers achter onze NAT firewalls hingen en zodra de server down ging reageerden de firewalls nog wel
Hij opent een socket naar IP -> Poort, dus de Poort zou gewoon open moeten staan... je mag het ook wel testen of het werkt als je wil.
prijs 40 euro inc btw (met factuur).
Zou hem willen bestellen. Neem even contact met mij op via: info@technotop.nl
Vraagje; Kan je het script zo maken dat hij per maand de uptime onthoud? Wil namelijk mooi onder elkaar de maanden en daarvan de uptime. Zou dit mogelijk zijn?
Kan het script zo worden gemaakt dat je van elke maand de stats krijgt? Zoals http://www.mijn-sleutel.net/?pagina=uptime ?
op het moment niet maar het is wel mogelijk, zal eens gaan kijken ;)
op het moment niet maar het is wel mogelijk, zal eens gaan kijken ;)
Graag, zou mooi zijn als het kan :)
Wilde net even kijken alleen werkt de link niet meer ! heb ook interesse !
Wilde net even kijken alleen werkt de link niet meer ! heb ook interesse !
oops idd, http://kenneth.ek-hosting.nl/noc/ ;)
Kan je mij ook even een mailtje sturen ? en mededelen of die maanden onder elkaar kunnen !?
Info@bullcatwebhosting.nl
Script nog steeds te koop?
Axel, heb wel een exemplaar voor je, zie www.eliveldnetworks.nl/noc/. Extragratis omdat ik vandaag een goede dag heb. En, vanzelfsprekend, met SMS systeem ingebouwd.
Origineel komt trouwens van PCX, zijn wel wat costum aanpassingen gemaakt.
Cool, hoe gaan we communiceren... via MSN (msn@xynta.nl)?
Extragratis omdat ik vandaag een goede dag heb.
Hier is ook wel interesse voor zo'n supervoordeligextragratis scriptje :D
Ook hier interesse in dat extragratis script :D
Hier ook interesse in extra gratis.
En toen was die stil...
Hallo, mag ik ook nog even eten en de kleine de fles geven... Die was niet stil.
En toen was die stil...
Extragratis en dan binnen 40 minuten een reactie verwachten :O
Hallo, mag ik ook nog even eten en de kleine de fles geven... Die was niet stil.
Ik bedoelde er echt niks mee hoor :). Het was slechts een observatie.
lol xynta toch... :D
Mareh, Randy, als je hem mij kan pmen? Wilde net zoiets gaan maken, ik zal hem wel pimpen dan, stuur ik je die versie ook weer. (rapporten genereren)
Hm? Hoe krijgen jullie de load van alle servers op één pagina? Op alle servers een file plaatsen die de load weergeeft? Interesse :)
Mensen,
Even een mail sturen naar randy@aklmedia.nl als je interesse hebt (of MSN). Ga hem hier niet posten want dan wordt hij een week later te koop gezet door een of andere 'oplichter' en met dergelijke zaken wil ik geen referte hebben.
Vanavond om 20.00 uur gaat er een batch uit.
Ik moet zeggen dat dit wel erg veel op mijn oude NOC lijkt. De source daarvan heb ik ooit vrij gegeven.
Mocht dit zo zijn, schaam je dan diep, heel erg diep...
Ik moet zeggen dat dit wel erg veel op mijn oude NOC lijkt. De source daarvan heb ik ooit vrij gegeven.
Mocht dit zo zijn, schaam je dan diep, heel erg diep...
EDIT: Ik denk dat ik het wel zeker weet. Mensen, schaam je erg diep. Mijn spullen (of in ieder geval op basis daarvan) doorverkopen.
Laag en kinderachtig! Stel kleutertjes :)
Gek dat het op je script lijkt he? :)
"Origineel komt trouwens van PCX, zijn wel wat costum aanpassingen gemaakt."
Gek dat het op je script lijkt he? :)
"Origineel komt trouwens van PCX, zijn wel wat costum aanpassingen gemaakt."Ik doelde op de verkoper, niet op Randy.
Vind het prima als mensen het gebruiken, maar zodra het de verkoop in gaat dan ben ik niet zo blij.
En nee Wido, het wordt niet doorverkocht. Darvoor moet je bij iemand anders op het forum zijn...
De basis komt inderdaad, zoals reeds aangegeven, van het PCX-script. Maar dit was duidelijk vermeld.
Randy, en naar ik begrijp ook Wido ;) , bedankt!
Btw, leuke notice in leesmij.txt :D
Hier is er ook interesse om dit script te kopen...Is dit nog mogelijk?
Even mailen: randy@aklmedia.nl, dan zend ik hem je toe.
Voor alle 40+ ontvangers: Mocht je een bijgewerkte versie hebben, laat het me even weten en deel de code zoals deze ook met u wordt gedeeld. Worden we er allemaal beter op en hoeven we het wiel niet twee keer uit te vinden. De GNU(tella) licentie :-)
Ik wil e.e.a. wat grafischer maken, maar er nog niet in depth naar gekeken, zal uiteraard aanpassingen posten :)
Ja, bij Mark17 :D
Scripts waar ik gratis aan kom gaan ook weer gratis weg, zo is het origineel dat ik via via heb van het oude PCX noc systeem gratis aan te vragen.
Scripts waar ik gratis aan kom gaan ook weer gratis weg, zo is het origineel dat ik via via heb van het oude PCX noc systeem gratis aan te vragen.
waar is die PCX script dsn te krijgen
kan meschien ook eens wat mee piellen
Zoeken op forum.pcextreme.nl
Edit: http://forum.pcextreme.nl/index.php?showtopic=6249&hl=uptime
ErikKosters
30/05/06, 08:02
Ik wil niet veel zeggen, maar Kenneth begint dit topic over een NOC script..
SebastiaanStok
30/05/06, 17:01
Wido heb je dat script nog?
Ik wou hem namelijk eerst downloaden maar hij was offline gehaald :(
Het is enkel ter studie omdat ik graag wil weten hoe julie het doen.
Indien je hem niet vrij geeft wil ik graag weten: Hoe kan je de uptime het beste bij houden? (om welke X minuten de cron draaien, hoe alles uitrekenen, doe je per totaal aantal mininuten over de hele maand rekenenen of er dag en hoe dat dan weer precies :huh: )
Ik heb het script zelf niet meer. Een paar klanten van ons hebben hem nog.
Wij gebruiken tegenwoordig iets heel anders.
De uptime kan je uitrekenen door een log bij te houden. En daar te kijken hoe vaak het fout ging.
SebastiaanStok
30/05/06, 18:50
Ja dat weet ik :)
Maar het reken sometje.
Ik zelf zat te denken aan dit:
Om de mininut controleren, dan kan je kijk je per uur wat het totaal is als dat lagen is dan bij voorbeeld 60% word dat u niet mee gerekend.
Met het aantal uren kijk je hoeveel je per dag hebt, is dat lager dan bij voorbeeld 80% dan word die dag niet mee gerekend.
Aan het aantal dagen dat wel goed was bereken je de uptime van die maand.
Of zit ik nu gigantich te klote :p
SebastiaanStok
01/06/06, 18:20
Ik heb nu het Noc-script maar ik mis servercheck.php :(
En hoe berekend je de gemidelde uptime?
Je checkt per minuut... Elke check sla je op. dus check++
Dan heb je ook nog uptime. Als hij up is geef je + 100 anders doe je + 0
Dan doe je uptime / checks = gemiddelde :)
Voorbeeld: http://noc.intronic.nl/
servercheck.php (deze is wel heel erg aangepast door mijzelf...)
<?php
include("config.php");
function checkserver($ip,$poort){
if($poort == 80){
$fp = fopen("http://". $ip ."/noc.php","r");
if(!$fp){
return false;
} else {
$content = trim(fgets($fp));
if($content > 100){
return false;
} else {
return true;
}
}
} elseif($poort == 3306){
$conn = fsockopen($ip,$poort,$errno,$err,5);
if(!$conn){
return false;
} else {
return true;
}
} elseif($poort == 21){
$conn = ftp_connect($ip);
if(!$conn){
return false;
} else {
return true;
}
} else {
$conn = fsockopen($ip,$poort,$errno,$err,5);
if(!$conn){
return false;
} else {
return true;
}
}
}
$servers = $db->query("SELECT * FROM servers");
while($row = $db->fetch($servers)){
$maand = date("m-Y");
$select = $db->query("SELECT * FROM uptime WHERE maand = '".$maand."' AND serverid = '".$row["serverid"]."'");
if($db->num($select) == "1") {
$data = $db->fetch($select);
$checks = $data['checks'];
$uptime = $data['uptime'];
} else {
$checks = "0";
$uptime = "0";
}
/*
Status 30 is goed te bereiken, 20 is 1x slecht te bereiken geweest,
status 10 is 2x slecht te bereiken geweest en status 0 is echt down.
*/
$check = checkserver($row["ip"], $row["poort"]);
if(!$check){
if($row["status"] == 30){
$status = 20;
$checks = $checks+1;
$uptime = $uptime+100;
$email = 0;
} elseif($row["status"] == 20) {
$status = 10;
$checks = $checks+1;
$uptime = $uptime+100;
$email = 0;
} elseif($row["status"] == 10) {
$status = 0;
$checks = $checks+1;
$uptime = $uptime+0;
$email = 1;
} else {
$status = 0;
$checks = $checks+1;
$uptime = $uptime+0;
$email = 0;
}
} else {
$status = 30;
$checks = $checks+1;
$uptime = $uptime+100;
$email = 0;
}
if($email == 1) {
$server = explode(".",$row['hostname']);
$onderwerp = strtoupper($server[0]).": ".$row['servicetype']." DOWN";
$to = $config_email1;
$header = "From: ".strtoupper($server[0])."\n";
$header .= "Bcc: ".$config_email2."\n";
mail($to,$onderwerp,"",$header);
}
$maand = date("m-Y");
$select = $db->query("SELECT * FROM uptime WHERE maand = '".$maand."' AND serverid = '".$row["serverid"]."'");
if($db->num($select) == "1") {
$db->query("UPDATE uptime SET uptime = '".$uptime."', checks = '".$checks."' WHERE serverid = '". $row["serverid"] ."' AND maand = '".$maand."'");
$db->query("UPDATE servers SET last_check = '".mktime()."', status = '".$status."' WHERE serverid = '".$row["serverid"]."'");
} else {
$db->query("INSERT INTO `uptime` (`uptimeid`, `serverid`, `maand`, `uptime`, `checks`) VALUES ('', '".$row["serverid"]."', '".$maand."', '".$uptime."', '".$checks."');");
$db->query("UPDATE servers SET last_check = '".mktime()."', status = '".$status."' WHERE serverid = '".$row["serverid"]."'");
}
}
?>
ErikKosters
01/06/06, 22:55
Graag ontopic..
<?php
include("./inc/config.php");
function checkserver($ip,$poort){
if($poort == 80){
$fp = fopen("http://". $ip ."/noc.php","r");
if(!$fp){
return false;
} else {
$content = trim(fgets($fp));
if($content > 5){
// Load is hoger dan 5 waarschuwing sms sturen naar de beheerder
mysql_query("UPDATE `servers` SET `load`= '". $content ."' WHERE `ip` = '". $ip ."' LIMIT 1");
return false;
} else {
mysql_query("UPDATE `servers` SET `load`= '". $content ."' WHERE `ip` = '". $ip ."' LIMIT 1");
return true;
}
}
} elseif($poort == 3306){
$conn = fsockopen($ip,$poort,$errno,$err,5);
if(!$conn){
return false;
} else {
return true;
}
} elseif($poort == 21){
$conn = ftp_connect($ip);
if(!$conn){
return false;
} else {
ftp_close($conn);
return true;
}
} else {
$conn = fsockopen($ip,$poort,$errno,$err,5);
if(!$conn){
return false;
} else {
return true;
}
}
}
function sendsms($sms, $afzender, $sms_user, $sms_pass, $sms_url){
$select = mysql_query("SELECT `telefoon` FROM `ontvangers`");
while($row = mysql_fetch_array($select)){
$telefoon .= $row["telefoon"].",";
}
$sms = urlencode($sms);
$to = urlencode($telefoon);
$$afzender = urlencode($afzender);
$url = $sms_url."?username=". $sms_user ."&password=". $sms_pass ."&afzender=". $afzender ."&ontvanger=". $to ."&message=". $sms;
$result = implode ('', file($url));
}
$sms = NULL;
$select = mysql_query("SELECT * FROM `servers`");
while($row = mysql_fetch_array($select)){
/*
Status 30 is goed te bereiken, 20 is 1x slecht te bereiken geweest,
status 10 is 2x slecht te bereiken geweest en status 0 is echt down.
*/
$check = checkserver($row["ip"], $row["poort"]);
if(!$check){
if($row["status"] == 30){
$status = 20;
} elseif($row["status"] == 20){
$status = 10;
} elseif($row["status"] == 10){
$status = 0;
$last = mysql_query("SELECT `last_sms` FROM `servers` WHERE `serverid` = '". $row["serverid"] ."' LIMIT 1");
$fetch = mysql_fetch_array($last);
$diff = time() - $fetch["last_sms"];
if($diff > 1800){
$sms .= $row["ip"].":".$row["poort"]." is offline (". $row["servicetype"] .")";
mysql_query("UPDATE `servers` SET `last_sms`= UNIXTIMESTAMP () WHERE `serverid` = '". $row["serverid"] ."' LIMIT 1");
}
} else {
$status = 0;
}
} else {
$status = 30;
}
$sql = "UPDATE `servers` SET `last_check` = UNIX_TIMESTAMP(), `status` = '$status' WHERE `serverid` = '". $row["serverid"] ."' LIMIT 1";
if(!mysql_query($sql)){
echo mysql_error();
}
}
if(!empty($sms)){
mail($emailadres, $onderwerp, "Bericht: \n$sms", "From: $sitenaam");
// sendsms($sms, $afzender, $sms_user, $sms_pass, $sms_url);
}
unset($sms);
?>
SebastiaanStok
02/06/06, 09:44
Ik snap het :)
Ik zal cheks dan wel moeten omzetten naar minimum van een tijd(dag/maand) omdat ik nog geen aparte NOC-server heb.
En als deze server uitvald klop die cheks niet meer :D Krijg ik bijna altijd 100% :p
Bedank voor de informatie.
Ik snap het :)
Ik zal cheks dan wel moeten omzetten naar minimum van een tijd(dag/maand) omdat ik nog geen aparte NOC-server heb.
En als deze server uitvald klop die cheks niet meer :D Krijg ik bijna altijd 100% :p
Bedank voor de informatie.
Rollerscapes kan jij dan het aangepaste noc script uploaden want ik heb ook wel interrese in een uptime report.
Trouwens weet iemand waarom er af en toe geen Load meer bij staat
Je checkt per minuut... Elke check sla je op. dus check++
Dan heb je ook nog uptime. Als hij up is geef je + 100 anders doe je + 0
Dan doe je uptime / checks = gemiddelde :)
Voorbeeld: http://noc.intronic.nl/
servercheck.php (deze is wel heel erg aangepast door mijzelf...)
<?php
include("config.php");
function checkserver($ip,$poort){
if($poort == 80){
$fp = fopen("http://". $ip ."/noc.php","r");
if(!$fp){
return false;
} else {
$content = trim(fgets($fp));
if($content > 100){
return false;
} else {
return true;
}
}
} elseif($poort == 3306){
$conn = fsockopen($ip,$poort,$errno,$err,5);
if(!$conn){
return false;
} else {
return true;
}
} elseif($poort == 21){
$conn = ftp_connect($ip);
if(!$conn){
return false;
} else {
return true;
}
} else {
$conn = fsockopen($ip,$poort,$errno,$err,5);
if(!$conn){
return false;
} else {
return true;
}
}
}
$servers = $db->query("SELECT * FROM servers");
while($row = $db->fetch($servers)){
$maand = date("m-Y");
$select = $db->query("SELECT * FROM uptime WHERE maand = '".$maand."' AND serverid = '".$row["serverid"]."'");
if($db->num($select) == "1") {
$data = $db->fetch($select);
$checks = $data['checks'];
$uptime = $data['uptime'];
} else {
$checks = "0";
$uptime = "0";
}
/*
Status 30 is goed te bereiken, 20 is 1x slecht te bereiken geweest,
status 10 is 2x slecht te bereiken geweest en status 0 is echt down.
*/
$check = checkserver($row["ip"], $row["poort"]);
if(!$check){
if($row["status"] == 30){
$status = 20;
$checks = $checks+1;
$uptime = $uptime+100;
$email = 0;
} elseif($row["status"] == 20) {
$status = 10;
$checks = $checks+1;
$uptime = $uptime+100;
$email = 0;
} elseif($row["status"] == 10) {
$status = 0;
$checks = $checks+1;
$uptime = $uptime+0;
$email = 1;
} else {
$status = 0;
$checks = $checks+1;
$uptime = $uptime+0;
$email = 0;
}
} else {
$status = 30;
$checks = $checks+1;
$uptime = $uptime+100;
$email = 0;
}
if($email == 1) {
$server = explode(".",$row['hostname']);
$onderwerp = strtoupper($server[0]).": ".$row['servicetype']." DOWN";
$to = $config_email1;
$header = "From: ".strtoupper($server[0])."\n";
$header .= "Bcc: ".$config_email2."\n";
mail($to,$onderwerp,"",$header);
}
$maand = date("m-Y");
$select = $db->query("SELECT * FROM uptime WHERE maand = '".$maand."' AND serverid = '".$row["serverid"]."'");
if($db->num($select) == "1") {
$db->query("UPDATE uptime SET uptime = '".$uptime."', checks = '".$checks."' WHERE serverid = '". $row["serverid"] ."' AND maand = '".$maand."'");
$db->query("UPDATE servers SET last_check = '".mktime()."', status = '".$status."' WHERE serverid = '".$row["serverid"]."'");
} else {
$db->query("INSERT INTO `uptime` (`uptimeid`, `serverid`, `maand`, `uptime`, `checks`) VALUES ('', '".$row["serverid"]."', '".$maand."', '".$uptime."', '".$checks."');");
$db->query("UPDATE servers SET last_check = '".mktime()."', status = '".$status."' WHERE serverid = '".$row["serverid"]."'");
}
}
?>
Worden jou uptime percentages per maand daar ook automatisch mee berekend?
SebastiaanStok
02/06/06, 11:27
Over de uptime: Ik gaat zelf iets maken, ik heb alleen een voorbeeld nodig.
Ik zelf werkt met php5 en postgresql8 en wat eigen gemaakte classes dus helaas kan ik het niet met julie delen.
Je kijkt gewoon hoeveel minuten er in een maand zitten en dat is dan je minimale totaal, dan kijk je hoeveel keer hij heeft geteld alles wat niet bestaat is weer een beetje minder.
Maar het probleem is (wat ik niet zeker weet) is dat als de server 5 minuten down was je gelijk 10% minder hebt maar dit weet ik niet helemaal zeker :)
aantal minuten in een maand van 30 dagen: 30*24*60 = 43200
5 minuten down = 100 - ( (5*100) / 43200 ) = 99,988% uptime
Ik zal dit weekend wel even mijn versie delen. Ik moet hem eerst alleen even ombouwen want er zit van alles in gebouwt wat niet van toepassing voor de rest...
Ik kijk trouwens alleen naar port 80 tegenwoordig en de load. Dat is het belangrijkste lijkt me...
uptime kan je toch ook gewoon berekenen aan de hand van het aantal gefaalde metingen?
Je moet immers de uptime berekenen, niet de downtime, en dat kan al vanaf meting 1.
Ik zal dit weekend wel even mijn versie delen. Ik moet hem eerst alleen even ombouwen want er zit van alles in gebouwt wat niet van toepassing voor de rest...
Ik kijk trouwens alleen naar port 80 tegenwoordig en de load. Dat is het belangrijkste lijkt me...
Mwah aangezien mySQL toch nog af en toe wel eens op zn gat wil gaan houd ik die liever ook in de gaten. En de SMTP server ook... Zijn vaak kleine dingen om te fixen, maar grote punten voor klanten. Websites waarvan mySQL down is is heel groot irritatiepunt en meestal op te lossen door simpele restart.
ja maar het nadeel is alleen als je op port 3306 controleert dat je niet merkt als hij is vast gelopen... Dit heb ik ook al eens gehad. Dan moet je op die server een eigen script zette en die een query laten uitvoeren. Als deze dan mislukt een email verzenden naar jezelf... Dit is denk ik betrouwbaarder.
SebastiaanStok
02/06/06, 12:28
En wat als je dat email adres uit de database moet halen :D
SMTP kan volgens mij weinig mee fout gaan tenzij je hem kopeld aan Mysql :X
Ik heb op mijn test server de SMTP nu aan Postgresql gekopeld, nu nog op de productie server doorvoeren.
Voor totaale uptime kan je de ping(UDP) port moniteren.
En wat als je dat email adres uit de database moet halen :D
Dan ben je een domme programmeur :D
aantal minuten in een maand van 30 dagen: 30*24*60 = 43200
5 minuten down = 100 - ( (5*100) / 43200 ) = 99,988% uptime
Die som met die 5 minuten dat klopt toch niet bereken maar.
Ok, herinneren jullie nog de eerste post van deze thread? Wil de TS aub even een nieuw topic maken net zoals alle offtopic posters. Om moe van te worden...