So verwenden Sie den PHP-FPM-Exporter
Als ich eine der Anwendungen, die ich entwickle, auf dem Server bereitgestellt habe, stieß ich auf ein sehr merkwürdiges Verhalten des php-fpm-Prozesses. Dieses Verhalten zu reproduzieren, konnte Stunden dauern, sodass die „dumme Versuch-und-Warte“-Methode viel zu viel Zeit zur Behebung gekostet hätte. Das Erste, was ich tat, war die Installation eines Monitorings, denn damit können Sie verfolgen, was auf der Maschine passiert, während Sie schlafen.
Ich liebe Prometheus und Grafana, daher war es ziemlich naheliegend, dass ich mich für diese Tools entscheiden würde.
Wenn Sie diese Anleitung lesen, haben Sie höchstwahrscheinlich Probleme bei der Einrichtung, aber ich gehe davon aus, dass Sie Prometheus bereits installiert haben.
Einrichtung
Legen wir los. Ich gehe davon aus, dass Sie sich bereits per SSH mit dem Server bzw. Container verbunden haben, den Sie überwachen möchten. Ich verwende den PHP FPM Exporter aus diesem Repository.
Laden Sie den Exporter herunter und verschieben Sie ihn mit folgendem Befehl nach /usr/local/bin (da es sich um ein normales, nicht über die Distribution verwaltetes Paket handelt):
wget https://github.com/hipages/php-fpm_exporter/releases/download/v2.2.0/php-fpm_exporter_2.2.0_linux_amd64
mv php-fpm_exporter_* /usr/local/bin/php-fpm_exporter
chmod 755 /usr/local/bin/php-fpm_exporter
Konfiguration
Dieser Teil hat mir einige Schwierigkeiten bereitet (meine Ausrede ist, dass es schon spät war), was mich dazu motiviert hat, diese Anleitung am nächsten Morgen nach der Einrichtung zu schreiben.
-
Öffnen Sie Ihre PHP-FPM-Konfiguration (ersetzen Sie
8.3durch Ihre PHP-Version):vi /etc/php/8.3/fpm/pool.d/www.conf -
Nehmen Sie die folgenden Änderungen vor:
-
Kommentieren Sie den Listen-Modus ein:
listen.mode = 0660 -
Kommentieren Sie den Status-URI ein:
pm.status_path = /status -
Stellen Sie sicher, dass die Socket-Konfiguration auf den richtigen Pfad verweist (ersetzen Sie bei Bedarf
8.3durch Ihre PHP-Version):listen = /run/php/php8.3-fpm.sock
-
Kommentieren Sie den Listen-Modus ein:
- Speichern Sie die Änderungen und verlassen Sie den Editor.
-
Starten Sie den PHP-FPM-Dienst neu, damit die Konfiguration übernommen wird:
systemctl restart php8.3-fpm
Ihre PHP-FPM-Instanz ist nun so konfiguriert, dass sie Metriken über den Pfad /status auf dem festgelegten Socket bereitstellt.
Dienst
Als Nächstes erstellen Sie einen Dienst für den PHP-FPM-Exporter, damit er im Hintergrund laufen und beim Booten automatisch starten kann.
Öffnen Sie eine neue Dienstdatei für den Exporter:
vi /etc/systemd/system/php-fpm_exporter.service
Fügen Sie der Datei folgenden Inhalt hinzu:
# Service file for PHP-FPM Exporter:
[Unit]
Description=PHP-FPM Exporter Service
After=network.target
[Service]
User=www-data
Group=www-data
Type=simple
ExecStart=/usr/local/bin/php-fpm_exporter server --phpfpm.fix-process-count=true --phpfpm.scrape-uri "unix:///run/php/php8.3-fpm.sock;/status"
[Install]
WantedBy=multi-user.target
Dienst starten und aktivieren
Laden Sie den systemd-Daemon neu, damit er die neue Dienstkonfiguration übernimmt:
sudo systemctl daemon-reload
Aktivieren Sie den PHP-FPM-Exporter-Dienst, damit er beim Booten automatisch startet
sudo systemctl enable php-fpm_exporter
Starten Sie den PHP-FPM-Exporter-Dienst:
sudo systemctl start php-fpm_exporter
Prüfen Sie den Dienststatus, um sicherzustellen, dass er ordnungsgemäß läuft:
sudo systemctl status php-fpm_exporter
Wenn alles korrekt eingerichtet ist, sollten Sie sehen, dass der Dienst als active (running) angezeigt wird. Falls es Probleme gibt, können Sie die Logs so einsehen:
journalctl -u php-fpm_exporter -f
Metriken sammeln
Nachdem der PHP-FPM-Exporter nun läuft, ist es an der Zeit, Prometheus für das Sammeln der Metriken zu konfigurieren.
-
Öffnen Sie Ihre Prometheus-Konfigurationsdatei (in der Regel
prometheus.yml). -
Fügen Sie die folgende Job-Konfiguration hinzu:
- job_name: 'php-fpm-exporter' scrape_interval: 15s # Adjust based on your needs static_configs: - targets: ['ip_of_your_server:9253'] -
Speichern Sie die Änderungen und starten Sie Prometheus neu:
sudo systemctl restart prometheus -
Prüfen Sie, ob Prometheus die Metriken abruft, indem Sie die Targets-Seite aufrufen:
http://<your-prometheus-server>:9090/targets. Das Ziel php-fpm-exporter sollte dort als up angezeigt werden. Falls nicht, stellen Sie sicher, dass der Exporter läuft und keine Firewall-Regeln die Verbindung blockieren.
Einrichtung in Grafana überprüfen
Sobald Prometheus die Metriken erfolgreich abruft, können Sie in Grafana Visualisierungen erstellen.
Prometheus als Datenquelle hinzufügen
- Melden Sie sich bei Ihrer Grafana-Instanz an.
- Gehen Sie zu Settings → Data Sources.
- Klicken Sie auf Add Data Source und wählen Sie Prometheus.
-
Geben Sie die Prometheus-URL an (z. B.
http://<your-prometheus-server>:9090). - Klicken Sie auf Save & Test, um die Verbindung zu bestätigen.
Wenn alles funktioniert, sollten Sie eine Meldung sehen, dass die Datenquelle erfolgreich hinzugefügt wurde.
Viel Erfolg beim Monitoring