Blog

Wie kann ich mich über Anwendungsprotokolle in GCP benachrichtigen lassen?

Simon Karman

Simon Karman

Aktualisiert Oktober 16, 2025
4 Minuten

Anwendungen erzeugen alle möglichen Arten von Protokollen. Manchmal sagen diese Protokolle etwas darüber aus, wie die Anwendung funktioniert. Wenn zum Beispiel Fehlerprotokolle auftauchen, könnte Ihre Anwendung Probleme haben. Wir sehen uns an, wie Sie sich über Anwendungsprotokolle in der Google Cloud benachrichtigen lassen können.

Das Szenario, das wir betrachten, ist folgendes: Wie kann ich über Slack benachrichtigt werden, wenn ein Cloud Run-Dienst Protokolle ausgibt, die das Wort 'binxio' enthalten?

Kurz und bündig

Wir werden eine auf Protokollen basierende Metrik erstellen und dann einen Benachrichtigungskanal hinzufügen, um eine Alarmdefinition einzurichten.

Auf Protokollen basierende Metriken

Zunächst müssen wir unsere protokollbasierte Metrik erstellen. Logs-basierte Metriken leiten Metrikdaten aus dem Inhalt von Protokolleinträgen ab. Wenn Ihre Anwendung z.B. jede eingehende HTTP-Anfrage protokolliert, können Sie eine logs-basierte Metrik verwenden, um die Anzahl der Protokolleinträge zu zählen, die einer POST-Anfrage ähneln.

Für unser Beispiel werden wir eine Zählermetrik verwenden. Eine Zählermetrik zählt die Anzahl der Protokolleinträge, die einem bestimmten Filter entsprechen. Für unseren Cloud Run Service interessieren wir uns für alle Protokolle des spezifischen Cloud Run Service, die das Wort 'binxio' enthalten.

resource "google_logging_metric" "binxio_logs_metric" {
  name   = "my-service/binxio"
  filter = "resource.type="cloud_run_revision" AND resource.labels.service_name="my-service" AND "binxio""
  metric_descriptor {
    metric_kind = "DELTA"
    value_type  = "INT64"
  }
}

Hinweis: Vergessen Sie nicht, jede Instanz von my-service im obigen Codeschnipsel durch den Dienstnamen Ihres Cloud Run-Dienstes zu ersetzen.

Benachrichtigungskanal

Als nächstes benötigen wir einen Benachrichtigungskanal. Wir können einen für Slack auf der Seite Alerting Notification in der Google Cloud Console erstellen, indem wir auf "Add New" klicken. Dazu müssen Sie sich bei Slack anmelden und die Google Cloud Monitoring App autorisieren, Nachrichten an Ihren Slack-Arbeitsbereich zu senden.

Sie können den folgenden Befehl verwenden, um den Namen Ihres Benachrichtigungskanals zu ermitteln. Bitte notieren Sie ihn, da wir ihn später noch benötigen.

gcloud alpha monitoring channels list --format="table(labels.channel_name,name)"

Warnungspolitik

Um alles miteinander zu verbinden, müssen wir eine Benachrichtigungsrichtlinie erstellen. Eine Benachrichtigungsrichtlinie beschreibt zwei Dinge: (1) die Umstände, unter denen Sie benachrichtigt werden möchten und (2) wie Sie benachrichtigt werden möchten.

  1. Unter diesen Umständen läuft die Konfiguration im Wesentlichen darauf hinaus, auf die von uns erstellte Metrik zu verweisen und festzulegen, wie sie interpretiert werden soll. Eine visuelle Möglichkeit, die Werte zu definieren, die Sie in Ihrer Konfiguration verwenden möchten, ist die Erstellung einer Alerting Policy in der Google Cloud Console und der anschließende Download ihrer JSON-Definition.

  2. Für die Benachrichtigung müssen wir auf den Benachrichtigungskanal verweisen, den wir gerade erstellt haben. Wir können eine Dokumentation in Markdown einfügen, die als zusätzlicher Text in die Benachrichtigung eingefügt wird und dabei hilft, den Vorfall zu beheben.

resource "google_monitoring_alert_policy" "too_many_binxio_logs_alert_policy" {
  #1. Circumstances
  display_name = "my-service-too-many-binxio"
  combiner = "OR"
  alert_strategy {
    auto_close = "1800s"
  }
  conditions {
    display_name = "Too many binxio logs in my-service"
    condition_threshold {
      filter = "resource.type="cloud_run_revision" AND metric.type="logging.googleapis.com/user/${google_logging_metric.binxio_logs_metric.name}""
      comparison = "COMPARISON_GT"
      threshold_value = 2
      duration = "0s"
      aggregations {
        alignment_period = "60s"
        per_series_aligner = "ALIGN_MAX"
      }
    }
  }

  #2. Notification
  notification_channels = [ "<notification-channel>" ]
  documentation {
    content = "Oh no! Cloud Run service 'my-service' is outputting logs that contain the word 'binxio'."
    mime_type = "text/markdown"
  }
}

Hinweis: Vergessen Sie nicht, jede Instanz von my-service im obigen Codeschnipsel durch den Dienstnamen Ihres Cloud Run-Dienstes und <notification-channel> durch den Namen Ihres Benachrichtigungskanals zu ersetzen.

Empfang der Benachrichtigung

Wenn nun in Ihren Anwendungsprotokollen Meldungen ausgegeben werden, die das Wort 'binxio' enthalten, wird der Metrikwert aktualisiert. Wenn der Wert über den angegebenen Schwellenwert ansteigt, wird in der Google Cloud Console ein Vorfall erstellt und eine Benachrichtigung an den Benachrichtigungskanal gesendet.

Benachrichtigung in Slack

Fazit

Wir haben eine auf Protokollen basierende Metrik für einen Cloud Run-Dienst erstellt, Slack als Benachrichtigungskanal hinzugefügt und dann einen Alarm eingerichtet, der ausgelöst wird, wenn ein bestimmter Schwellenwert an Fehlern erreicht wird.

Verfasst von

Simon Karman

Simon Karman is a cloud engineer and consultant that builds effective cloud solutions ranging from serverless applications, to apis, to CICD pipelines, and to infrastructure as code solutions in both AWS and GCP.

Contact

Let’s discuss how we can support your journey.