PHP Monitoring und APM für Laravel und Symfony
Installieren Sie die OpenTelemetry-Extension für PHP, und Obseria verfolgt jeden Laravel- oder Symfony-Request, jede SQL-Query und jeden HTTP-Aufruf und zeigt, ob PHP-FPM genug Worker hat.


Warum PHP mit Obseria überwachen
Auto-Instrumentierung per Extension
Die PECL-Extension opentelemetry hängt sich in Framework- und Bibliotheksfunktionen ein; Composer-Pakete erzeugen so Spans ohne Codeänderung.
Code und Kapazität gemeinsam
Traces zeigen langsame Controller und Queries, PHP-FPM-Metriken zeigen, ob Requests auf einen freien Worker warten.
Fehler mit Kontext
Exceptions landen mit Stacktrace, Route und Release am Span. Ein neuer Fehler nach einem Deployment lässt sich so schnell zurückverfolgen.
PHP-Frameworks und Bibliotheken, die Obseria überwacht
- Laravel. Routen, Controller, Queue-Jobs, Eloquent-Queries und Cache-Aufrufe erscheinen als Spans mit Routen-Templates.
- Symfony. HttpKernel, HttpClient und Messenger werden instrumentiert: Server-Spans je Route plus Client- und Message-Spans.
- PDO, MySQLi und Doctrine. Jedes Datenbank-Statement wird zum Client-Span mit Laufzeit, bereit für die Analyse langsamer Queries.
- Guzzle, cURL und PSR-18-Clients. Ausgehende HTTP-Aufrufe tragen den W3C-Trace-Kontext zu nachgelagerten Diensten.
- Slim, WordPress und weitere Frameworks. Weitere Contrib-Pakete von OpenTelemetry decken Slim, WordPress, CakePHP, Yii, Magento und PSR-15-Middleware ab.
- PHP-FPM. Pool-Metriken der FPM-Statusseite zeigen aktive und freie Worker, wartende Verbindungen und langsame Requests.
Die PHP-Kennzahlen, auf die es ankommt
Obseria erfasst diese Werte automatisch und zeigt sie in fertigen Dashboards und Alerts.Verfügbare Arbeiter
Zeigt, ob genug freie Arbeiter für Ihre Besucher bereitstehen oder ob die Website bereits an ihrer Grenze läuft.
Wartende Besucher
Zeigt, wie viele Anfragen in der Warteschlange stehen und wie viel Verkehr Ihre Website im Zeitverlauf annimmt.
Tempo der Seiten
Macht sichtbar, wie lange der Aufbau einer Seite dauert und wie oft eine Anfrage langsamer als Ihr vereinbartes Limit ist.
Ressourcen je Anfrage
Zeigt, wie viel Speicher und Rechenleistung jede Anfrage benötigt, und weist auf Seiten hin, die teuer im Betrieb sind.
Alle 9 Metriken im Detail anzeigen
| Metrik | Einheit | Aussage |
|---|---|---|
phpfpm_active_processes | {process} | Worker, die gerade Requests bearbeiten; nahe pm.max_children ist der Pool ausgelastet. |
phpfpm_idle_processes | {process} | Worker, die auf Requests warten, also Ihre verbleibende Reserve. |
phpfpm_listen_queue | {connection} | Requests, die auf einen freien Worker warten; jeder dauerhafte Wert erhöht die Latenz. |
phpfpm_max_children_reached | {event} | Wie oft FPM das Worker-Limit erreicht hat und keine weiteren Prozesse starten konnte. |
phpfpm_slow_requests | {request} | Requests über request_slowlog_timeout, ein direkter Hinweis auf langsame Codepfade. |
phpfpm_accepted_connections | {connection} | Vom Pool angenommene Requests, Grundlage für den Durchsatz. |
phpfpm_process_request_duration | us | Dauer des aktuellen oder letzten Requests je Worker. |
phpfpm_process_last_request_memory | By | Spitzenspeicher des letzten Requests je Worker, um speicherhungrige Endpoints zu finden. |
phpfpm_process_last_request_cpu | % | CPU-Nutzung des letzten Requests je Worker. |
PHP-Monitoring in wenigen Minuten einrichten
- Schritt 1
Extension installieren
Installieren Sie die Extension opentelemetry per PECL, pickle oder install-php-extensions und aktivieren Sie sie in der php.ini (ab PHP 8.0).
- Schritt 2
Composer-Pakete hinzufügen
Binden Sie SDK, OTLP-Exporter und die Auto-Instrumentierungspakete für Ihr Framework und Ihre Bibliotheken ein.
- Schritt 3
Konfigurieren und FPM abfragen
Setzen Sie OTEL_PHP_AUTOLOAD_ENABLED und die OTLP-Variablen und stellen Sie die PHP-FPM-Statusseite für einen Prometheus-Exporter bereit, den Obseria abfragt.
# 1. OpenTelemetry-Extension installieren und in der php.ini aktivieren
pecl install opentelemetry
echo "extension=opentelemetry.so" > "$(php-config --ini-dir)/opentelemetry.ini"
# 2. SDK, OTLP-Exporter und Auto-Instrumentierungspakete hinzufügen
composer require open-telemetry/sdk open-telemetry/exporter-otlp \
open-telemetry/opentelemetry-auto-laravel \
open-telemetry/opentelemetry-auto-pdo \
open-telemetry/opentelemetry-auto-guzzle
# 3. Konfigurieren (bei PHP-FPM per env[...] in der Pool-Konfiguration)
export OTEL_PHP_AUTOLOAD_ENABLED=true
export OTEL_SERVICE_NAME="shop-backend"
export OTEL_TRACES_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_ENDPOINT="${OBSERIA_OTLP_ENDPOINT}"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer%20${OBSERIA_TOKEN}"
export OTEL_PROPAGATORS=baggage,tracecontextSofort einsatzbereit
Dashboards, Alerts und SLOs, die bereitstehen, sobald die ersten Daten ankommen.
- PHP-Service-Health mit RED-Metriken je Route
- PHP-FPM-Pools: aktive, freie und wartende Worker
- Alert bei Listen Queue über null für 5 Minuten
- Alert bei neuen Exception-Typen nach Deployment
- Langsamste SQL-Statements je Endpoint
PHP-Monitoring: Darauf kommt es an
Warum PHP Monitoring wichtig ist
PHP betreibt einen großen Teil des Webs: Onlineshops, Content-Plattformen, Kundenportale und APIs auf Basis von Laravel und Symfony. Das Ausführungsmodell ist einfach, ein Request pro Worker-Prozess, doch diese Einfachheit verdeckt zwei sehr unterschiedliche Fehlerbilder. Entweder ist der Code langsam, etwa wegen einer schweren Query oder einer externen API, oder der Pool der PHP-FPM-Worker ist voll und Requests warten, bevor überhaupt PHP-Code läuft. PHP Monitoring muss beides abdecken, sonst optimieren Teams den Code, obwohl die Kapazität das Problem ist, oder umgekehrt.
OpenTelemetry PHP ist für Traces, Metriken und Logs stabil. Die Auto-Instrumentierung basiert auf der PECL-Extension opentelemetry, über die sich Composer-Pakete in Framework- und Bibliotheksfunktionen einhängen. Mit OTEL_PHP_AUTOLOAD_ENABLED=true konfiguriert sich das SDK selbst aus Umgebungsvariablen. So wird PHP APM ohne Änderung am Anwendungscode möglich.
Die wichtigsten Signale für PHP Performance Monitoring
- Latenz und Fehler: Server-Spans je Route liefern Rate, Fehler und Dauer. Am Span erfasste Exceptions zeigen, was wo gebrochen ist.
- Datenbankzeit: PDO- und Doctrine-Spans zeigen, wie viel jedes Requests auf SQL entfällt und welche Statements dominieren.
- Externe Aufrufe: Guzzle- und cURL-Spans decken langsame Zahlungs-, Versand- oder Such-APIs auf.
- Worker-Kapazität:
phpfpm_active_processes,phpfpm_idle_processesundphpfpm_listen_queuezeigen, ob der Pool mit dem Traffic Schritt hält.phpfpm_max_children_reachedzählt, wie oft er an sein Limit stieß. - Langsame und speicherhungrige Requests:
phpfpm_slow_requestsundphpfpm_process_last_request_memoryweisen auf Endpoints hin, die Aufmerksamkeit brauchen.
Typische Performance-Probleme in PHP erkennen
Ausgelastete PHP-FPM-Pools
Sind alle Worker belegt, landen neue Requests in der Listen Queue. Die Latenz steigt für alle Endpoints gleichzeitig, während einzelne Traces unauffällig aussehen. Eine Listen Queue über null bei null freien Workern ist das typische Muster.
N+1-Queries in Eloquent und Doctrine
Lazy Loading von Relationen erzeugt eine Query pro Zeile. Im Trace-Wasserfall machen Dutzende fast identische PDO-Spans unter einem Request das Muster sofort sichtbar.
Langsame Drittanbieter-APIs
Ein synchroner Aufruf eines externen Dienstes blockiert den Worker für die gesamte Dauer. Client-Spans mit hoher Latenz zeigen die Abhängigkeit, weniger freie Worker zeigen die Folgen für die Kapazität.
Speicherlimits
Große Importe, Reports oder Bildverarbeitung können an memory_limit stoßen und in Fatal Errors enden. Der Spitzenspeicher je Request zeigt, welche Routen knapp davor liegen, bevor Nutzer Fehler sehen.
Langsame Queue-Worker
Laravel-Queue-Worker und Symfony-Messenger-Consumer laufen außerhalb des Web-Requests. Ihre Probleme bleiben deshalb oft verborgen, bis E-Mails, Exporte oder Webhooks verspätet ankommen. Spans für jeden verarbeiteten Job mit Dauer und Fehlern je Job-Klasse zeigen, welche Hintergrundarbeit langsamer wird und ob sie sich eine Datenbank mit dem Web-Tier teilt.
Kalte Caches nach Deployments
Nach einem Release sind OPcache und Anwendungs-Caches leer, die ersten Requests kompilieren Code und bauen die Konfiguration neu auf. Der Vergleich der Latenz je Release in den ersten Minuten trennt Aufwärmeffekte von echten Regressionen.
Best Practices für Laravel und Symfony Monitoring
- Setzen Sie
service.nameunddeployment.environment.nameje Anwendung und trennen Sie Web-Worker von Queue-Workern. - Reichen Sie die OTEL-Variablen ausdrücklich an PHP-FPM weiter, etwa per
env[...]in der Pool-Konfiguration, denn FPM leert die Umgebung standardmäßig. - Installieren Sie nur die Instrumentierungspakete, die Sie brauchen, um Overhead und Span-Volumen gering zu halten.
- Aktivieren Sie FPM-Statusseite und Slowlog und alarmieren Sie auf wartende Requests statt nur auf CPU-Last.
- Nutzen Sie Tail-based Sampling, um jeden langsamen oder fehlerhaften Request zu behalten.
So unterstützt Obseria PHP APM
Obseria empfängt Traces aus OpenTelemetry PHP per OTLP und liest PHP-FPM-Metriken über den Obseria Agent oder den OpenTelemetry Collector ein. TopoGraph verbindet Ihre PHP-Services mit Nginx, MySQL, Redis und externen APIs. Steigen die Antwortzeiten, unterscheidet Obseria Intelligence zwischen langsamem Code, langsamen Abhängigkeiten und erschöpften Worker-Pools und präsentiert die Ursache mit nachvollziehbarer Beweiskette. Dashboards, Alerts und SLOs sind inklusive, und alle Daten bleiben per OTLP exportierbar.
Verwandte Integrationen
Passende Funktionen
Distributed Tracing
Verfolgen Sie jeden Request über Services, Queues und Datenbanken hinweg und finden Sie den langsamen Span oder die fehlerhafte Abhängigkeit in Sekunden.
Mehr erfahrenFehler-Tracking
Die Errors Inbox gruppiert Exceptions aus Backend, Frontend und Mobile Apps zu Issues, zeigt deren Auswirkung und bündelt Zuweisung und Lösung in einem Workflow.
Mehr erfahrenDatenbank-Monitoring
Finden Sie die langsame Query hinter dem langsamen Endpunkt. Obseria verknüpft Datenbankmetriken, Query-Performance und Logs mit den Traces und Services, die sie aufrufen.
Mehr erfahrenMehr erfahren
Was ist APM (Application Performance Monitoring)?
Was ist APM? Wie Application Performance Monitoring Latenz, Durchsatz und Fehler misst, wie Distributed Tracing funktioniert und welche Kennzahlen zählen.
Was ist OpenTelemetry?
Was ist OpenTelemetry? So erzeugen API, SDKs, Collector, OTLP und Semantic Conventions herstellerneutrale Traces, Metriken, Logs und Profile.
Häufige Fragen zum PHP-Monitoring
Nein. Die Extension opentelemetry und Auto-Instrumentierungspakete für Laravel, Symfony, PDO oder Guzzle erzeugen Spans automatisch. Manuelle Spans über die OpenTelemetry API sind optional.
Die Auto-Instrumentierung von OpenTelemetry für PHP setzt PHP 8.0 oder neuer, die PECL-Extension und Composer-Autoloading voraus. Einzelne Pakete können neuere PHP- oder Framework-Versionen verlangen.
PHP-FPM leert Umgebungsvariablen standardmäßig. Übergeben Sie die OTEL_*-Variablen per env[...] in der Pool-Konfiguration oder setzen Sie sie in einer ini-Datei, die PHP einliest.
Aktivieren Sie die FPM-Statusseite und betreiben Sie einen Prometheus-Exporter für PHP-FPM. Der Obseria Agent oder der OpenTelemetry Collector fragt ihn ab, und die Metriken erscheinen neben Ihren Traces.
Ja. OpenTelemetry bietet zusätzlich eine PHP-Distribution für Linux, installierbar als deb-, rpm- oder apk-Paket. Prüfen Sie deren aktuellen Stand, bevor Sie sie breit ausrollen.
Starten Sie heute mit dem PHP-Monitoring
Binden Sie PHP in Minuten per OpenTelemetry oder Obseria Agent an. 14 Tage kostenlos.