Error Reporting für Java einrichten

Mit dem Stackdriver Error Reporting-Paket für Java können Sie Fehlerberichte von Java-Anwendungen an Stackdriver Error Reporting senden.

Error Reporting ist in einige Google Cloud Platform-Produkte wie App Engine, Compute Engine und Google Kubernetes Engine integriert. In Error Reporting sehen Sie die in Stackdriver Logging protokollierten Fehler der auf diesen Produkten ausgeführten Anwendungen. Weitere Informationen erhalten Sie im Abschnitt In Google Cloud Platform ausführen.

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

Hinweis

  1. Melden Sie sich in Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, registrieren Sie sich hier für ein neues Konto.

  2. Wählen Sie ein GCP-Projekt aus oder erstellen Sie eines.

    Zur Seite "Ressourcen verwalten"

  3. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Platform-Projekt aktiviert ist.

    Informationen zum Aktivieren der Abrechnung

  4. {% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}
  5. {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %} Richten Sie ein GCP Console-Projekt ein.

    Projekt einrichten

    Führen Sie folgende Schritte per Mausklick aus:

    • Erstellen Sie ein Projekt oder wählen Sie eines aus.
    • Aktivieren Sie die {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}{% dynamic endif %}{% dynamic if "," in setvar.api_list %} erforderlichen APIs{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} erforderliche API{% dynamic endif %} für dieses Projekt.
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • Erstellen Sie ein Dienstkonto.
    • Laden Sie einen privaten Schlüssel als JSON-Datei herunter.
    • {% dynamic endif %}

    Sie können diese Ressourcen jederzeit in der GCP Console ansehen und verwalten.

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %} Aktivieren Sie die {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}{% dynamic endif %}{% dynamic if "," in setvar.api_list %} erforderlichen APIs{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} erforderliche API{% dynamic endif %}. {% dynamic endif %}

    Aktivieren Sie die {% dynamic if "," in setvar.api_list %} APIs{% dynamic else %} API{% dynamic endif %}.

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  6. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}

Clientbibliothek installieren

Das Stackdriver Error Reporting-Paket für Java ermöglicht es Ihnen, die von Java-Anwendungen gemeldeten Fehler zu überwachen und anzuzeigen. Wo die Anwendungen ausgeführt werden, ist in den meisten Fällen unerheblich.

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

Clientbibliothek konfigurieren

Sie können das Verhalten des Stackdriver Error Reporting-Pakets anpassen. Weitere Informationen finden Sie in der Java API-Referenzdokumentation.

Fehler melden

Verwenden Sie das Stackdriver Error Reporting-Paket nur zum Melden von benutzerdefinierten Fehlerereignissen.

Ausnahmen, die mit Stackdriver Logback Appender oder dem Stackdriver-Handler "java.util.logging" protokolliert werden, werden automatisch an die Error Reporting-Konsole gemeldet. Im folgenden Beispiel sehen Sie, wie benutzerdefinierte Fehlerereignisse über die API gemeldet werden:

import com.google.cloud.ServiceOptions;
import com.google.cloud.errorreporting.v1beta1.ReportErrorsServiceClient;
import com.google.devtools.clouderrorreporting.v1beta1.ErrorContext;
import com.google.devtools.clouderrorreporting.v1beta1.ProjectName;
import com.google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent;
import com.google.devtools.clouderrorreporting.v1beta1.SourceLocation;

/**
 * Snippet demonstrates using the Stackdriver Error Reporting API to report a custom error event.
 * <p>
 * This library is not required on App Engine, errors written to stderr are automatically written
 * to Stackdriver Error Reporting.
 * It is also not required if you are writing logs to Stackdriver Logging.
 * Errors written to Stackdriver Logging that contain an exception or stack trace
 * are automatically written out to Stackdriver Error Reporting.
 */
public class QuickStart {
  public static void main(String[] args) throws Exception {

    // Google Cloud Platform Project ID
    String projectId = (args.length > 0) ? args[0] : ServiceOptions.getDefaultProjectId();
    ProjectName projectName = ProjectName.of(projectId);

    // Instantiate an Error Reporting Client
    try (ReportErrorsServiceClient reportErrorsServiceClient = ReportErrorsServiceClient.create()) {

      // Custom error events require an error reporting location as well.
      ErrorContext errorContext = ErrorContext.newBuilder()
          .setReportLocation(SourceLocation.newBuilder()
              .setFilePath("Test.java")
              .setLineNumber(10)
              .setFunctionName("myMethod")
              .build())
          .build();

      //Report a custom error event
      ReportedErrorEvent customErrorEvent = ReportedErrorEvent.getDefaultInstance()
          .toBuilder()
          .setMessage("custom error event")
          .setContext(errorContext)
          .build();
      // Report an event synchronously, use .reportErrorEventCallable for asynchronous reporting.
      reportErrorsServiceClient.reportErrorEvent(projectName, customErrorEvent);
    }
  }
}
Wie Sie Fehlerstatistiken und Daten zu einzelnen Ereignissen abrufen und verwalten, erfahren Sie in der Java API-Referenzdokumentation.

