PHP-Anwendungen für Error Reporting instrumentieren

Mithilfe der Error Reporting-Bibliothek für PHP können Sie Fehlerberichte von PHP-Anwendungen an Error Reporting senden. Verwenden Sie die Error Reporting-Bibliothek für PHP zum Erstellen von Fehlergruppen in den folgenden Fällen:

  • Der Log-Bucket hat vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
  • Die Log-Buckets befinden sich nicht in der Region global.
  • Sie möchten benutzerdefinierte Fehlerereignisse melden.

Error Reporting ist in einige Google Cloud-Dienste wie App Engine, Compute Engine und Google Kubernetes Engine eingebunden. In Error Reporting sehen Sie die in Cloud Logging protokollierten Fehler der auf diesen Diensten ausgeführten Anwendungen. Weitere Informationen finden Sie auf dieser Seite unter In Google Cloud ausführen.

Sie können Fehlerdaten auch mithilfe von Logging an Error Reporting senden. Informationen zu den Datenformatierungsanforderungen finden Sie unter Fehlermeldungen in Logging formatieren.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Error Reporting API aktivieren.

    Aktivieren Sie die API

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Error Reporting API aktivieren.

    Aktivieren Sie die API

Clientbibliothek installieren

Mit der Error Reporting-Bibliothek für PHP können Sie die von PHP-Anwendungen gemeldeten Fehler im Blick behalten und ansehen. Dabei ist es in den meisten Fällen unerheblich, wo die Anwendungen ausgeführt werden.

Weitere Informationen zur Installation finden Sie in der Dokumentation der Error Reporting-Bibliothek für PHP. Probleme können Sie über die Problemverfolgung melden.

Clientbibliothek konfigurieren

Das Verhalten der Error Reporting-Bibliothek für PHP kann angepasst werden. Die Konfiguration der Bibliothek enthält eine Liste der Konfigurationsoptionen.

Anwendungen in Google Cloud ausführen

Zum Erstellen von Fehlergruppen mit projects.events.report benötigt Ihr Dienstkonto die Rolle Error Reporting-Autor (roles/errorreporting.writer).

Einige Google Cloud-Dienste gewähren dem entsprechenden Dienstkonto automatisch die Rolle „Error Reporting-Autor“ (roles/errorreporting.writer). Für einige Dienste müssen Sie diese Rolle jedoch dem entsprechenden Dienstkonto zuweisen.

Flexible App Engine-Umgebung

Die App Engine weist Ihrem Standarddienstkonto automatisch die Rolle Error Reporting-Autor (roles/errorreporting.writer) zu.

Die Error Reporting-Bibliothek für PHP kann verwendet werden, ohne dass Anmeldedaten explizit angegeben werden müssen.

Gehen Sie zum Aktivieren von Error Reporting in der flexiblen App Engine-Umgebung so vor:

  1. Installieren Sie die erforderlichen Bibliotheken mit dem folgenden Befehl:

    $ composer require google/cloud-error-reporting
  2. Fügen Sie die folgende Zeile in den Abschnitt runtime_config in app.yaml ein:

enable_stackdriver_integration: true

Danach erfasst die Bibliothek automatisch alle Fehler und nicht abgefangenen Ausnahmen und sendet sie an Error Reporting. Wenn Sie ein Web-Framework verwenden, das seine eigenen Ausnahme-Handler installiert, finden Sie unter Framework-Integrationen weitere Informationen.

Google Kubernetes Engine

So verwenden Sie Error Reporting mit Google Kubernetes Engine:

  1. Prüfen Sie, ob dem Dienstkonto, das von Ihrem Container verwendet werden soll, die Rolle „Error Reporting-Autor“ (roles/errorreporting.writer) gewährt wurde.

    Sie können entweder das Compute Engine-Standarddienstkonto oder ein benutzerdefiniertes Dienstkonto verwenden.

    Informationen zum Gewähren von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

  2. Erstellen Sie den Cluster und gewähren Sie ihm den Zugriffsbereich cloud-platform.

    Mit dem folgenden Befehl „create“ werden beispielsweise der Zugriffsbereich cloud-platform und ein Dienstkonto angegeben:

    gcloud container clusters create CLUSTER_NAME --service-account  SERVICE_ACCT_NAME --scopes=cloud-platform
    

Compute Engine

