Verwenden von SSH, um in Protokollen mehrerer Domänen Zugriff auf ein problematisches Skript zu finden

Verwenden von SSH, um in Protokollen mehrerer Domänen Zugriff auf ein problematisches Skript zu finden

Ich betreibe mehrere (~20) Websites auf einem Dreamhost VPS. In letzter Zeit habe ich die maximale Speicherzuweisung für den VPS erreicht und möchte das Problem finden.

Ich hätte gerne ein SSH-Skript, das alle Protokolldateien aller Domänen scannt und mir anzeigt, welches Objekt (Bild, PHP-Skript usw.) viele Aufrufe erhält.

Es zählt die Aufrufe in jedem /logs/*/http/access.log, führt eine absteigende Sortierung durch und zeigt mir die Top 10 über alle Domänen hinweg.

Aber ich weiß nicht, wie das geht.

Ist das möglich?

Kann jemand ein Skript vorschlagen, das dies erledigt?

Antwort1

Der Teil, in dem Sie nach einem Skript gefragt haben, das „… die Aufrufe in jedem /logs/*/http/access.log zählt, eine absteigende Sortierung durchführt und mir die Top 10 über alle Domänen hinweg anzeigt.“ kann folgendermaßen erreicht werden:

grep -o " /[^ ]*" /logs/*/http/access.log | sort | uniq -c | sort -rn | head

Sie könnten jedoch dieselben Informationen auch aus AWStats oder Google Analytics erhalten. Tatsächlich handelt es sich dabei lediglich um eine Liste aller URLs, zusammengefasst und sortiert nach der Anzahl der Zugriffe auf jede einzelne URL.

Dasselbe Muster von Unix-Befehlen kann verwendet werden, um Ihre PHP- und Apache-Fehler zu aggregieren, was in Ihrer speziellen Situation nützlicher sein könnte. Zum Beispiel das Folgende:

grep -o " PHP.*" /logs/*/php/error.log | sort | uniq -c | sort -rn | head

Findet alle PHP-Fehler in Ihrem PHP-Fehlerprotokoll (ich habe geraten, wo Sie es aufbewahren) und listet die 10 häufigsten auf.

Ein weiteres nützliches ist:

grep -o " PHP Fatal error: Allowed memory size.*" /logs/*/php/error.log | sed 's/tried to allocate [0-9]* bytes/tried to allocate N bytes/' | sort | uniq -c | sort -rn | head

Dadurch werden alle Speicherfehler gefunden und gruppiert.

Antwort2

Anstatt diesen Ansatz zu wählen, würde ich Ihnen empfehlen, einen zentralen Protokollierungsserver einzurichten. Sie haben hierfür mehrere Möglichkeiten, angefangen vom alten dateibasierten Speicher bis hin zu den eher webbasierten Analysetools, die die Protokolle in einer Datenbank speichern und Ihnen ermöglichen, sie zu durchsuchen, Diagramme/Grafiken zu erstellen usw.

Hier ist ein Link zu einem ausführlichen Whitepaper von Cisco Systems, das Ihnen weiterhelfen wird:

Erstellen skalierbarer Syslog-Managementlösungen

Antwort3

Anstelle dieser manuellen, kniffligen Lösung würde ich Ihnen empfehlen, ein Tool wieSplunkServer.

Splunk ist tatsächlich ein erstaunlicher Protokollanalysator, in dem Sie Protokolle auf jede gewünschte Weise analysieren können, sogar mit Warnungen.

Splunk sammelt, indiziert und nutzt die riesigen Mengen wertvoller Maschinendaten, die von Ihrer komplexen IT-Infrastruktur generiert werden, ob physisch, virtuell oder in der Cloud.

verwandte Informationen