Error Reporting für Amazon EC2 einrichten

Mit Error Reporting können Sie Abstürze aggregieren und Laufzeit-Exceptions in Ihren EC2-Anwendungen diagnostizieren. Sie können Fehlerdaten senden, indem Sie Logs an Cloud Logging streamen oder die Error Reporting API direkt aufrufen. Wenn Sie Logging verwenden, müssen Ihre Logeinträge den Formatierungsanforderungen entsprechen.

Logging zum Melden von Fehlern verwenden

Zum Verknüpfen Ihrer EC2-Anwendungen mit Error Reporting senden Sie Ihre Ausnahmen und andere Fehler an Logging.

Beispiel:

  1. Verbinden Sie das Amazon Web Services-System (AWS) mit Google Cloud. Weitere Informationen finden Sie unter Logging-Agent auf einzelnen VMs installieren.
  2. Installieren Sie den Logging-Agenten google-fluentd entsprechend Ihrer Umgebung. Eine Anleitung finden Sie unter Logging-Agent installieren.
  3. Ändern Sie Ihre Anwendung so, dass Ausnahmen und ihre Stacktraces in Logging protokolliert werden.

    Sie müssen alle Informationen für einen einzelnen Fehler oder eine einzelne Ausnahme im selben Logeintrag angeben, einschließlich aller Frames eines Stacktrace. Wenn nicht alle Informationen zusammen vorliegen, wird Error Reporting den Fehler möglicherweise nicht erkennen. Sie können das strukturierte JSON-Format für Ihre Logeintrag-Nutzlasten verwenden, um verschiedene Arten von Informationen für jeden Fehler einzuschließen.

Java

Fügen Sie der Datei pom.xml Folgendes hinzu:

<dependency>
  <groupId>org.fluentd</groupId>
  <artifactId>fluent-logger</artifactId>
  <version>0.3.4</version>
</dependency>

Verwenden Sie dann Code ähnlich dem folgenden, um Ausnahmedaten zu senden:

public class ExceptionUtil {
  private static FluentLogger ERRORS = FluentLogger.getLogger("myapp");

  public static void main(String[] args) {
    try {
      throw new Exception("Generic exception for testing Stackdriver");
    } catch (Exception e) {
      report(e);
    }
  }

  public static void report(Throwable ex) {
    StringWriter exceptionWriter = new StringWriter();
    ex.printStackTrace(new PrintWriter(exceptionWriter));
    Map<String, Object> data = new HashMap<>();
    data.put("message", exceptionWriter.toString());
    Map<String, String> serviceContextData = new HashMap<>();
    serviceContextData.put("service", "myapp");
    data.put("serviceContext", serviceContextData);
    // ... add more metadata
    ERRORS.log("errors", data);
  }
}

Python

Installieren Sie zuerst die Bibliothek fluent-logger-python:

sudo pip install fluent-logger

Verwenden Sie dann Code ähnlich dem folgenden, um Ausnahmedaten zu senden:

import traceback

import fluent.event
import fluent.sender


def simulate_error():
    fluent.sender.setup("myapp", host="localhost", port=24224)

    def report(ex):
        data = {}
        data