Bekijk Volledige Versie : Het grote NOC-Script support-topic
Oke, op verzoek mogen jullie hier verder gaan met de NOC-vragen/antwoorden. (Randy hoopt nog steeds grote uitbereidingen te zien omdat het script al >100x de deur uitgegaan is)
*wacht ook op uitbereidingen!*
zodra onze NOC server draait ga ik eraan beginnen ;) (morgennacht online dus zondagmiddag ;))
*wacht ook op uitbereidingen!*
zodra onze NOC server draait ga ik eraan beginnen ;) (morgennacht online dus zondagmiddag ;))
Wat voor uitbreidingen zou je dan willen zien?
@Randy, is het geen idee omdit in het zgn. Tutorial subforum te gooien?
Iemand zou een uptime report erin bouwen zodat er kan gezien worden wat de uptime is per maand.
Weet iemand hoe ik de regels om en om een achtergrond kleur moet geven?
Dus zoals hieronder:
wit
grijs
wit
grijs etc
Denk dat het er dan mooier uitziet en de leesbaarheid wordt vergroot bij langere lijst.
Ik ben zelf meer thuis in het design en html gedeelte. Dus mocht iemand daar aanpassingen willen dan hoor ik het graag. Kunnen we gezamelijk een mooi uitziend NOC maken.
Dennie-DeTi
03/06/06, 13:21
Even een simpele oplossing voor het om en om een kleurtje geven:
In het bestand status.php moet je volgende code toevoegen:
Op regel 21 ( voor de query ):
$even = true; //Of false, afhankelijk van met welke kleur je wil beginnen
En in de while lus vervang je het echo gedeelte door:
if( $even ) {
$style = "style='background-color: red;'"; //Verander hier de kleur voor even rijen.
$even = false;
}else {
$style = "style='background-color: white;'"; //Verander hier de kleur voor oneven rijen.
$even = true;
}
echo "
<tr ". $style . ">
<td><a href=\"http://". $row["hostname"] ."/\" target=\"_new\">". $row["hostname"] ."</a></td>
<td>". $row["servicetype"] ."</td>
<td>". $row["load"] ."</td>
<td>". $status ."</td>
<td>". date("d-m H:i:s", $row["last_check"]) ."</td>
</tr>
";
Ik hoop dat dit is wat je bedoeld en dat je er wat aan hebt. Je kan het uiteraard ook met een class doen en dan in je css file de kleuren zetten.
- Dennie
Background-color op <tr>'s werkt niet in IE, moet je op <td> niveau doen.
ik doe het ook op TR en dat werkt gewoon hoor in IE...
InterNetjes
03/06/06, 13:50
Weet iemand hoe ik de regels om en om een achtergrond kleur moet geven?
Dus zoals hieronder:
wit
grijs
wit
grijs etc
Denk dat het er dan mooier uitziet en de leesbaarheid wordt vergroot bij langere lijst.
Ik ben zelf meer thuis in het design en html gedeelte. Dus mocht iemand daar aanpassingen willen dan hoor ik het graag. Kunnen we gezamelijk een mooi uitziend NOC maken.
<?
$i=0;
$array=array(10,20,30,40,50,60,70,80,90,100);
echo "<table>";
foreach ($array as $value)
{
if (($i%2)==0) $color="********"; else $color="#DDDDDD";
echo "<tr><td style='background-color:".$color.";'>".$value."</td></tr>";
$i++;
}
echo "</table>";
?>
## Bgcolor function :: bgcolor(string $color)
function bgcolor($color) {
if($color == "") {
$color = "eerste kleur";
} elseif($color == "tweede kleur") {
$color = "eerste kleur";
} elseif($color == "eerste kleur") {
$color = "tweedekleur";
}
return $color;
}
Handige functie... Plaatje in je whileloop
als
bgcolor($color);
dan waar je de kleur wilt hebben in je whileloop plaats je de $color variable. Simpel :)
Raymond Karsten van Intronic IS jij hebt het mooi overzicht met de uptime report en zelfs een historie report ervan.
Zou je dit willen delen met ons?
@Randy, is het geen idee omdit in het zgn. Tutorial subforum te gooien?
Wat is hier een tut aan ?:)
Raymond Karsten van Intronic IS jij hebt het mooi overzicht met de uptime report en zelfs een historie report ervan.
Zou je dit willen delen met ons?
Volgens mij is dat allemaal nog handmatig...
crazycoder
03/06/06, 15:32
Volgens mij is dat allemaal nog handmatig...
Is een eitje om in een database te proppen.
Kan je gelijk zaken als load ook meenemen.
Nee dat word netjes uit het database gehaald. Ik heb helaas nog geen tijd gehad de code even aan te passen zodat iedereen het kan gebruiken. Dus geduld mensen.
Uhm, als iemand mij het script wil sturen op timmiieej {at} hotmail {dot} com. Dan wil ik het script uitbreiden waar nodig, zoals uptime per maand enz...
Ik zal het goede voorbeeld dan maar geven :p Hier is mijn aangepaste versie van noc.php zonder exec() functie en met "toegangscontrole"...
<?php
// In $allow kun je de ip adressen of netwerken plaatsen die toegang hebben
// tot de load informatie van de server.
//
// Let op, het ip wordt als string behandeld. 192.168.1 geeft dus een
// match voor 192.168.1.*, 192.168.11.* en 192.168.111.*
$allow = "192.168.0. 127.0.0.1";
$filename = "/proc/loadavg";
header("Content-Type: text/plain");
$ips = explode(" ", $allow);
foreach ($ips as $ip) {
if (strpos($_SERVER['REMOTE_ADDR'], $ip) === 0) {
if ($fp = fopen($filename, "r")) {
$load = fgets($fp, 64);
fclose($fp);
} else {
$load = "-1";
}
$result = explode(" ", $load, 2);
echo $result[0];
exit;
}
}
echo "Access denied, please leave...";
?>
Wie volgt :D
Ik ben met dingen aan het voorbereiden om een uitgebreidere versie gratis ter download aan te bieden. Deze is gebaseerd op dit script (enkel werkt deze net iets anders).
Ik ben met dingen aan het voorbereiden om een uitgebreidere versie gratis ter download aan te bieden. Deze is gebaseerd op dit script (enkel werkt deze net iets anders).
Ik ben benieuwd naar je werk.
Ik ben bezig met wat aanpassingen, maar op het moment hebben we het erg druk.
Ik zal het goede voorbeeld dan maar geven :p Hier is mijn aangepaste versie van noc.php zonder exec() functie en met "toegangscontrole"...
<?php
// In $allow kun je de ip adressen of netwerken plaatsen die toegang hebben
// tot de load informatie van de server.
//
// Let op, het ip wordt als string behandeld. 192.168.1 geeft dus een
// match voor 192.168.1.*, 192.168.11.* en 192.168.111.*
$allow = "192.168.0. 127.0.0.1";
$filename = "/proc/loadavg";
header("Content-Type: text/plain");
$ips = explode(" ", $allow);
foreach ($ips as $ip) {
if (strpos($_SERVER['REMOTE_ADDR'], $ip) === 0) {
if ($fp = fopen($filename, "r")) {
$load = fgets($fp, 64);
fclose($fp);
} else {
$load = "-1";
}
$result = explode(" ", $load, 2);
echo $result[0];
exit;
}
}
echo "Access denied, please leave...";
?>
Wie volgt :D
hoort dit niet in een .htaccess file?
hoort dit niet in een .htaccess file?
Huh, uit welke kroeg kom jij vandaan?
Huh, uit welke kroeg kom jij vandaan?
ik bedoel meer de toegangs controle je moet niet dingen in je script gaan doen die je ook al(en misschien sneller) op een ander niveau kan doen. en load zou ik zelf ook niet op die manier uitlezen maar met snmpd doen(OID .1.3.6.1.4.1.2021.10.1.3.1).
heb hem ook geinstalled, maar ik zit te stoeien met me cronjob. Heeft er iemand een goede cronjob lijn voor me? want de mijne werken niet.
Als ik:
php /*map*/*map*/servercheck.php
uitvoer geeft hij dat hij inc/config.php etc niet kan vinden met nog wat andere foutmeldingen (o.a. niet kunnen connecten naar db)
als ik php servercheck.php uitvoer (in de map zelf) dan werkt het wel, alleen dit is weer niet vanuit een cronjob uit te voeren.
/usr/local/bin/php -q -f /home/gebruikersnaam/domains/uw-domeinnaam/public_html/scripts/scripts.php > /dev/null
of:
GET http://www.domeinnaam.nl/map/script.php > /dev/null
/usr/local/bin/php -q -f /home/gebruikersnaam/domains/uw-domeinnaam/public_html/scripts/scripts.php > /dev/null
of:
GET http://www.domeinnaam.nl/map/script.php > /dev/null
volgens mij doet de bovenste het, zover ik net heb getest.
Ik zal binnenkort de hele package ff opnieuw maken, met een goede readme.txt etc :)
Hier is versie 0.1
Het is allemaal nog heel erg beperkt. Ik wil eerst weten wat jullie precies zoeken. Moet er een hele layout omheen of moet ik hem zo kaal mogelijk laten?
Op dit moment maak hij alleen netjes het overzicht, mailt als er iets down is en hij bewaard alles netjes voor de komende jaren.
Suggesties, opmerkingen en vragen zijn welkom.
Er zit een readme.txt bij. Succes!
Hier is versie 0.1
Het is allemaal nog heel erg beperkt. Ik wil eerst weten wat jullie precies zoeken. Moet er een hele layout omheen of moet ik hem zo kaal mogelijk laten?
[QUOTE]
Op dit moment maak hij alleen netjes het overzicht, mailt als er iets down is en hij bewaard alles netjes voor de komende jaren.
Waar bewaard hij dan de overzicht van de komende jaren?
Suggesties, opmerkingen en vragen zijn welkom.
Ik mis de Load functie en de sms functie of vind je die niet interresant?
Lijkt mij toch wel handige functies.
Is het misschien ook handig ter info om de hoeveelheid van dagen dat de server online is?
Is er ergens al een demo te zien?
Bugfixje:
in bestand add_servers.php de lijn include("config.php"); veranderen naar include("../config.php");
of config.php bestand in de admincp map zetten ;)
----------------------------------------------------
En nog 1:
Warning: Division by zero in /var/www/index.php on line 33
Warning: Division by zero in /var/www/index.php on line 33
Is er ergens al een demo te zien?
komt er nu aan :) ff me servers toevoegen en klaar
Waar bewaard hij dan de overzicht van de komende jaren?
Ik mis de Load functie en de sms functie of vind je die niet interresant?
Lijkt mij toch wel handige functies.
Is het misschien ook handig ter info om de hoeveelheid van dagen dat de server online is?
Alles word opgeslagen in het database. Na elke nieuwe maand begint hij opnieuw met tellen. Dus alles blijft netjes bewaard. Een overzicht van afgelopen perioden uptime is dus simpel te maken.
Load functie zit er niet in. Wel als de load hoger dan 100 is dan geeft hij ook een down aan. Je ontvangt dus ook e-mail.
SMS is simpel op te lossen. www.gin.nl gebruik ik zelf ook en werkt perfect. Waarom moeilijk doen als het makkelijk kan?
@ BerArt: Voorbeeld heb ik niet. Misschien dat iemand het online kan zeten :) Zoveel werk is het niet.
@DutchTSE: Klein foutje inderdaad: Zal ik meenemen in de volgende versie als er wat meer dingen bij komen want voor zo'n klein dingetje ga ik niet even een nieuwe versie maken :) Ik had add_servers.php namelijk later verplaatst in de admincp map.
Is er ergens al een demo te zien?
http://noc.myh2oservers.com/
en een demotje :)
persoonlijk vind ik de versie van randy mooier (http://noc.myh2oservers.com/noc/), maar ik wacht rustig af wat dit gaat worden ;)
Ideeën zijn welkom natuurlijk ;)
Ideeën zijn welkom natuurlijk ;)
De load functie, uptime in dagen functie, verschillende services (poorten) functie
nooit tegen mij zeggen dat ik met ideeen moet komen :D (2 ervan kun je uit randy zijn script halen btw)
verschillende poorten zitten er express niet in... Een klant wil alleen zien of de server online is ja of nee. Niet wat er offline is.
Load weergeven moet niet zo'n probleem zijn lijkt me. even kijken :)
Ideeën zijn welkom natuurlijkVerschillende poorten monitoren
sms en e-mail meldingen na b.v x down meetingen
meten vanuit meerdere lokaties
output voor klanten
verschillende poorten zitten er express niet inMaar de hoster wil het mss wel zien? of is het alléén voor de klant bedoeld? soms is het voor een klant best makkelijk als hij weet dat alléén de MySQL server down is b.v.?
Ik heb het script nog niet bekeken, maar slaat ie altijd de status op in de database of alleen bij downtime?
Als ie alles opslaat in de database lijkt me dit op den duur niet echt handig meer. Als je 5 servers hebt en hij controleert elke 5 minuten (5*12*24*365) dan heb je iets van 100.000 records per jaar. Zou het daarom niet beter zijn (snelheid?) om alleen deze info op te slaan als een server down is?
ik zal kijk naar de mogelijkheden :)
Ik heb het script nog niet bekeken, maar slaat ie altijd de status op in de database of alleen bij downtime?
Als ie alles opslaat in de database lijkt me dit op den duur niet echt handig meer. Als je 5 servers hebt en hij controleert elke 5 minuten (5*12*24*365) dan heb je iets van 100.000 records per jaar. Zou het daarom niet beter zijn (snelheid?) om alleen deze info op te slaan als een server down is?
Hij maakt per server 1 record per maand aan. Dus per jaar voor 1 server 12 rows. :)
Maar de hoster wil het mss wel zien? of is het alléén voor de klant bedoeld? soms is het voor een klant best makkelijk als hij weet dat alléén de MySQL server down is b.v.?
Hier inderdaad dezelfde gedachte, dit script is primair voor onze noc pagina, waar zowel wij als de klant kunnen kijken ;)
Iemand al een idee voor als de NOC server down is? Of als de NOC server helemaal niks kan bereiken omdat daar een probleem is?
verschillende poorten zitten er express niet in... Een klant wil alleen zien of de server online is ja of nee. Niet wat er offline is.
Load weergeven moet niet zo'n probleem zijn lijkt me. even kijken :)
Heb geprobeerd die load functie uit de script van Randy te halen maar het werdt een totale ramp dus ik krijg het niet voor elkaar.
Tevens de mannier hoe ik de komende maanden kan laten zien als geschiedennis (zoals jij het nu op je website hebt) krijg ik ook niet voor elkaar.
Over nagedacht wat gebeurt er als de server down is die het script draait?
Over nagedacht wat gebeurt er als de server down is die het script draait?
Dan moeten we maar backup voor elkaar draaien he :W:
dan heb je pech :) daarom moet je hem 2x draaien he... Een mede hoster is vast wel zo vriendelijk dit scriptje voor je te draaien lijkt me. Als jij hetzelfde voor hem doet.
@mordor: Heb je misschien het script van randy voor me. Kan ik even kijken hoe die er precies uitziet want ik ben wel benieuwd geworden.
wat moet de output van noc.php zijn? de laaste load value?
want ik krijg
PHP Notice: Undefined offset: 16 in /root/noc/noc.php on line 13
volgens mij kan je dan beter met pop() werken. heb je iig altijd de laatste.
ik zal ook is kijken of ik zoiets in perl en postgres/xml kan maken
hm raar. Ik zal even kijk naar die pop() functie :)
Over nagedacht wat gebeurt er als de server down is die het script draait?
Meten is een hobby van me, daarom bied ik bij deze (onder behoud van fair use policy) tien gratis micro accountjes aan om je script te kunnen draaien vanaf een andere server/netwerk.
wbakker-letsgoonline
07/06/06, 21:41
Nog een demo:
http://www.dark-network.net/server_status.php
hm raar. Ik zal even kijk naar die pop() functie :)
in php heet het array_pop() zie ik nu http://nl3.php.net/manual/en/function.array-pop.php
Ik vond de check voor een http server in het script van Randy niet helemaal geweldig. Vooral het ontbreken van een mogenlijkheid om op een adere poort te kunnen checken was een probleem voor mij. Ik heb nu zelf het onderstaande in elkaar geknutseld. Is dit iets, of werkt het icm. bepaalde webservers niet?
function check_LOAD($host, $port, $timeout = TIMEOUT) {
// Return: -1 -> Server responding normal (only no load info returned)
// -2 -> Server not responding
$load = -2;
$socket = @fsockopen($host, $port, $errno, $err, $timeout);
if ($socket) {
fwrite($socket, "GET /noc.php HTTP/1.0\r\nHost: ". $host ."\r\nUser-Agent: ServerCheck 1.0\r\n\r\n");
$http_response = fgets($socket, 16);
if (strpos($http_response, "200 OK")) {
$http_response = fread($socket,1024);
$load = trim(substr($http_response, strpos($http_response, "\r\n\r\n")));
} elseif (ereg("HTTP/[0-9].[0-9] ([0-9]{3})", $http_response)) {
$load = -1;
}
fclose($socket);
}
return $load;
}
Graag jullie kommentaar...
Ik heb er ook ff mee zitten spelen, ik heb nog nooit zo rigoreus geknipt en geplakt, maar volgens mij heb ik het toch goed gedaan:
DutchTSE presents:
randy zijn script + uptime percentage :D
http://noc.myh2oservers.com/noc/
WebXtrA-Rámon
08/06/06, 02:10
Goed werk, ziet er overzichtelijk uit!
ErikKosters
08/06/06, 02:16
je mag je tijd wel ff syncen of verbeeld ik me
je mag je tijd wel ff syncen of verbeeld ik me
Mijn server update 1x per 5 min ;)
Bijna voltooid met readme.txt, zodirect komt nieuwe versie hier te staan :)
edit: sorry het gaat nog ff duren, ik ga lekker door met verbeteren :p
Je ging toch slapen zei je net op MSN, of heb je nachtmerries in PHP?
Je ging toch slapen zei je net op MSN, of heb je nachtmerries in PHP?
hehe nee ben ik ook ;)
had 4 regels gedaan en toen was uitbereiding klaar :D
ben 2:29 weggegaan op msn ;)
Ik heb er ook ff mee zitten spelen, ik heb nog nooit zo rigoreus geknipt en geplakt, maar volgens mij heb ik het toch goed gedaan:
DutchTSE presents:
randy zijn script + uptime percentage :D
http://noc.myh2oservers.com/noc/
zou je deze willen delen?, bij mij werkt nu de load weer niet en krijg vrage errors.
Ik zal zodra ik weer wat meer tijd heb eens kijken of het hele script even in een keurig class gestopt kan worden zodat bij elke update niet iedereen zijn complete implementatie weer hoeft aan te passen...
Maar ben atm ff heel druk dus dat laat nog even op zich wachten.
Meten is een hobby van me, daarom bied ik bij deze (onder behoud van fair use policy) tien gratis micro accountjes aan om je script te kunnen draaien vanaf een andere server/netwerk.
Lief aangeboden, maar ik wil het script niet draaien ;)
Vroeg me alleen af of mensen er al over nagedacht hadden.
Optie misschien is om het op 3 servers te draaien en vanuit je gui via xml feeds alles uit te lezen.
Dat is namelijk veel cooler.
Interessant topicje...Ga ik ook even volgen ;-)
Ook hier het script, aangepast met een mooiere layout en betere database layout (servers in eigen tabel (met een alias naam; zodat je wat meer info in een sms kwijt kan), services in eigen tabel, mensen die mail en/of sms moeten krijgen in eigen tabel). Ik moet nog uptime info inbouwen (stats dus; ook een mooie plot van de load meteen), zag alleen dat DutchTSE dit al had. Wil je misschien het betreffende stukje code delen?
Andere wijzigingen die ik heb gemaakt, is dat je nu ook een mail/sms ontvangt indien de server weer online komt (kan heel soms voorkomen dat de server precies weer online komt op het moment dat jij uit je bed wilt kruipen ;)).
We maken gebruik van Mollie, de functie die erin zit is dus gebouwd voor Mollie... Dat is natuurlijk helemaal om te bouwen.
Wat nog niet echt goed werkt: Als de server online komt, staat er in het mailtje/sms voor elke service 'Bla is online'. Dat moet nog gefixt worden.
leesmij.txt:
Hoi,
Dit is een simpel NOC/Monitor scriptje, gebaseerd op het script van Randy die het weer heeft gebaseerd op die van pcextreme. Dezelfde voorwaarden gelden: 'as is', ik draag geen verantwoordelijkheid voor opblazende servers en andere gevolgen uit dit script, het is open source en er zit geen support op.
Features:
* Alles lekker handmatig in de database kloppen (phpmyadmin raad ik aan ;))
* Per server services die gemonitord moeten worden in te stellen.
* Meerdere mensen in te stellen met telefoonnummer (sms) en/of e-mail voor ontvangen van storingsmeldingen.
* SMS+mail bij offline gaan.
* SMS+mail bij online gaan van server.
Installatie:
* dump.sql importeren naar een database (staat voorbeeld info in).
* in de directory waaruit de bestanden geserveerd worden die je ziet als je je ip in de browser bekijkt (/var/www/ bijv), een bestandje noc.php maken met daarin:
---------------------------
<?php
$uptime = exec("uptime");
$array = explode (" ",$uptime);
echo trim(str_replace(",","",$array[13]));
?>
---------------------------
* je eigen dingen in de database kieperen (zit weinig tot geen controle op juistheid!).
* cronjob toevoegen:
*/1 * * * * (/path/naar/php /path/naar/servercheck.php &> /dev/null 2>&1)
Bijv:
*/1 * * * * (/usr/local/bin/php /home/noc/public/servercheck.php &> /dev/null 2>&1)
Te doen:
* Uptime stats.
* In een mooie class gieten.
* Config naar database verhuizen.
* Uitgebreidere controle (oa. de status melding van de pagina).
* Controle paneel(tje).
* Meerdere controle punten (geen false positives als één van de noc servers eruit ligt/niet kan verbinden met een andere server).
* Zullen waarschijnlijk nog wel wat foutjes in zitten, die ik niet zo snel heb gevonden.
Allemaal onder voorbehoud dat niemand mij voor is met bovenstaande.
Om dat ik echt bier drink, kunnen Perfect Drafts naar:
Heereweg 73-A
1901MB Castricum
Jochem van Leeuwen
jochem at openhost dot nl
Jochem
Edit: demo op monitor.openhost.nl (http://monitor.openhost.nl).
Jochem,
Heb jij er ergens een online voorbeeld van? bvb noc.openhost.nl werkt hiet ;)
Jochem,
Heb jij er ergens een online voorbeeld van? bvb noc.openhost.nl werkt hiet ;)
Heb het er met een edit nog bij gezet: monitor.openhost.nl (http://monitor.openhost.nl).
Jochem
Ziet er echt heel goed uit. Heb enkel nog een klein vraagje: werkt dit alles ook met Belgische GSM providers?
Mischien een leuk idee om een linkje te maken zodat de extra servicesen verschijn onder 1e service.
Ik bedoel, als je 25 servers hebt staan wordt die pagina wel erg lang!
Snaaps: goed idee eigenlijk...
Ping naar IP => server is UP, klikken op link en pas daar dan de services...
Om dat ik echt bier drink, kunnen Perfect Drafts naar:
Heereweg 73-A
1901MB Castricum
Ziet er erg netjes uit! Maar ondanks dat je 500 meter verderop woont hou ik de Perfect Draft lekker zelf :W:
DutchTSE je bent goed bezig het ziet er goed uit met die uptime info erbij.
Kunnen wij deze al van je downloaden?
Ziet er echt heel goed uit. Heb enkel nog een klein vraagje: werkt dit alles ook met Belgische GSM providers?Hangt af van je SMS provider. Bij Mollie is dit geen probleem (http://mollie.nl/informatie/bereikbaarheid/).
Mischien een leuk idee om een linkje te maken zodat de extra servicesen verschijn onder 1e service.Dat is inderdaad een goed idee. Uitklapbaar maken met Javascript of iets dergelijks. Of met AJAX, zodat je de load ook meteen verminderd op je MySQL.
Ziet er erg netjes uit! Maar ondanks dat je 500 meter verderop woont hou ik de Perfect Draft lekker zelf :W:
Waar woon je ;)? Dan kom ik em wel even leeg drinken ;).
Jochem
Zou dit bvb ook gaan via www.mobileweb.be?
Zou dit bvb ook gaan via www.mobileweb.be?
Ik denk het wel. Zolang er iets omheen te scripten valt (e-mail to sms of een http request), kan het in het script gebouwd worden. Dit kan, lijkt het, enkel met hun 'sms gateway' (die EUR 250,- setup + EUR 250,- per jaar kost).
Jochem
DutchTSE je bent goed bezig het ziet er goed uit met die uptime info erbij.
Kunnen wij deze al van je downloaden?
sorry was best wel werken van 10-21... ik ga hem ff uppen
http://www.myh2oservers.com/downloads/noc_v1.zip
Let erop dat de mijne geen sms functie ondersteund :) heb ik eruit gesloopt :D
Als er liefhebbers zijn voor de sms functie dan hoor ik het wel, ga ik hem maken :)
Snaaps: goed idee eigenlijk...
Ping naar IP => server is UP, klikken op link en pas daar dan de services...
Ik zit boordevol ideeen, echter ben zelf niet zo goed in php.
Begrijp het een heel klein beetje.
snaaps: idem ;)
Kan mijn plan trekken in PHP en uit een bestaand script de fouten zoeken maar zelf schrijven...vooral ZONDER lekken... :(
Type het in mensen, leuk voor de tussenuurtjes. (Al is het nu de derde nacht achter elkaar dat ik niet voor 3 uur in bed lig...)
Is het de bedoeling enkel de servers te monitoren, of meteen een geheel NOC script ervan te maken (met bvb een pagina waar alle (on)voorziene storingen opstaan voor klanten, en dat deze ingegeven kunnen worden via een adminpage?
IT-worX en anderen: Gooi al je ideeën hier maar neer, net als Randy heb ik ook nog wel tussenuurtjes waarin ik iets kan scripten. Misschien doe ik dan nog ideeën voor mezelf op ;).
Ik denk dat het wel interessant is als er inderdaad ook een functie komt waarmee er nieuws op de pagina gezet kan worden.
Jochem
IT-worX en anderen: Gooi al je ideeën hier maar neer, net als Randy heb ik ook nog wel tussenuurtjes waarin ik iets kan scripten. Misschien doe ik dan nog ideeën voor mezelf op ;).
Ik denk dat het wel interessant is als er inderdaad ook een functie komt waarmee er nieuws op de pagina gezet kan worden.
Jochem
Als er serieus interesse is om aan dit script verder te gaan werken denk ik dat het beter is als iemand de huidige versie herschrijft, er afspraken komen over welke variabelen/functies er gebruikt worden, en we het allemaal gaan 'plannen', zodat we niet elkaars versie's zitten te editten en beide een leuke nieuwe feature scripten, en de gebruiker dus moet kiezen tussen 2 verschillende scripts ;)
Zit wat in. Sowieso is het verstandig de basis functies in een class te proppen, zodat je zelf de class makkelijk kan extenden. Als de toegevoegde functionaliteit dan erg handig blijkt, kan één iemand die in de default class stoppen. Lijkt me dus het handigst als 1 iemand het script beheerd.
Oja, de manier van uptime meten die jij gebruikt vind ik zelf niet zo heel netjes ;). Je mist de mogelijkheid om bijvoorbeeld per week (of welke tijd-hoeveelheid dan ook) de uptime weer te geven. Het is denk ik verstandiger de downtijd op te slaan, met datetime erbij. Ik zit dan alleen een beetje met het probleem van downtime die 's nachts plaats vind (en dus deels op de ene dag plaats vind en deels op de andere).
Je zou er ook voor kunnen kiezen om per check op te slaan; nadeel is dat je dan binnen een jaar met een controle per minuut op ruim een half miljoen records zit. Niet belachelijk veel (nog snel te doorzoeken als je de keys goed zet), maar het tikt wel erg rap aan als je enkele jaren aan het monitoren bent.
Jochem
Oja, de manier van uptime meten die jij gebruikt vind ik zelf niet zo heel netjes ;). Je mist de mogelijkheid om bijvoorbeeld per week (of welke tijd-hoeveelheid dan ook) de uptime weer te geven. Het is denk ik verstandiger de downtijd op te slaan, met datetime erbij. Ik zit dan alleen een beetje met het probleem van downtime die 's nachts plaats vind (en dus deels op de ene dag plaats vind en deels op de andere).
Ik heb zelf nauwelijks naar de code gekeken, heb alleen de 2 scripts samengevoegd tot een werkend geheel :) niet gekeken naar de manier waarop de uptime berekend wordt.
Verder is deze uptime per maand, dus elke maand wordt hij gereset, een overzicht welke maand welke uptime had is makkelijk te maken (select * from uptime where maand = '$maand', en dan uptime delen door aantal checks ;)
@DutchTSE
Als ik op je website het noc script wil bekijken zegt ie:
Welkom op de Network Operations Control pagina van Eliveld Networks. Op deze pagina vindt u een status
overzicht van ons netwerk. Storingen worden automatisch per SMS bekend gemaakt aan de technische dienst.
Let op! Indien een van de servers slecht of niet reageert, wordt Eliveld Networks hier automatisch van op de hoogte gesteld.
Ik denk dat je nog het script van Randy effe moet aanpassen (ivm Eliveld tekst)
Als er serieus interesse is om aan dit script verder te gaan werken denk ik dat het beter is als iemand de huidige versie herschrijft, er afspraken komen over welke variabelen/functies er gebruikt worden, en we het allemaal gaan 'plannen', zodat we niet elkaars versie's zitten te editten en beide een leuke nieuwe feature scripten, en de gebruiker dus moet kiezen tussen 2 verschillende scripts ;)
CVS Repository :)
Verder is deze uptime per maand, dus elke maand wordt hij gereset, een overzicht welke maand welke uptime had is makkelijk te maken (select * from uptime where maand = '$maand', en dan uptime delen door aantal checks ;)
Dat was niet m'n punt, m'n punt was dat ik de downtime op alle manieren wil kunnen berekenen. Desnoods per uur. Dat betekend dus dat het op een andere manier moet worden opgeslagen als dat het nu gebeurd; daar was ik een beetje over aan het nadenken. Nog geen goede oplossing gevonden; zijn er mensen die hier wat meer ervaring/ideeën over hebben (het berekenen van het uptime percentage).
Jochem
de metingen opslaan, niet de uptime :)
De metingen zijn immers je gegevens.
http://www.myh2oservers.com/downloads/noc_v1.zip
Als ik een server toevoeg krijg ik deze fout melding.
Fatal error: Call to a member function on a non-object in /home/admin/domains/hackz.nl/public_html/noc/admincp/add_servers.php on line 4
Gebruik dan svn (subversion), dat is de opvolger van cvs.
de metingen opslaan, niet de uptime :)
De metingen zijn immers je gegevens.
Maar dan zit je dus na een jaar met ruim een half miljoen records. Dat loopt dus aardig op. Ik heb geen (directe) ervaring met dergelijke databeesten; wil dat nog fatsoenlijk draaien na, zeg, 3 jaar? (anderhalf miljoen records).
edit: en dat is per server. Met 10 servers zit je dus op 15 miljoen records na 3 jaar (5 miljoen na 1 jaar).
Jochem
Maar dan zit je dus na een jaar met ruim een half miljoen records. Dat loopt dus aardig op. Ik heb geen (directe) ervaring met dergelijke databeesten; wil dat nog fatsoenlijk draaien na, zeg, 3 jaar? (anderhalf miljoen records).
edit: en dat is per server. Met 10 servers zit je dus op 15 miljoen records na 3 jaar (5 miljoen na 1 jaar).
Jochem
consolidation?
consolidation?Niet genoeg ervaring met databasen (dus ik kan me niet zo heel veel voorstellen bij die opmerking, behalve dan dat je data samen voegt); maar de data moet wel gewoon beschikbaar blijven. Dus ook na een jaar moet je in principe nog de uptime kunnen berekenen van een bepaalde maand. Anders kan je net zo goed meteen de data per maand (oid) op gaan slaan, zoals met het script van DutchTSE gebeurd. Iets wat ik juist wil vermijden.
Jochem
Niet genoeg ervaring met databasen (dus ik kan me niet zo heel veel voorstellen bij die opmerking, behalve dan dat je data samen voegt); maar de data moet wel gewoon beschikbaar blijven. Dus ook na een jaar moet je in principe nog de uptime kunnen berekenen van een bepaalde maand. Anders kan je net zo goed meteen de data per maand (oid) op gaan slaan, zoals met het script van DutchTSE gebeurd. Iets wat ik juist wil vermijden.
Jochem
Sla de mislukte attempts op :)
Weet je automatisch dat de rest goed is :)
Een miljoen records meer of minder maakt weinig uit als je er niets mee doet. Wil je er wel wat mee doen, zoals doorheen zoeken, dan moet je een index erop maken. Al die records daadwerkelijk gebruiken, zoals ze weergeven of iets mee berekenen, kost natuurlijk evenredig veel tijd. Tenzij je ze zoals hierboven gesuggereerd ook samenvoegt in deelstukjes.
iemand een id hoe je de servers kan rangschikken op id nummer?
Zie voorbeeld:
http://www.ccchosting.nl/netwerk/status/index1.php
De servers staan dus verkeerd gerangschikt.
Gebruik dan svn (subversion), dat is de opvolger van cvs.
Ook prima, het ging mij om het idee :)
iemand een id hoe je de servers kan rangschikken op id nummer?'ORDER BY' gebruiken in de queries. Bijvoorbeeld: 'ORDER BY `serverid`' of 'ORDER BY `ip`', etc ;).
@t.bloo: het is dus geen punt als er paar miljoen records staan (met primary key en foreign keys) en daaruit een aantal worden gehaald (die van een maand, bijvoorbeeld). In de zin van: het gaat zo geen eeuwen duren om te zoeken, waardoor MySQL enorm veel kracht gaat vragen van de server.
En dat 'samenvoegen in deelstukjes', hoe mag ik me dat voor me zien? Ik kan me er wel vaag wat bij voorstellen, maar verkloot je de data er dan niet volledig mee?
@Alerd: Ik voel me aardig dom :). Is inderdaad gewoon een mooiere oplossing.
Jochem
Fatal error: Call to a member function on a non-object in /home/xynta/public_html/noc/admincp/add_servers.php on line 4
--
Daarnaast wil ik graag het root path weten van cPanel. Volgens mij hebk em maar ik krijg em er niet op.
Fatal error: Call to a member function on a non-object in /home/xynta/public_html/noc/admincp/add_servers.php on line 4
--
Daarnaast wil ik graag het root path weten van cPanel. Volgens mij hebk em maar ik krijg em er niet op.
excuses moi, heb het gefixt, zou je hem nog een keer kunnen downloaden?
http://www.myh2oservers.com/downloads/noc_v1.zip
@DutchTSE
Als ik op je website het noc script wil bekijken zegt ie:
Ik denk dat je nog het script van Randy effe moet aanpassen (ivm Eliveld tekst)
je moet http://noc.myh2oservers.com gebruiken, ipv www.myh2oservers.com/noc ;)
subdomein noc gaat namelijk naar andere server dan domein zelf. Zal voor verwarring de ander ff weghalen :)
Daarnaast wil ik graag het root path weten van cPanel. Volgens mij hebk em maar ik krijg em er niet op.
/usr/local/apache/htdocs
http://www.myh2oservers.com/downloads/noc_v1.zip
Er zit nog een klein foutje in je .sql:
`ip` varchar(16) NOT NULL default '',
Moet zijn:
`ipadress` varchar(16) NOT NULL default '',
Never mind, sql verhaal is kul :D
Eenvoudiger is het om in add_servers.php iets aan te passen:
if($_POST) {
mysql_query("INSERT INTO `servers` (`ip`, `hostname`, `status`, last_check) VALUES ('".$_POST["ip"]."', '".$_POST["hostname"]."', '0', '".time()."');");
}
Waar "ipadress" staat even aanpassen naar "ip".
OK, ik heb het hele script herschreven en alleen de layout gekopieerd, maar ik heb het nu werkend met een % uptime. Er wordt nu alleen informatie naar de database geschreven als de server down is.
Voorbeeld: http://dev.venatio.nl/noc/
Zodra wefact online is zullen wij proberen deze tool te implenteren in wefact.
(module)
Tevens wil ik ons script voor de mededelingen ook toevoegen zodat je een totale noc pagina krijgt.
http://www.ccchosting.nl/netwerk/status/index.php
http://www.noc.io/ (layout gedeeltelijk aangepast).
Mededelingen komen er straks boven te staan.
crazycoder
09/06/06, 21:26
Niet genoeg ervaring met databasen (dus ik kan me niet zo heel veel voorstellen bij die opmerking, behalve dan dat je data samen voegt); maar de data moet wel gewoon beschikbaar blijven. Dus ook na een jaar moet je in principe nog de uptime kunnen berekenen van een bepaalde maand. Anders kan je net zo goed meteen de data per maand (oid) op gaan slaan, zoals met het script van DutchTSE gebeurd. Iets wat ik juist wil vermijden.
Jochem
Waarom zou je na x tijd de dagen niet samen gaan voegen, bijvoorbeeld naar gegevens per dag/week/maand. Die schuif je vervolgens in een archief tabel en je smijt ze uit de tabel waar je realtime gegevens uit trek.
Volgens mij is er gewoonweg niemand die naar erg oude gegevens gaat kijken. Als je een grafiek met historie wil genereren dan lijkt het mij prima om dat per week te doen. Je kan jezelf verliezen in details, lijkt mij persoonlijk niet echt zinvol.
Sla de mislukte attempts op :)
Weet je automatisch dat de rest goed is :)
Sla alleen de status wissels op. Op deze manier kan je eenvoudig overzichten genereren van problemen en de duur van problemen bepalen zonder tig records door te worstelen. (2 per event is dan voldoende). Alleen de statuswissel is interessant, dus die sla je op in een database. (Database bouwen les 1: Sla nooit dubbele informatie op ;) )
Doe er je voordeel mee of niet natuurlijk :)
O, ja een paar regels extra code zijn ook wel handig om te voorkomen dat het script weer gestart wordt als het nog niet met de vorige check ronde klaar is. Anders loopt je Noc server wel heel snel vol met processen als er problemen zijn met bv. de netwerkverbindig. Alleen natuurlijk als je het script via cron start...
dirty fix:
$last = mysql_query("SELECT MAX(`last_check`) AS `last_check` FROM `servers`");
$fetch = mysql_fetch_array($last);
$diff = time() - $fetch["last_check"];
if ($diff < 30) {
exit;
}
ook het aanpassen van de regel om een ftp server te checken is wel handig.
Maak daar het volgende van:
$conn = ftp_connect($ip, 21, 5);
Andrs is de timeout 30 seconden en dat vertraagt wel heel erg.
Zijn er anders mensen die zin hebben om een complete NOC page te maken voor andere servers (gratis uiteraard)? BVB dit script (uitgezonderd de load etc) gecombineerd met een smokeping? en dat op een eigen domein laten draaien?
Is ook maar een idee'tje...Heb anders al een leuk domeintje ervoor :)
Zijn er anders mensen die zin hebben om een complete NOC page te maken voor andere servers (gratis uiteraard)? BVB dit script (uitgezonderd de load etc) gecombineerd met een smokeping? en dat op een eigen domein laten draaien?
Is ook maar een idee'tje...Heb anders al een leuk domeintje ervoor :)
Zoiets als http://host-tracker.com/ bedoel je?
host-tracker.com trekt inderdaad wat op wat ik in mn hoofd heb. Echter vind ik daar bvb geen smokeping in. Ook de snelheid van de site ligt aan de trage kant?
Kris
host-tracker.com trekt inderdaad wat op wat ik in mn hoofd heb. Echter vind ik daar bvb geen smokeping in. Ook de snelheid van de site ligt aan de trage kant?
Kris
Gelukkig maken ze voor het kijken of de servers up zijn gebruik van zo'n 50 externe servers. Maar geen smokeping daar nee. Ik wil best helpen met een eigen NOC pagina, maar dan vooral de NOC zelf want smokeping ken ik niet zo goed.
50? Zijn er 26, waarvan er een paar platliggen (http://host-tracker.com/our-monitoring-network/ ) ;)
Info over smokeping kan je vinden op http://oss.oetiker.ch/smokeping/ .
Anders nog ideeën voor op een NOC page ofzo?
50? Zijn er 26, waarvan er een paar platliggen (http://host-tracker.com/our-monitoring-network/ ) ;)
Ehm, ook goed. Het was maar een gokje :rolleyes:
Info over smokeping kan je vinden op http://oss.oetiker.ch/smokeping/ .
Had ik ook al gevonden jah, zal er eens naar kijken.
Anders nog ideeën voor op een NOC page ofzo?
Als het echt goed moet zijn natuurlijk controle vanuit meerdere netwerken en datacenters, snelheid, uptime (%), melden aan meerdere mensen. Verder kan ik zo snel ook niet echt iets bedenken.
Misschien beter een apart topic hiervoor openen, en dit topic niet beter vervuilen... Even uitkijken, zometeen is ie geopend:)
Als je een dedicated server nodig hebt, heb nog een Raq4 met FC4/Rackstar OS in het DC hangen. Ding serveert enkel een streampje voor de lokale omroep hier, dus kan nog wel wat hebben.
Anders ook nog wel 2 Raq 550's met FC4/Rackstar OS, komen eind deze maand online in verschillende netwerken (offertetraject loopt hier)
Ik heb het script gedownload..
Het script draaide op mijn server, de cronjob stond op 5 min.
Vreemd genoeg werden elke 5 minuten de ftp verbindingen verbroken door de servercheck.php
Nu ik de cronjob stop heb gezet gebeurd dat niet meer..
Waar dit aan ligt moet ik nog uitzoeken, mischien hebben er meer last van?
SebastiaanStok
10/06/06, 21:22
Het script controleerd ook de FTP, dus een verbinding is normaakl.
Maar bedoel je dat hij alle verbindingen verbrekt?!
misschien de resource opgeven bij ftp_close() ?
Het script controleerd ook de FTP, dus een verbinding is normaakl.
Maar bedoel je dat hij alle verbindingen verbrekt?!
Ja hij verbrekt de verbindingen van de users die zijn ingelogd met FTP
Offtopic: verbrekt = achterhoeks, verbreekt is nederlands :)
SebastiaanStok
11/06/06, 11:17
Zware dag gehad en het was laat ;)
Gebruik je toevalig ProFTPd? :X
Zware dag gehad en het was laat ;)
Gebruik je toevalig ProFTPd? :X
Ja die gebruik ik.
SebastiaanStok
11/06/06, 14:12
Misschien dat het er iets mee te maken heeft maar heb ik is een keer gelezen dat hij nogal moelijk kan gaan doen.
crazycoder
11/06/06, 14:16
Misschien dat het er iets mee te maken heeft maar heb ik is een keer gelezen dat hij nogal moelijk kan gaan doen.
Als het niets meer of minder is dan een normale ftp connect zou het geen enkel probleem mogen zijn.
Dus:
- script controleren
- ProFTPD updaten
Als het probleem blijft bestaan een bugreport invullen.
Al langer zitten pielen met vanalles. Dus ik dacht.... mail Randy maar eens of ik dat noc-script ook kan krijgen.... Heb (nog) niks gehoord. Moet ook zegen dat ik niet snap dat iedereen er een database aan moet hangen.... heb ik helemaal geen zin in. Vandaag eens met Nagios gaan spelen.... en idd.... gaaf... en geen mysql. Liep wel tegen nogal wat haken en ogen aan. Omdat ik op Centos met selinux werk, ging het niet allemaal vanzelf. Zie http://www.mrleejohn.nl/nagios.htm ... wie weet heeft iemand er wat aan....
Hoi,
Gisteren toevalig iets te ijverig geweest met Webmail en de omruiming van wat mail.
Zie bijlage;
Hoi,
Gisteren toevalig iets te ijverig geweest met Webmail en de omruiming van wat mail.
Zie bijlage;
Dit script kan je gratis downloaden, zonder probs?
Ja, zo te downloden.
Databeest (mr. LeeJohn);
Je zou MySQL eruit kunnen halen en met een array kunnen werken, zal ook geen probleem zijn. Weet niet hoe groot je serverpark is, maar wij monitoren 70+ servers op 3 locaties, dus dan wordt een array ietwat lastig. MySQL kunnen we gewoon koppelen met NOC-Beheer.
Ja, zo te downloden.
Databeest (mr. LeeJohn);
Je zou MySQL eruit kunnen halen en met een array kunnen werken, zal ook geen probleem zijn. Weet niet hoe groot je serverpark is, maar wij monitoren 70+ servers op 3 locaties, dus dan wordt een array ietwat lastig. MySQL kunnen we gewoon koppelen met NOC-Beheer.
je vergeet wel te vermelden dat wij Nagios voor monitoring gebruiken wat regstreeks meldingen en andere shit op private IRC kanaal post.
noc ding wat van ons online staat is meer een testje wat ooit eens gemaakt is wordt niet echt gebruikt
We hebben nu 25 servers op ons lan (cluster, file, print, web, enz). Dan is service-monitoring nog wel te overzien. Maar we gaan wellicht met andere organisatie samenwerken.... en dan is een service-monitor heel prettig.
En een mysql-db-tje meer of minder mag de pret niet drukken. Maar ik let er wel op.
Maar ik heb nu wat met Nagios gespeeld.... en het bevalt me heel goed. Selinux werkte even wat tegen, maar dat zou met een noc-script ook zijn. Beetje pielen wel met de configs van de hosts, maar dat gaat prima. Denk dat ik het dus bij Nagios hou.
Zeer interessant script!
Ben het zelf ook even aan het proberen, maar er zit een probleempje met mijn cron job denk ik.
*/2 * * * * /home/admin/domains/zaboe.be/public_html/server/servercheck.php
*/2 * * * * http://www.zaboe.be/server/servercheck.php
Maar hij update niet :/ (Gebruik DirectAdmin)
Ook de server load, hij zet in de database een deel van html code van index.php
Iemand een idee?
*/2 * * * * /home/admin/domains/zaboe.be/public_html/server/servercheck.php
*/2 * * * * http://www.zaboe.be/server/servercheck.php
Probeer eens:
*/2 * * * * php /home/admin/domains/zaboe.be/public_html/server/servercheck.php
mm, krijg een mail van deamon terug
/bin/sh: line 1: php: command not found
mm, krijg een mail van deamon terug
/bin/sh: line 1: php: command not found
Je moet even kijken waar de php binary staat als die er is anders moet je gewoon even iets met wget of lynx gaan doen.
/usr/bin/php -v misschien dat dit werkt? mocht dit beetje output geven met wat versie nummers van je php dan kun je dit path naam gebruiken ..
/bin/sh: line 1: /usr/bin/php: Onbekend bestand of map
geef hij terug, maar ik denk dat het iets met DA te maken heeft.
*edit
hij werkt
moest zijn: /usr/local/bin/php /home/admin/domains/zaboe.be/public_html/server/servercheck.php
en include in php stond ook nog op "./inc/config";
iemand een idee waarom die load niet werkt?
iemand een idee waarom die load niet werkt?Nee, want je verteld helemaal niets over je situatie. Misschien heb je in de webroot van de betreffende server (bij DA server volgens mij /var/www/html/) niet het benodigde bestandje staan (lees de leesmij.txt even)? Het is allemaal gissen...
Jochem
Even een noc.php aanmaken in de /var/www/html
<?php
$uptime = exec("uptime");
$array = explode(" ",$uptime);
echo trim(str_replace(",","",$array[13]));
?>
Hoe ik vertel niets over mijn situatie? Als je een paar posts terug kijkt zag je ook dat ik DA gebruikte. En inderdaad, de file stond niet in de map html, dat was het probleem.
(ik had de readme gelezen btw ;) )
bedankt Randy, handige tool!
Hoe ik vertel niets over mijn situatie?Je zegt: "en waarom doet m'n load het niet?" Dat kan allerlei redenen hebben, waarbij de eerste hoogst waarschijnlijk was dat je geen noc.php had aangemaakt (wat gewoonweg in de readme stond). Tweede had kunnen zijn dat je een error kreeg; als dat zo is wil ik (en andere die je helpen) graag de error horen. Of misschien kreeg je wel een andere fout melding.
Kortom: beetje info wat je al had geprobeerd, welke foutmeldingen je kreeg, etc is altijd gewenst als je een vraag stelt op een forum. En staat ook wel zo netjes, aangezien het anders staat alsof je alles maar direct vraagt zonder enig onderzoek (had je wel wat onderzoek gedaan, had je gelezen dat er nog een noc.php gemaakt moest worden).
Wijze les voor de volgende keer :).
Jochem
Als ik een error kreeg had ik hem wel gepost hoor..
En je leest mijn post niet, ik had wel een noc.php aangemaakt hij stond gewoonweg in de verkeerde dir (niet in html, want bij DA is dat zo blijkbaar)
Enja, echt veel stond er niet in de readme, ik heb wel degelijk onderzoek verricht...
Anyway, iedereen moet hier precies z'n gelijk proberen te halen, dus ik denk dat we er nu beter mee ophouden
even kleine comment?:
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));
}
$$afzender = urlencode($afzender);
moet
$afzender = urlencode($afzender);
zijn ?
Als ik dit verkeerd zie kun je me uiteraard gewoon negeren ;)
Even nog een ander idee?
Je verkrijgt nu alleen de load vanaf andere servers, en het mysql checken etc doe je vanaf je 'lokale' server.
Is het niet logischer om alles vanaf de externe server te laden, ik vraag me af in hoevere een fsockopen altijd goed valideerd.
Ik heb ook wat foutjes:
$content = trim(fgets($fp));
if($content > 1){
// Load is hoger dan 5 waarschuwing sms sturen naar de beheerder
Load is hoger dan 1, status is Kritiek, maar ik krijg geen e-mail? Ik ga er van uit dat het niet alleen voor sms is maar ook voor de mail. En ja ik heb de e-mail-adressen-array juist aangepast
Verder krijg ik van 1 van me servers geen load terug, terwijl het bestandje er goed staat in var/www/html met de goeie inhoud. Ook krijg ik geen errors en zijn de 3 portchecks op die server ook prima verlopen... Iemand?
Edit: bij de load van betreffende server in de db: <br />
Verder krijg ik van 1 van me servers geen load terug, terwijl het bestandje er goed staat in var/www/html met de goeie inhoud. Ook krijg ik geen errors en zijn de 3 portchecks op die server ook prima verlopen... Iemand?
Kan zijn dat de server geen 'exec()' commando's slikt, of dat je [13] even moet wijzigen naar bijvoorbeeld [16]. Probeer anders onderstaande noc.php
<?php
// In $allow kun je de ip adressen of netwerken plaatsen die toegang hebben
// tot de load informatie van de server.
//
// Let op, het ip wordt als string behandeld. 192.168.1 geeft dus een
// match voor 192.168.1.*, 192.168.11.* en 192.168.111.*
$allow = "192.168.0. 127.0.0.1";
$filename = "/proc/loadavg";
header("Content-Type: text/plain");
$ips = explode(" ", $allow);
foreach ($ips as $ip) {
if (strpos($_SERVER['REMOTE_ADDR'], $ip) === 0) {
if ($fp = fopen($filename, "r")) {
$load = fgets($fp, 64);
fclose($fp);
} else {
$load = "-1";
}
$result = explode(" ", $load, 2);
echo $result[0];
exit;
}
}
echo "Access denied, kick -> ban -> sterf!";
?>
Ik heb idd zelf nog op die server disable_function="exec" toegevoegd aan php.ini, op aanwijzingen van snaaps :p
what about the e-mail?
even een paar probleempjes:
S'nachts bij het backuppen gaat het mis, wellicht doordat de serverload te hoog is van de servers. (wil nog wel eens uitlopen naar 4+)
Hierdoor geeft mijn statistieken nu en uptime van 99,9xxx%
(heb dit handmatig maar ff op 100% gezet)
Heeft dit nu te maken omdat de serverload te hoog is?
(waar kan ik dit aanpassen?)
Of dat de server niet reageerden?
even een paar probleempjes:
S'nachts bij het backuppen gaat het mis, wellicht doordat de serverload te hoog is van de servers. (wil nog wel eens uitlopen naar 4+)
Hierdoor geeft mijn statistieken nu en uptime van 99,9xxx%
(heb dit handmatig maar ff op 100% gezet)
Heeft dit nu te maken omdat de serverload te hoog is?
(waar kan ik dit aanpassen?)
Of dat de server niet reageerden?
Je zou iets kunnen maken wat snachts tussen bepaalde tijd geen load checkt. Uiteraard wel de rest anders zou je nooit weten als je server plotseling snachts echt uit gaat.
Dat is wel een optie idd.
Mijn vorige noc systeem draaide de serload appart die snachts tussen 3 en 5 uur niet werd gecontroleerd.
Echer ik heb geen flauw idee hoe ik dit script daarop moet aanpassen.
de cronjob aanpassen kan toch?
nu is et geloof ik zoiets (ik ben naab hoor dus neem niets over)
*/2 * * * * /usr/bin/php -r -f map/naar/je/servercheck.php
als je daar van maakt
*/2 5-3 * * * /usr/bin/php -r -f map/naar/je/servercheck.php
dan gaat ie toch alleen om de 2 minuten vanaf 5 uur 's ochtends tot 3 uur die nacht erop checken?
ik kan et mis hebbe hoor maar volgens mij moet et zo lukken
de cronjob aanpassen kan toch?
nu is et geloof ik zoiets (ik ben naab hoor dus neem niets over)
*/2 * * * * /usr/bin/php -r -f map/naar/je/servercheck.php
als je daar van maakt
*/2 5-3 * * * /usr/bin/php -r -f map/naar/je/servercheck.php
dan gaat ie toch alleen om de 2 minuten vanaf 5 uur 's ochtends tot 3 uur die nacht erop checken?
ik kan et mis hebbe hoor maar volgens mij moet et zo lukken
Ja gaat goed joh... oeps server plat... gebruik dan gewoon geen servercheck
heb je ook zin om met een serieuze reaktie te komen, hier heeft niemand wat aan namelijk
misschien is kijken naar de processen en de prioriteiten daarvan, of de timeout van het controleren misschien dat die te hoog staat. en load kan je ook via snmp opvragen. en dat de load boven de 4 al een probleem is wil er bij mij niet echt in. ik heb ook monitor scripts van load gezien en tot een load van 300+ ging het gewoon nog goed. zie plaatje:
http://haas.oezie.org/rrd/graph_image.wit.png
Daar ben ik het niet mee eens. Ik wil in 1 oogopslag kunnen zien waar meer wordt verbruikt dan normaal. Vervolgens op SSH inloggen op de betreffende server en dan via top kijken wat de boel verziekt.
Wat wel handig is misschien om de servers te clusteren... dat je gewoon ziet of je server online of offline is, en als je dan op het plusje ([+]) voor de server drukt dat er dmw een javascriptje de andere poorten onderweg schuiven en daar ook tal keer online of offline staat.
Wel wat werk, en helaas kan ik dat niet :rolleyes:
SebastiaanStok
15/06/06, 16:13
Ik wil niet opscheppen maar ik heb dit binnen een uur gemaakt, het javascript dan he.
Het jammere is dat ik nu geen tijd heb anders had ik wel even wat gepost.
Ik zal als nog niemand zo iets gemaakt heeft dat tegen zondag wel maken.
(zaterdag examens gedaan, tis daarmee)
Is voor mij ook kinderspel ;-)
Voorbeeld:
<script language="javascript">
function showMenu(id) {
if(document.getElementById(id).style.visibility == "hidden") {
document.getElementById(id).style.position = "static";
document.getElementById(id).style.visibility = "visible";
}
else {
document.getElementById(id).style.visibility = "hidden";
document.getElementById(id).style.position = "absolute";
document.getElementById(id).style.left = -100;
document.getElementById(id).style.top = -100;
}
document.getElementById('mainTable').height = '100%';
}
</script>
<table width=100% cellpadding=0 cellspacing=0>
<tr><td width=5 class="menuTitle"> <a style="cursor: s-resize;" onClick="showMenu('wereld')">#</a> </td>
<td><a style="cursor: s-resize;" onClick="showMenu('wereld')"><b>Wereld</b></a></td></tr>
</table>
<table width=100% cellpadding=0 cellspacing=0 ID="wereld" style="position: absolute; left: -100; top: -100; visibility: hidden;>
<tr><td><a href="index.php">Serveruptimeblablabla</a></td></tr>
</table>
Ik heb er zelfs meteen een cursorverandering ingescript, dat het een openen pijltje wordt, dan is dat ook wat duidelijker :-p
Veel plezier met de codes.
Er kan best nog ajax ingebouwd worden enzo, maar heb maar snel ff het javascript gedeelte gemaakt!
Werkt niet echt volgens mij.
@ firefox doet hij helemaal niks
@ IE doet hij het 1x, en daarna kun je het niet meer wegklikken etc.
SebastiaanStok
17/06/06, 10:33
Dat is een bekend probleem, je moet weten welke momenteel visible is, die moet je dan hidden.
Ik was even vergeten dat het iets moelijker is dan het lijkt :)
Een vriend van mij heeft zo iets gemaakt (met hulp van mij :D ) Als online is zal ik het even vragen ;)
SebastiaanStok
18/06/06, 16:02
Zoals belooft:
Javascript:
function findObj(theObj, theDoc)
{
var p, i, foundObj;
if(!theDoc) theDoc = document;
if((p = theObj.indexOf("?")) > 0 && parent.frames.length)
{
theDoc = parent.frames[theObj.substring(p+1)].document;
theObj = theObj.substring(0,p);
}
if(!(foundObj = theDoc[theObj]) && theDoc.all)
{
foundObj = theDoc.all[theObj];
}
for (i=0; !foundObj && i < theDoc.forms.length; i++)
{
foundObj = theDoc.forms[i][theObj];
}
for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++)
{
foundObj = findObj(theObj,theDoc.layers[i].document);
}
if(!foundObj && document.getElementById)
{
foundObj = document.getElementById(theObj);
}
return foundObj;
}
isCollapsed = null;
function Collapse(objectName)
{
object = findObj(objectName);
if(object.className == 'subtabelh')
{
object.className = 'subtabelnh';
if(isCollapsed === null)
{
isCollapsed = object;
}
else
{
isCollapsed.className = 'subtabelh';
isCollapsed = object;
}
}
else
{
isCollapsed.className = 'subtabelh';
isCollapsed = null;
}
}
CSS
.subtabelh
{
display: none;
}
.subtabelnh
{
background-color: #cccccc;
border-bottom: 1px solid #000000;
/*display: none;*/
}
Veel succes ;)
Hij laat ALTIJD maar eentje zien per keer.
Mooi script. Ik gebruik hem nu ook.
Alleen een bug in PHP met fsockopen, de timeout werkt niet... Iemand hier een oplossing voor?
LOL nice man rollerscapes, ik zal es proberen.. misschien een idee om dit in een nieuwe 'release' van et gezamenlijke script te stoppen? ik kan vast wel meer dingen verzinnen ;)
he ik weet ik ben hier niet zo goed in:P
ik heb in index ff ?> <script language=javascript> blaat </script <? gezet
en in css die 2 classes.. en nou?
Mooi, Als iemand hem wil maken dat mensen zich kunnen aanmelden voor monitoring dan wil ik we 2 server's beschikbaar stellen om voor meer mensen dit te checken !
Server 1 - NL
Server 2 - UK
Roy
Idem hier,
Server 1 - LCL Brussel
Server 2 - InterXion Brussel
Idem hier, Novaxxes Schiphol-Rijk
http://www.webhostingtalk.nl/scripting-techniek-beveiliging/98036-controlesite-idee.html
Dat was waar ik hier mee naartoe wou ;)
Ik zal mij er mee bezig houden met zo een controle script te maken.
Dat leden hun eigen site veilig kunnen aanmelden.
Maar als er andere mensen dit ook willen doen: be my guest!
Ik heb het nog even druk maar zal mijn best doen.
Hoe moet het systeem juist zijn?
Alle controleerbare sites op 1 pagina of beter per user based?
Zijn alle stats voor iedereen zichtbaar?
Mss beter wel?
Verder ben ik het noc.php script aan het aanpassen dat het op 2 manieren werkt, via exec en de andere (hierboven ergens vermeld).
Mvg,
www.gamecoll.com
LOL nice man rollerscapes, ik zal es proberen.. misschien een idee om dit in een nieuwe 'release' van et gezamenlijke script te stoppen? ik kan vast wel meer dingen verzinnen ;)
he ik weet ik ben hier niet zo goed in:P
ik heb in index ff ?> <script language=javascript> blaat </script <? gezet
en in css die 2 classes.. en nou?
hier waren we ontopic gebleven hè...
iemand een oplossing?
Denk dat iemand even een nieuwe package moet maken met alle wijzigingen.
indien jullie nog op zoek zijn naar ideeen, dan heb ik er hier 2:
1) layout scheiden van php code mbhv een template parser, http://templatepower.codocad.com bvb is een goeie en eenvoudige daarvoor
2) om nog even verder te gaan op het idee om het script te draaien op meerdere locaties om te verzekeren tegen uitval van de "noc-server": een soap clientje schrijven (gaat ook in php) zodat de noc-scripts met elkaar kunnen synchroniseren als ze bvb merken dat hun laatste meting enkele uren geleden is (=server is platgegaan)
wie o wie repacked de nieuwste versie even :)
Inderdaad, zou iemand het script online kunnen plaatsen of naar mij kunnen e-mailen?
Vrijwilligers? of is het afgestorven
Wat ik lees is dat er vanaf meerdere pop's gechecked wil worden ?
zoja, meld ik mijn aan vanaf Rotterdam Luna.nl Datacenter.
SebastiaanStok
22/06/06, 13:04
"Vrijwilligers? of is het afgestorven" :D Leuke word speeling :p
Je bedoelt uitgestorven ;)
Kennelijk is idereen ergens anders mee bezig, daarom maak ik zelf iets maar dit kan ik helaas niet delen omdat er een compleete systeem achterhand wat op de diensten van Rollerscapes is afgestemt :)
(Moet eerst nog een NOC-Server regelen :X )
<?php
$uptime = exec("uptime");
$array = explode (" ",$uptime);
if ( trim(str_replace(",","",$array[13])) == "" ){
echo trim(str_replace(",","",$array[12]));
}else{
echo trim(str_replace(",","",$array[13]));
}
?>
in noc.php is beter, aangezien als je server minder dan 24 uur online is je geen load krijgt te zien omdat er een spatie te weinig is.
<?php
$uptime = exec("uptime");
$array = explode (" ",$uptime);
print_r (str_replace(",","",$array[count($array)-3]));
?>
of zo, aangezien je weet dat de 1 min load altijd de 3e van achter is.
ik ben zelf ook is aan het knutselen geweest met perljax http://haas.oezie.org/cgi-bin/noc.pl wel heel erg traag.
Op verlenging van het "cross site checking": http://www.webhostingtalk.nl/scripting-techniek-beveiliging/98987-cross-site-checks-noc-vanaf-andere-locaties.html#post732207
Heeft iemand t meest up-to-date noc script ergen staan?
Ik zou hier graag mee willen experimenteren!