In Google Cloud Platform ausführen

Für die Verwendung des Stackdriver Error Reporting-Pakets für Java ist die Cloud IAM-Rolle Error Reporting-Schreiber erforderlich. Die meisten Compute-Plattformen von Google Cloud Platform stellen diese Rolle standardmäßig zur Verfügung.

Flexible App Engine-Umgebung

In der App Engine wird die Rolle des Error Reporting-Schreibers standardmäßig zugewiesen.

Das Stackdriver Error Reporting-Paket für Java kann verwendet werden, ohne dass Anmeldeinformationen explizit angegeben werden müssen.

Error Reporting wird für Anwendungen in flexiblen App Engine-Umgebungen automatisch aktiviert. Es ist keine zusätzliche Einrichtung erforderlich.

@WebServlet(name = "Error reporting", value = "/error")
public class ErrorReportingExample extends HttpServlet {

  private Logger logger = Logger.getLogger(ErrorReportingExample.class.getName());

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {

    // errors logged to stderr / Cloud logging with exceptions are automatically reported.
    logger.log(Level.SEVERE, "exception using log framework", new IllegalArgumentException());

    // use the error-reporting client library only if you require logging custom error events.
    logCustomErrorEvent();

    // runtime exceptions are also automatically reported.
    throw new RuntimeException("this is a runtime exception");
  }

  private void logCustomErrorEvent() {
    try (ReportErrorsServiceClient reportErrorsServiceClient = ReportErrorsServiceClient.create()) {
      // Custom error events require an error reporting location as well.
      ErrorContext errorContext = ErrorContext.newBuilder()
          .setReportLocation(SourceLocation.newBuilder()
              .setFilePath("Test.java")
              .setLineNumber(10)
              .setFunctionName("myMethod")
              .build())
          .build();
      //Report a custom error event
      ReportedErrorEvent customErrorEvent = ReportedErrorEvent.getDefaultInstance()
          .toBuilder()
          .setMessage("custom error event")
          .setContext(errorContext)
          .build();

      // default project id
      ProjectName projectName = ProjectName.of(ServiceOptions.getDefaultProjectId());
      reportErrorsServiceClient.reportErrorEvent(projectName, customErrorEvent);
    } catch (Exception e) {
      logger.log(Level.SEVERE, "Exception encountered logging custom event", e);
    }
  }
}

GKE

In GKE müssen Sie beim Erstellen des Clusters den Zugriffsbereich cloud-platform wie im folgenden Beispielbefehl einrichten:

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform

Compute Engine

Wenn Sie Compute Engine-VM-Instanzen verwenden, ergänzen Sie jede Instanz um den Zugriffsbereich cloud-platform. Neue Instanzen können Sie über die Google Cloud Platform Console im Feld Instanz erstellen unter Identität und API-Zugriff erstellen. Verwenden Sie das Compute Engine-Standarddienstkonto oder ein anderes Dienstkonto und wählen Sie im Abschnitt Identität und API-Zugriff die Option Uneingeschränkten Zugriff auf alle Cloud APIs zulassen aus. Achten Sie bei jedem ausgewählten Dienstkonto darauf, dass diesem im Abschnitt IAM & Verwaltung der GCP Console die Rolle Error Reporting-Schreiber zugewiesen ist.

Lokal und extern ausführen

Wenn Sie das Stackdriver Error Reporting-Paket für Java außerhalb der Google Cloud Platform ausführen möchten, geben Sie Ihre GCP-Projekt-ID und die entsprechenden Dienstkonto-Anmeldedaten direkt im Stackdriver Error Reporting-Paket für Java an. Dies gilt für die Ausführung der Bibliothek auf Ihrer eigenen Workstation, auf den Computern Ihres Rechenzentrums oder auf den VM-Instanzen eines anderen Cloudanbieters. Weitere Informationen finden Sie unter Dienstkonto-Anmeldedaten manuell abrufen und bereitstellen.

Fehlerberichte ansehen

Nach der Bereitstellung können Sie Fehlerberichte im Error Reporting-Dashboard der Cloud Platform Console ansehen.

Error Reporting-Dashboard aufrufen

Weitere Informationen finden Sie unter Fehler anzeigen.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Stackdriver Error Reporting