Ich hoste ziemlich viele virtuelle Hosts, die Apache in einer einfachen LAMP verwenden, die mit Hilfe von Webmin / Virtualmin eingerichtet wurde. Ich suche ein topartiges Tool, mit dem ich aktuelle Verbindungen überwachen kann. Der virtuelle Hosting-Teil scheint mir hier Probleme zu bereiten. Folgendes habe ich versucht:
netstat
- Ich kann die Verbindungen sehen, aber sie zeigen mir, als ob sie alle meine primäre Domain verwenden, zmydomain.com:www
.iftop
- Ich mag es sehr, aber ähnliche Nachteile wienetstat
: zeigt den virtuellen Host nicht.apachetop
- scheint nicht für alle meine virtuellen Hosts Informationen anzuzeigen. Ich protokolliere in separaten benutzerdefinierten Protokolldateien. Ich vermute, dass dies die Ursache dafür ist, dass es nicht funktioniert.ntop
,darkstat
,MRTG
,bwm-ng
,IPTraf
- auch nicht arbeiten.
Ich suche also im Grunde nach etwas ähnlichem wie der aktuellen Ausgabe von netstat
, aber um den virtuellen Host einzuschließen, für den die Anfrage bestimmt ist, z avirtualsite.com:www
.
apache2
websites
virtualhost
webmin
Piotr Kula
quelle
quelle
apachetop
- aber das überwacht nur die Datei, die ich zur Verfügung stelle .. verdammt - nicht alle Server ...Antworten:
Andrea Corbellinis Antwort erklärt Ihnen, warum es mit den von Ihnen verwendeten Tools nicht funktioniert und wie Virtual Hosting funktioniert. Hier ist der einfachste Weg, den ich mir vorstellen kann, um es in Apache zu erledigen ...
mod_status
wird dir helfen.Haftungsausschluss: Ich kann nicht sagen, wie das in Webmin gemacht wird - ich verwende bloße Konfigurationsdateien, um Server einzurichten. Hier ist nur eine grundlegende Übersicht über die Schritte.
Es ist ein
top
ähnliches Tool, wird jedoch als Webseite dargestellt. Es listet den aktuellen Status auf, der direkt von Apache abgefragt wird, so dass es nicht auf das Parsen von Protokolldateien ankommt, wie es derapachetop
Fall ist.Aktivieren
mod_status
:Gewähren Sie sich Zugang.
/etc/apache2/mods-enabled/status.conf
und bearbeiten Sie:ExtendedStatus
aufOn
(optional, aber attraktiver und etwas langsamer)Innerhalb der
<Location /server-status>
, hängen Sie Ihre IP - Adresse in die Zeile mit derAllow
Richtlinie. Beispiel:Starten Sie Apache neu:
Genießen Sie das Tool in Ihrem Browser, zum Beispiel:
http://1.2.3.4/server-status
Es wird so aussehen wie in diesem Beispiel-Screenshot .
Halten Sie gedrückt F5, um Updates zu erhalten. Oder holen Sie sich ein großartiges Browser-Plugin und sehen Sie zu, wie es aktualisiert wird!
Webmin
Nachtrag des OP für zukünftige Besucher
In Webmin finden Sie die grundlegenden Schritte zum Statusmodul hier:
quelle
Alle Werkzeuge, die Sie versuchen, geben Ihnen nie die richtige Antwort. Der Grund dafür ist, dass die von Ihnen angeforderten Informationen verloren gehen, wenn die Verbindung hergestellt wird.
Angenommen, Ihr Webserver verfügt über eine IP-Adresse ( 1.2.3.4 ) und zwei Hostnamen ( a.meinedomain.com und b.meinedomain.com ), die in diese IP-Adresse aufgelöst werden.
Was passiert, wenn Sie Ihren bevorzugten Webbrowser verwenden, wenn Sie a.mydomain.com besuchen ?
Also
netstat
& Co. nur wissen, dass es eine eingehende Verbindung zu 1.2.3.4 gibt . Der Grund, warum Sie einen Hostnamen anstelle einer IP-Adresse sehen, ist, dass die IP-Adresse einen rDNS-Eintrag enthält. Daher wird dieser anstelle der IP-Adresse angezeigtnetstat
, da er besser ist. Versuchen Sie esnetstat -n
(oder entfernen Sie den rDNS-Eintrag), und die IP-Adresse wird angezeigt.Aber das ist noch nicht alles: Als ich sagte, dass die Informationen über den Hostnamen, mit dem die Verbindung hergestellt wurde, verloren gingen, stimmte ich nicht ganz. Aus Sicht des TCP / IP-Stacks ist dieser Satz wahr. Aber wenn wir die Dinge aus der Sicht des HTTP-Protokolls sehen, sind die Dinge anders. In jeder HTTP-Anfrage gibt es einen
Host:
Header, der den Hostnamen enthält, den der Browser für die Anfrage verwendet hat.Kurz gesagt, sollten Sie sich die Protokolldateien Ihres Webservers ansehen. Der Webserver ist der Dienst, der die HTTP-Anforderungen verarbeitet, und daher der einzige Dienst, der den "ursprünglichen" Hostnamen kennt.
quelle
Ein anderer Weg ist das Tippen
in Ihrem Terminal
quelle
access.log
nicht alle Anforderungen enthalten sind. Stattdessen schaue ich/usr/local/apache/domlogs/
nach Anfragen von virtualhost (aufgeteilt in SSL, Nicht-SSL und sogar FTP). Unter Ubuntu cPanel ist der Pfad möglicherweise anders./var/log/httpd/access_log
Sie können mit dieser Bash alle an Port 80 angeschlossenen IPS überprüfen
Hinweis: Wenn Sie einen anderen Port sehen möchten, ändern Sie 80
AUSGABE:
quelle
Sie können dies überprüfen mit:
quelle
Wenn Sie PID, Benutzer und Befehl möchten:
quelle
Sie können GoAccess auch interaktiv verwenden, um Ihre aktuellen Besucher anzuzeigen. Es analysiert zu diesem Zweck Ihr Apache-Zugriffsprotokoll und zeigt eine Reihe von Statistiken zu Ihrer Site an.
quelle