Huhu,
ich würde gerne für eine kleine HTML Seite (maybe auch PHP) einen Status meiner Server einbinden.
Mindestens wollte ich die Anzeige haben (Server online/offline) und wenns geht (also optimal) sogar die Loadanzeige.
Huhu,
ich würde gerne für eine kleine HTML Seite (maybe auch PHP) einen Status meiner Server einbinden.
Mindestens wollte ich die Anzeige haben (Server online/offline) und wenns geht (also optimal) sogar die Loadanzeige.
apt-get install phpsysinfo
wunderbare Sache, nur würd ich es eben gerne auf "eigenen" Seiten als Script einsetzen und nur spezifische Daten (online oder nicht + evtl. die load)
das ganze per Remote abfragen?
Ansonsten einfach mal die sourcen von phpsysinfo durchlesen und abschreiben
PHPsysInfo ist dafür ausgelegt den Server auszulesen auf dem es läuft.
Hab nochmal gegoogelt und nur altes Zeugs gefunden (php Get Abfragen)
Leider fragen die alle via http:// ab was mir nichts hilft wenn kein Webserver auf dem Server läuft.
Pauschal würde ich sagen das sowas wie ein "if ping positive" Script was helfen würde, aber ohne laufenden Webserver und mit der Möglichkeit spezielle Ports anzusprechen wirds dann schon wieder zwieblig...
Hab was sowas angeht nur kostenpflichtige schweineteure Lösungen gefunden.
Sowas: Beispiel
das ganze könnte auch mit Monitorscripten wie nagios und Co oder einem ssh key verfahren gemacht werden und kein Passwort für den Private Key setzen.
Hab dank diverser Google Ergebnisse nun ein PHP Script mit fsockopen realisiert.
Ich teste einfach die Verbindung zu verschiedenen IPs + versch. Ports und kann so sogar einzelne Dienste testen.
Derzeit HTTP/FTP/MYSQL/POP3/SMTP
Alternativ kann ich damit nun auch eine Abfrage für meine TS2 und meine Gameserver einrichten.
Ich versuch das ganze nun brauchbar zu gestalten, vielleicht packe ich es dann auch hier ins Forum wenn ich mich durch die noch so vielen Möglichkeiten gearbeitet habe die mir das fsockopen mit etwas bastelei bietet.
ja fsockopen ist wahrlich eine schöne mächtige Funktion. Die lässt sich für soviel Blödsinn missbrauchen
Was ist an einer Statusabfrage Blödsinn?
Prinzipiell nichts, aber dadruch lassen sich zum Beispiel sehr einfach DoS Angriffe fahren.
stimmt wohl, aber was das angeht ist es ja fast egal wie ich den Status abfrage (wenns dynamisch ist), da es dann immer eine "Angriffsmöglichkeit" gibt.
dies stimmt, deshalb ist es eventuell hilfreich nicht den livestatus abzufragen sondern ein kleines Skript im Hintergrund die Arbeit erledigen.
inwiefern im Hintergrund, also nur ein "ssh" tool welches den Status in gewissen abständen in ein File schreibt was wiederum via PHP ausgelesen wird?
Ich überlege evtl. einfach eine statische Anzeige zu bauen... aber das trifft nicht wirklich den Sinn einer Statusanzeige...
naja mal gucken wie gut das fsock Script läuft wenn es fertig ist (inkl. Design).
ich könnte mir auch ein PHP Skript per Cronaufruf vorstellen, wenn das minütlich läuft ist es immer noch eine Statusanzeige.
Austausch der Daten dann über ein einfaches file.
Hi,
die Frage ist ja noch, welchen Status du anzeigen willst; Server online kann ja alles heißen: Er ist anpingbar und antwortet, ob Apache oder MySQL korrekt läuft, wird ja so nicht gesagt
Nur um zu gucken, ob der Server antwortet, da kannst du ihn ja von einem anderen Rechner anpingen (Skripte gibts da sicherlich).
Gruß,
Stefan
wollte eigentlich nur nen Ping ob der Server läuft.
Jetzt bin ich soweit das ich via Port Abfrage welche Dienste laufen (ping an den Port)
Quote from Alexander W.H. Wachert;717wollte eigentlich nur nen Ping ob der Server läuft.
Jetzt bin ich soweit das ich via Port Abfrage welche Dienste laufen (ping an den Port)
wobei dir das auch nicht wirklich hilft,wenn der Port da ist muss es nicht zwangsläufig heißen, dass der Server auf diesem Port auch Anfragen abnimmt.
Bsp: httpd läuft immer einmal als root und forked dann kleine Childs, je nachdem, ob Anfragen da sind.
Stirbt der root httpd aus irgendeinem Grund nicht sauber, hängen sich die Childs an UID 1, können allerdings nicht forken. Sie Antworten also auf PORT 80, können das ganze aber nicht weiterverarbeiten.
Das einzige was dabei wirklich hilft ist meiner Meinung nach Active Probing, soll heißen: Ein Skript was einen Socket öffnet und diesen dann wieder schließt und bei Erfolg eben irgendwas zurückliefert und bei Misserfolg auch.
Grüße,
Benny
Du könntest auch einen Ping per exec starten und diesen dann mit regulären ausdrücken parsen
Quote from C. Jantz;724Du könntest auch einen Ping per exec starten und diesen dann mit regulären ausdrücken parsen
exec gehört auf allen Servern eigentlich verboten...
Ich hab noch ne alternative, einfaches Script, den Code als (z.B.) srvmimo.pl speichern und in das CGI-BIN-Verzeichnis packen. Das Script ist aber nicht von mir.
Nachteil: geht nur mit einer IP oder Host. Für mehere Überwachungen kann das aber leicht angepasst werden. Und man bekommt auch keine Mail, Logeintrag usw.
#!/usr/bin/perl
# Server Mini Monitor srvmimo
# Überwachung von Severdiensten
#
# Mirko Kulpa
# http://www.nwlab.net/tutorials/srvmimo/srvmimo.html
# Version 1.0, Dezember 2004
#
# CGI wird nur für die Fehlersuche benötigt
use CGI;
use CGI::Carp 'fatalsToBrowser';
use IO::Socket;
# Konfiguration
my $target = 'ihre_ip'; # Dieser Host wird getestet, IP-Adresse oder Hostname angeben
my $showtarget = 1; # Anzeige des Targets in der Ausgabe, 0 = keine Anzeige
my $talign = 'left'; # Ausrichtung der Anzeige, Mögliche Werte: left | center | right
my $border = 0; # Anzeige des Rahmens, 0 = kein Rahmen
my $bgcolor = '#f0f0f0'; # Hintergrundfarbe festlegen, #ffffff = weiss
my $beforeheader = '<font size="1" color="#111111">'; # Fontsize und Schriftfarbe festlegen
my $afterheader = '</font>'; # Ausgabe erfolgt nach dem Text,
# HTML-Tags aus $beforeheader müssen geschlossen werden
my $beforetext = '<font size="1">';
my $aftertext = '</font>';
my $upbgcolor = '#7cf916'; # Hintergrundfarbe für Service OK, #00ff00 = grün
my $downbgcolor = '#f98f16'; # Hintergrundfarbe für Service down, #ff0000 = rot
# Liste der TCP-Ports, die Zahlen in portnum müssen mit den Texten in portserv übereinstimmen
my @portnum = ( 21, 65000, 23, 25, 80, 143, 443, 3306, 60000);
my @portserv = ("FTP", "SSH", "Telnet", "SMTP", "HTTP", "IMAP", "HTTPS", "MYSQL", "Postgrey");
# Ende der Konfiguration
my ( $i, $status );
# header ausgeben
print "Content-type: text/html\nExpires: 0\n\n";
print "<table bgcolor=\"$bgcolor\" cellpadding=\"2\" cellspacing=\"2\" border=\"$border\" rules=none align=\"$talign\"><tr><td>\n";
print "<table bgcolor=\"$bgcolor\" cellpadding=\"2\" cellspacing=\"2\" border=\"0\">\n";
if ($showtarget) { print "\n<tr><td align=\"center\">" . $beforeheader . $target . $afterheader . "</td></tr>\n"; }
for ($i=0; $i <=$#portnum; $i++) {
if ( IO::Socket::INET->new(PeerAddr=>"$target:$portnum[$i]",Proto=>'tcp',Timeout=>1) )
{ $status = $upbgcolor; } # service up
else
{ $status = $downbgcolor;} # service down
print "\n<tr><td align=\"center\" bgcolor=\"$status\">" . $beforetext . $portserv[$i] . $aftertext . "</td></tr>\n";
}
print "\n<tr><td align=\"center\">" . $beforeheader . "srvmimo 1.0 by<br><a href=\"http://www.nwlab.net\">www.nwlab.net</a>";
print $afterheader . "</td></tr>\n</table></td></tr></table>";
exit;
Display More