In Google Kubernetes Engine einrichten

Sie haben zwei Möglichkeiten, Fehler von Ihren Google Kubernetes Engine-Anwendungen an Error Reporting zu senden:

Logging zum Melden von Fehlern verwenden

Der Standard-Logging-Agent von GKE bietet eine verwaltete Lösung zum Bereitstellen und Verwalten von Agents, die Logs für Ihre Cluster an Cloud Logging senden. Die Struktur des Agents hängt von der Version des Clusters ab. Weitere Informationen zu diesem Agenten finden Sie unter GKE-Logs verwalten.

Für Error Reporting müssen Ausnahmen oder Stacktraces in einem einzigen Logeintrag enthalten sein. Die meisten Logging-Agents erkennen, dass mehrere Logzeilen – Stackframes, die jeweils auf einer neuen Zeile gedruckt werden – einen Stack-Trace darstellen, und senden ihn als einzelnen Logeintrag an Cloud Logging. Wenn der Kundenservicemitarbeiter mehrere Zeilen nicht als einzelnen Fehler rekonstruieren kann, verwende den projects.events.report API-Endpunkt, mit dem du den Inhalt eines Fehlers steuern kannst.

Error Reporting-API zum Beschreiben von Fehlern verwenden

Die Error Reporting API bietet einen report-Endpunkt zum Schreiben von Fehlerinformationen in den Dienst.

  1. Enable the Error Reporting API.

    Enable the API

  2. Mithilfe der REST API oder einer Clientbibliothek melden Sie Fehler an die API.

    • REST API

      Weitere Informationen zur API finden Sie in der Referenzdokumentation.

    • Clientbibliotheken verwenden

      Bibliotheken verfügen über eine begrenzte Anzahl von Programmiersprachen, mit denen Sie die Error Reporting API aus Ihrer Anwendung aufrufen können.

Beispiele

ASP.NET

Das ASP.NET-NuGet-Paket meldet nicht erfasste Ausnahmen von ASP.NET-Webanwendungen an Error Reporting.

NuGet-Paket installieren

So installieren Sie das Stackdriver-ASP.NET-NuGet-Paket in Visual Studio:

  1. Klicken Sie mit der rechten Maustaste auf Ihre Lösung und wählen Sie NuGet-Pakete für Lösung verwalten aus.
  2. Wählen Sie das Kästchen Vorabversion einbeziehen aus.
  3. Suchen Sie nach dem Paket mit dem Namen Google.Cloud.Diagnostics.AspNet und installieren Sie es.

Nutzung

Nachdem Sie das Stackdriver-ASP.NET-NuGet-Paket installiert haben, können Sie die folgende Anweisung zu Ihrem Anwendungscode hinzufügen und Fehler an Stackdriver senden:

using Google.Cloud.Diagnostics.AspNet;

Fügen Sie den folgenden HttpConfiguration-Code in die Methode Register Ihrer .NET-Webanwendung ein. Ersetzen Sie dabei your-project-id durch Ihre tatsächliche Projekt-ID, um das Melden von Ausnahmen zu aktivieren:

public static void Register(HttpConfiguration config)
{
    string projectId = "YOUR-PROJECT-ID";
    string serviceName = "NAME-OF-YOUR-SERVICE";
    string version = "VERSION-OF-YOUR-SERVCICE";
    // ...
    // Add a catch all for the uncaught exceptions.
    config.Services.Add(typeof(IExceptionLogger),
        ErrorReportingExceptionLogger.Create(projectId, serviceName, version));
    // ...
}

Nachdem Sie Ihrer ASP.NET-Anwendung diese Methode hinzugefügt haben, können Sie alle nicht erfassten Ausnahmen in der Google Cloud Console aufrufen, da sie an Google Cloud gemeldet und dort im Bereich Error Reporting angezeigt werden.

C#

Das folgende Beispiel finden Sie im Repository GoogleCloudPlatform/dotnet-docs-samples. Geben Sie nach der Projekterstellung Ihre Projekt-ID an, um es zu verwenden:

C:\...\bin\Debug> set GOOGLE_PROJECT_ID=[YOUR_PROJECT_ID]

Ersetzen Sie [YOUR_PROJECT_ID] durch den korrekten Wert aus der Google Cloud Console.

Senden Sie dann Ausnahmedaten mit Code ähnlich dem folgenden:

public class ErrorReportingSample
{
    public static void Main(string[] args)
    {
        try
        {
            throw new Exception("Generic exception for testing Stackdriver Error Reporting");
        }
        catch (Exception e)
        {
            report(e);
            Console.WriteLine("Stackdriver Error Report Sent");
        }
    }

    /// <summary>
    /// Create the Error Reporting service (<seealso cref="ClouderrorreportingService"/>)
    /// with the Application Default Credentials and the proper scopes.
    /// See: https://developers.google.com/identity/protocols/application-default-credentials.
    /// </summary>
    private static ClouderrorreportingService CreateErrorReportingClient()
    {
        // Get the Application Default Credentials.
        GoogleCredential credential = GoogleCredential.GetApplicationDefaultAsync().Result;

        // Add the needed scope to the credentials.
        credential.CreateScoped(ClouderrorreportingService.Scope.CloudPlatform);

        // Create the Error Reporting Service.
        ClouderrorreportingService service = new ClouderrorreportingService(new BaseClientService.Initializer
        {
            HttpClientInitializer = credential,
        });
        return service;
    }

    /// <summary>
    /// Creates a <seealso cref="ReportRequest"/> from a given exception.
    /// </summary>
    private static ReportRequest CreateReportRequest(Exception e)
    {
        // Create the service.
        ClouderrorreportingService service = CreateErrorReportingClient();

        // Get the project ID from the environement variables.
        string projectId = Environment.GetEnvironmentVariable("GOOGLE_PROJECT_ID");

        // Format the project id to the format Error Reporting expects. See:
        // https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events/report
        string formattedProjectId = string.Format("projects/{0}", projectId);

        // Add a service context to the report.  For more details see:
        // https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events#ServiceContext
        ServiceContext serviceContext = new ServiceContext()
        {
            Service = "myapp",
            Version = "8c1917a9eca3475b5a3686d1d44b52908463b989",
        };
        ReportedErrorEvent errorEvent = new ReportedErrorEvent()
        {
            Message = e.ToString(),
            ServiceContext = serviceContext,
        };
        return new ReportRequest(service, errorEvent, formattedProjectId);
    }

    /// <summary>
    /// Report an exception to the Error Reporting service.
    /// </summary>
    private static void report(Exception e)
    {
        // Create the report and execute the request.
        ReportRequest request = CreateReportRequest(e);
        request.Execute();
    }
}

Go

Siehe Error Reporting für Go einrichten.

Java

Siehe Error Reporting für Java einrichten.

Node.js

Siehe Error Reporting für Node.js einrichten.

Ruby

Siehe Error Reporting für Ruby einrichten.

Python

Siehe Error Reporting für Python einrichten.

PHP

Siehe Error Reporting für Go einrichten.

Fehlergruppen ansehen

Rufen Sie in der Google Cloud Console die Seite Fehlerberichte auf:

Error Reporting aufrufen

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