Crmgo Blog

Apache überwachen, Modul mod_performance

Apache überwachen, Modul mod_performance

mod_performance Was ist dieses Modul? Es handelt sich um ein normales Apache 2.x-Modul für Linux. Laut der Dokumentation zu diesem Modul: Das Modul dient der Sammlung und Speicherung von Statistiken über die Ressourcennutzung (CPU und Speicher, Ausführungszeit von Skripten) durch den Webserver Apache 2.2; das Modul ermöglicht die Analyse der gesammelten…

Apache überwachen, Modul mod_performance

mod_performance

Was ist dieses Modul? Es handelt sich um ein normales Apache 2.x-Modul für Linux. Aus der Dokumentation dazu:

  • Das Modul dient der Sammlung und Speicherung von Statistiken über die Ressourcennutzung (CPU und Speicher, Ausführungszeit des Skripts) durch den Webserver Apache 2.2;
  • Das Modul ermöglicht die Analyse der gesammelten Daten.

Was bedeutet das alles? Es bedeutet, dass es ermöglicht, zu überwachen, wie viele Ressourcen ein an den Webserver gesendeter Antrag verbraucht. Dabei wird bei jedem Aufruf die folgende Information gespeichert:

  1. der virtuelle Host, an den der Antrag gesendet wurde;
  2. die angeforderte Datei;
  3. die URI des Antrags;
  4. die CPU-Belastung in %;
  5. die Speichernutzung in %;
  6. die Bearbeitungszeit des Antrags.

Die angesammelten Statistiken können analysiert werden. Als Datenbank zur Speicherung und Analyse wird SQLite verwendet.
Als Analysetool für die Ressourcennutzung wird nicht das Scoreboard verwendet, wie bei mod_status und Perl-Erweiterungen, sondern glibtop.
Das Modul ermöglicht die Überwachung sowohl aller Anfragen als auch spezifischer, nach einem Muster mit regulären Ausdrücken gefilterter Anfragen. Genauer gesagt verarbeitet das Modul IMMER nur die Anfragen, die dem Filter mit dem regulären Ausdruck entsprechen.

So zeigen Sie die angesammelten Daten an

Das Modul bietet zwei Schnittstellen zur Anzeige und Analyse von Daten: 1) global; 2) die sogenannte per-Host-Schnittstelle.
Jede Schnittstelle ist an einen Handler gebunden:

user-status — per-Host
performance-status — global

Der Zugriff auf die Schnittstellen wird wie im Modul mod_status konfiguriert, d. h.:

<Location /perf-status>
    Order allow,deny
    SetHandler performance-status
    Allow from 1.1.1.1
</Location>

Die globale Schnittstelle ermöglicht die Anzeige und Analyse der angesammelten Daten für alle virtuellen Hosts, während die per-Host-Schnittstelle nur Informationen zu dem Host anzeigt und analysiert, an den die Schnittstelle gebunden ist. Wenn Sie beispielsweise den Host test.test.test/user-status aufrufen, bezieht sich die gesamte angezeigte Statistik nur auf diesen Host. Statistiken zu anderen Hosts werden nicht angezeigt.

Die globale Verwaltungsschnittstelle des Moduls sieht wie auf der Abbildung unten dargestellt aus:
Hauptformular von mod_performance

In der Hauptformularansicht, wie auf dem Bild zu sehen, sind folgende Felder vorhanden:
Mode – Anzeigemodus der Daten.
Period – Anzahl der Tage; Zeitraum für die Anzeige oder Analyse der Daten, beginnend vom Anfang des aktuellen Tages.
Period begin – Beginn des Zeitraums, angegeben im Format YYYY-MM-DD hh:mm:ss.
Period end – Ende des Zeitraums, angegeben im Format YYYY-MM-DD hh:mm:ss.
Wenn Period begin und Period end angegeben sind, werden die Daten, die durch diese Parameter begrenzt sind, angezeigt, und das Feld Period wird ignoriert. Andernfalls wird der zu analysierende Abschnitt durch den Parameter Period festgelegt.
Hostname(SQL) – Filter; nur Daten für den angegebenen Host ausgeben. Die Syntax entspricht der LIKE-Klausel in SQL. Wenn beispielsweise „%test“ angegeben wird, werden alle Hosts ausgewählt, die auf „test“ enden.
Script name(SQL) – ähnlich wie der vorherige Parameter, jedoch wird der Name des aufgerufenen Skripts analysiert.
URI(SQL) – ähnlich wie der vorherige Parameter, jedoch wird die URI der Anfrage analysiert.
Graph Mode(Y/N) – Darstellung als Grafik oder als Text.

