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

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-serviceim 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
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.
-
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.
-
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-serviceim 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.

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.
Unsere Ideen
Weitere Blogs
Contact