So verwenden Sie Error Reporting mit Compute Engine-VM-Instanzen:

  1. Achten Sie darauf, dass dem von Ihrer VM-Instanz zu verwendenden Dienstkonto die Rolle Error Reporting-Autor (roles/errorreporting.writer) gewährt wurde.

    Sie können entweder das Compute Engine-Standarddienstkonto oder ein benutzerdefiniertes Dienstkonto verwenden.

    Informationen zum Gewähren von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

  2. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:

    Zu Seite VM-Instanzen

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Compute Engine ist.

  3. Wählen Sie die VM-Instanz aus, die den Zugriffsbereich cloud-platform erhalten soll.

  4. Klicken Sie auf Beenden und dann auf Bearbeiten.

  5. Wählen Sie im Abschnitt Identität und API-Zugriff ein Dienstkonto mit der Rolle „Error Reporting-Autor“ (roles/errorreporting.writer) aus.

  6. Wählen Sie im Abschnitt Zugriffsbereiche die Option Uneingeschränkten Zugriff auf alle Cloud APIs zulassen aus und speichern Sie dann die Änderungen.

  7. Klicken Sie auf Starten/Fortsetzen.

Beispiel

1. Installieren Sie die Cloud-Bibliotheken mit dem folgenden Befehl:

$ composer require google/cloud-error-reporting
2. Fügen Sie Ihrem php.ini die folgende Zeile hinzu, wobei WORKSPACE der absolute Pfad zum Stammverzeichnis des Arbeitsbereichs ist:
auto_prepend_file='/WORKSPACE/vendor/google/cloud-error-reporting/src/prepend.php'

Diese vorangestellte Datei installiert einen Ausnahme-Handler und einen Fehler-Handler, die automatisch Fehler an Error Reporting senden.

Wenn Sie die flexible App Engine-Umgebung verwenden, lesen Sie den Abschnitt Flexible App Engine-Umgebung auf dieser Seite.

Anwendungen in einer lokalen Entwicklungsumgebung ausführen

Wenn Sie die Error Reporting-Bibliothek für PHP in einer lokalen Entwicklungsumgebung verwenden möchten, z. B. zum Ausführen der Bibliothek auf Ihrer eigenen Workstation, müssen Sie der Error Reporting-Bibliothek für PHP mit den Standardanmeldedaten für Anwendungen die lokale Anwendung bereitstellen. Weitere Informationen finden Sie unter Bei Error Reporting authentifizieren.

Wenn Sie die PHP Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

  1. Installieren Sie die Google Cloud CLI.
  2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

    gcloud auth application-default login

Weitere Informationen unter Set up authentication for a local development environment.

Die projects.events.report-Methode unterstützt auch API-Schlüssel. Wenn Sie API-Schlüssel für die Authentifizierung verwenden möchten, müssen Sie keine lokale Datei mit den Standardanmeldedaten für Anwendungen einrichten. Weitere Informationen unter Erstellen eines API-Schlüssels in der Dokumentation zur Google Cloud-Authentifizierung.

Fehlerberichte ansehen

Rufen Sie in der Google Cloud Console die Seite Error Reporting auf:

Zu Error Reporting

Sie können diese Seite auch über die Suchleiste finden.

Weitere Informationen finden Sie unter Fehler anzeigen.

Framework-Integrationen

Einige Web-Frameworks überschreiben den Ausnahme-Handler. Im Folgenden finden Sie Beispiele zur Verwendung von Error Reporting mit Laravel und Symfony. Für andere Frameworks können Sie Google\Cloud\ErrorReporting\Bootstrap::exceptionHandler als Ausnahme-Handler verwenden.

Laravel

Bearbeiten Sie die Funktion report in der Datei app/Exceptions/Handler.php so:

public function report(Exception $exception)
{
    if (isset($_SERVER['GAE_SERVICE'])) {
        // Ensure Stackdriver is initialized and handle the exception
        Bootstrap::init();
        Bootstrap::exceptionHandler($exception);
    } else {
        parent::report($exception);
    }
}

Außerdem müssen Sie am Anfang der Datei eine einzeilige use-Anweisung einfügen:

use Google\Cloud\ErrorReporting\Bootstrap;

Symfony

Erstellen Sie eine neue Datei vom Typ src/AppBundle/EventSubscriber/ExceptionSubscriber.php mit folgendem Inhalt:

// src/AppBundle/EventSubscriber/ExceptionSubscriber.php
namespace AppBundle\EventSubscriber;

use Google\Cloud\ErrorReporting\Bootstrap;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;

class ExceptionSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        // return the subscribed events, their methods and priorities
        return [KernelEvents::EXCEPTION => [
            ['logException', 0]
        ]];
    }

    public function logException(ExceptionEvent $event)
    {
        $exception = $event->getThrowable();
        Bootstrap::exceptionHandler($exception);
    }
}