Die Ausgabe der Daten sieht ungefähr wie folgt aus:
Textuelle Ausgabe der kumulierten Informationen

Der in der Abbildung gezeigte Host ist vollständig testweise angelegt; falls er mit einem realen Host übereinstimmt, bitte ich um Entschuldigung.
Der grafische Anzeigemodus wird im folgenden Bild gezeigt:
Grafische Ausgabe

Analysereihen

Show output without analytics – Ausgabe der gesammelten Informationen ohne Analyse, gefiltert nach Host, Skript und URI (grafischer und textueller Modus).
Maximal %CPU – Nur Einträge mit dem maximalen %CPU-Wert ausgeben (unter Berücksichtigung der Filterung).
Maximal memory % – Nur Einträge mit dem maximalen %memory-Wert ausgeben (unter Berücksichtigung der Filterung).
Maximal execution request time – Das Skript mit der längsten Ausführungszeit ausgeben.
Host requests statistics – Statistik der Host-Anfragen mit absteigender Sortierung (in % der Gesamtanzahl unter Berücksichtigung der Filter).
Execution history screen(use Period begin) – Ermöglicht die Berechnung der Liste der zu einem bestimmten Zeitpunkt ausgeführten Anfragen.
Number of requests per domain – Statistik der Host-Anfragen mit absteigender Sortierung (nicht in Prozent, sondern als absolute Anzahl).
Average usage per host – Durchschnittliche Serverauslastung durch jeden Host ausgeben (Summe der % CPU, Summe des % MEMORY, Summe der Skriptausführungen, durchschnittliche % CPU über den Zeitraum, durchschnittliche % Speichernutzung, durchschnittliche Skriptausführungszeit).
Ich werde nicht ins Detail gehen und einige Modi unberücksichtigt lassen.

Installation des Moduls

Hier wird ein Installationsbeispiel für rpm-basierte Systeme angegeben. Alle Aktionen müssen unter dem Benutzer root durchgeführt werden.
1) Installieren Sie die erforderlichen Pakete für den Build:

yum install httpd-devel apr-devel libgtop2-devel sqlite-devel gd-devel

2) Erstellen Sie einen temporären Ordner für den Quellcode:

mkdir ~/my_tmp
cd ~/my_tmp

3) Laden Sie den Quellcode des Moduls herunter, entpacken Sie das Archiv und wechseln Sie in den entpackten Ordner:

wget http://lexvit.dn.ua/utils/getfile.php?file_name=mod_performance_tar201104233487.gz -O mod_performance.tar.gz
tar zxvf mod_performance.tar.gz
cd mod_performance/

4) Bauen Sie das Modul:

make

5) Warnungen können ignoriert werden. Wichtig ist, dass keine Fehler auftreten. Wenn der Build erfolgreich war, führen Sie Folgendes aus:

make install

oder

cp .libs/mod_performance.so <путь куда копировать>
Apache konfigurieren

Die Konfiguration wird für eine Standardinstallation von Apache durchgeführt, d. h. die Module befinden sich im Verzeichnis /etc/httpd/modules, es gibt das Verzeichnis /etc/httpd/conf.d/, das in /ect/httpd/conf/httpd.conf eingebunden ist.
1) Erstellen Sie die Konfigurationsdatei des Moduls:

touch /etc/httpd/conf.d/mod_performance.conf

2) Fügen Sie Folgendes ein:

LoadModule performance_module modules/mod_performance.so

<IfModule mod_performance.c>
PerformanceHistory 5
PerformanceEnabled On
PerformanceMaxThreads 80
PerformanceScript \.php
PerformanceStackSize 1
PerformanceUseCanonical On

<Location /admin-status>
Order allow,deny
SetHandler performance-status
Allow from 1.1.1.1
</Location>
</IfModule>

3) Speichern Sie die Datei und starten Sie Apache neu:

service httpd restart

Die Konfigurationsdatei dient nur als Beispiel. Alle Parameter müssen an den jeweiligen Server angepasst werden.
Die oben gezeigte Modulkonfiguration ermöglicht die Überwachung von Anfragen an PHP-Skripte.
Eine Beschreibung aller Konfigurationsparameter finden Sie in der Modul-Dokumentation.

Hinweis: Dieser Beitrag kann KI-unterstützt erstellt und anschließend redaktionell geprüft worden sein. Verantwortlich: Dmytro Lomaka, Kaltenkirchen.