Fehler bei logbasierten Messwerten beheben

Auf dieser Seite finden Sie eine Anleitung zur Fehlerbehebung bei Problemen mit logbasierten Messwerten in Cloud Logging, z. B. fehlende Daten, verzögerte Zählungen oder falsch-positive Vorfälle.

Der Inhalt dieser Seite gilt nur für Messwertdaten, die aus Ihren Logs abgeleitet wurden. Er gilt nicht für Messwertdaten, die direkt von Google Cloud Diensten oder Ihren Anwendungen geschrieben wurden.

Messwerte können nicht angezeigt oder erstellt werden

Logbasierte Messwerte gelten nur für ein einzelnes Google Cloud Projekt oder für einen Logging-Bucket innerhalb eines Google Cloud Projekts. Sie können keine logbasierten Messwerte für andere Google Cloud Ressourcen wie Rechnungskonten oder Organisationen erstellen. Logbasierte Messwerte werden nur für Logs im Google Cloud Projekt oder Bucket berechnet, in dem sie empfangen wurden.

Zum Erstellen von logbasierten Messwerten benötigen Sie die entsprechenden IAM-Berechtigungen (Identity and Access Management). Weitere Informationen finden Sie unter Zugriffssteuerung mit IAM: Logbasierte Messwerte.

Im Messwert fehlen Logdaten

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Das Fehlen von Daten in logbasierten Messwerten kann mehrere Gründe haben:

  • Neue Logeinträge stimmen möglicherweise nicht mit dem Filter Ihres Messwerts überein. Logbasierte Messwerte rufen Daten aus übereinstimmenden Log-Einträgen ab, die nach der Erstellung des Messwerts empfangen wurden. In Logging werden keine Backfills mit Messwerten aus früheren Logeinträgen durchgeführt.

  • Neue Logeinträge enthalten möglicherweise nicht das richtige Feld oder die Daten haben vielleicht nicht das richtige Format für die Extraktion durch Ihren Verteilungsmesswert. Prüfen Sie, ob Ihre Feldnamen und regulären Ausdrücke korrekt sind.

  • Die Messwertzählungen sind möglicherweise verzögert. Auch wenn zählbare Logeinträge im Log-Explorer angezeigt werden, kann es bis zu 10 Minuten dauern, bis die logbasierten Messwerte in Cloud Monitoring aktualisiert werden.

  • Die angezeigten Logeinträge werden möglicherweise spät oder gar nicht gezählt, weil ihr Zeitstempel zu weit in der Vergangenheit oder Zukunft liegt. Wenn ein Logeintrag von Cloud Logging mehr als 24 Stunden in der Vergangenheit oder 10 Minuten in der Zukunft empfangen wird, wird der Logeintrag nicht im logbasierten Messwert gezählt.

    Die Anzahl der spät ankommenden Einträge wird erfasst im logbasierten Messwert logging.googleapis.com/logs_based_metrics_error_count.

    Beispiel: Ein Logeintrag, der mit einem logbasierten Messwert übereinstimmt, trifft spät ein. Er hat einen timestamp von 14:30 Uhr am 20. Februar 2020 und einen receivedTimestamp von 14:45 Uhr am 21. Februar 2020. Dieser Eintrag wird nicht in den logbasierten Messwert einbezogen.

  • Der logbasierte Messwert wurde nach dem Eintreffen von Logeinträgen erstellt, die möglicherweise gezählt werden. Logbasierte Messwerte werten Logeinträge aus, wenn sie in Log-Buckets gespeichert werden. Diese Messwerte werten keine Logeinträge aus, die in Logging gespeichert sind.

  • Der logbasierte Messwert weist Lücken in den Daten auf. Einige Datenlücken sind zu erwarten, da die Systeme, die die Daten logbasierter Messwerte verarbeiten, die Persistenz jedes Messwertdatenpunkts nicht garantieren. Wenn Lücken auftreten, sind sie in der Regel selten und von kurzer Dauer. Wenn Sie jedoch eine Benachrichtigungsrichtlinie haben, die einen logbasierten Messwert überwacht, können Lücken in den Daten zu einer falsch-positiven Benachrichtigung führen. Die Einstellungen, die Sie in Ihrer Benachrichtigungsrichtlinie verwenden, können diese Möglichkeit verringern.

    Beispiel: Alle fünf Minuten wird ein „Heartbeat“-Logeintrag geschrieben und ein logbasierter Messwert zählt die Anzahl der „Heartbeat“-Logeinträge. Eine Benachrichtigungsrichtlinie summiert die Zählungen in einem Fünf-Minuten-Intervall und benachrichtigt Sie, wenn die Summe kleiner als eins ist. Wenn in der Zeitachse ein Datenpunkt fehlt, fügt die Benachrichtigungsrichtlinie einen synthetischen Wert ein, der eine Kopie der letzten Stichprobe ist und höchstwahrscheinlich null ist, und wertet dann die Bedingung aus. Daher kann selbst ein einzelner fehlender Datenpunkt dazu führen, dass der summierte Wert null ist, wodurch diese Benachrichtigungsrichtlinie eine Benachrichtigung sendet.

    Um das Risiko einer falsch-positiven Benachrichtigung zu verringern, konfigurieren Sie die Richtlinie so, dass mehrere „Heartbeat“-Logeinträge gezählt werden, nicht nur einer.

Der Ressourcentyp ist in Cloud Monitoring "nicht definiert"

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Einige überwachte Cloud Logging-Ressourcentypen werden nicht direkt überwachten Cloud Monitoring-Ressourcentypen zugeordnet. Wenn Sie beispielsweise zuerst eine Benachrichtigungsrichtlinie oder ein Diagramm aus einem logbasierten Messwert erstellen, sehen Sie möglicherweise, dass der Ressourcentyp "nicht definiert" ist.

Der Ressourcentyp ist nicht definiert.

Der überwachte Ressourcentyp ist entweder global oder einem anderen überwachten Ressourcentyp in Cloud Monitoring zugeordnet. In den Zuordnungen für reine Logging-Ressourcen erfahren Sie, welchen überwachten Ressourcentyp Sie auswählen müssen.

Labels in einer Benachrichtigung werden nicht aufgelöst

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Sie erstellen einen logbasierten Messwert und dann eine Benachrichtigungsrichtlinie, um diesen logbasierten Messwert zu überwachen. Im Dokumentationsfeld Ihrer Benachrichtigungsrichtlinie verweisen Sie auf die extrahierten Labels mit einer Variablen im Format ${log.extracted_label.KEY}, wobei KEY der Name ist, den Sie dem extrahierten Label gegeben haben. Das Label wird in der Benachrichtigung nicht aufgelöst.

Führen Sie einen der folgenden Schritte aus, um dieses Problem zu beheben:

  • Entfernen Sie den Inhalt des extrahierten Labels aus der Dokumentation. Benachrichtigungsrichtlinien, mit denen logbasierte Messwerte überwacht werden, können keine Daten aus Logeinträgen extrahieren.

  • Erstellen Sie eine logbasierte Benachrichtigung. Diese Benachrichtigungsrichtlinien können Daten aus dem Logeintrag extrahieren, der die Benachrichtigungsrichtlinie auslöst.

Vorfälle werden nicht erstellt oder sind falsch-positiv

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Es kann zu falsch-positiven Vorfällen kommen oder zu Situationen, in denen Monitoring keine Vorfälle aus logbasierten Messwerten erstellt, weil der Ausrichtungszeitraum für die Benachrichtigungsrichtlinie zu kurz ist. In den folgenden Szenarien können falsch-positive Ergebnisse auftreten:

  • Wenn eine Benachrichtigungsrichtlinie die Logik kleiner als verwendet.
  • Wenn eine Benachrichtigungsrichtlinie auf einer Perzentilbedingung für einen Verteilungsmesswert basiert.
  • Wenn eine Lücke in den Messwertdaten vorhanden ist.

Falsch-positive Vorfälle können auftreten, weil Logeinträge ggf. zu spät an Logging gesendet wurden. In einigen Fällen kann beispielsweise die Differenz zwischen den Logfeldern timestamp und receiveTimestamp mehrere Minuten betragen. Wenn Logging Logs in Log-Buckets speichert, gibt es außerdem eine inhärente Verzögerung zwischen dem Zeitpunkt, an dem die Logeinträge erzeugt werden, und dem Zeitpunkt, an dem Logging sie erhält. Das bedeutet, dass Logging bis zu einem späteren Zeitpunkt nach der Generierung der Logeinträge möglicherweise nicht die Gesamtzahl für einen bestimmten Logeintrag aufweist. Aus diesem Grund kann eine Benachrichtigungsrichtlinie mit kleiner als Logik oder basierend auf einer Perzentilbedingung für Verteilungsmesswerte zu einer falsch-positiven Benachrichtigung führen: Nicht alle Logeinträge wurden bereits berücksichtigt.

Allerdings unterliegen logbasierte Messwerte Eventual Consistency, da ein Logeintrag, der mit einem logbasierten Messwert übereinstimmt, an Logging mit einem timestamp gesendet werden kann, der deutlich älter oder neuer ist als der receiveTimestamp des Logs.

Der logbasierte Messwert bedeutet, dass Logeinträge mit älteren Zeitstempeln empfangen werden können, nachdem vorhandene Logeinträge mit demselben Zeitstempel bereits von Logging empfangen wurden. Daher muss der Messwert aktualisiert werden.

Damit Benachrichtigungen auch bei zeitnahen Daten korrekt bleiben, empfehlen wir, den Ausrichtungszeitraum für die Bedingung so groß zu wählen, dass mehrere Logeinträge gezählt werden können, die mit Ihrem Filter übereinstimmen, und die Aufnahmeverzögerung berücksichtigt wird, die bis zu 10 Minuten betragen kann.

Wenn ein logbasierter Messwert beispielsweise „Heartbeat“-Logeinträge zählt, die alle 7 Minuten erwartet werden, legen Sie den Ausrichtungszeitraum auf mindestens 24 Minuten fest. Dieser Wert berücksichtigt die Aufnahmeverzögerung und zwei Stichproben.

  • Wenn Sie die Google Cloud Console verwenden, legen Sie den Ausrichtungszeitraum im Menü Rolling window fest.

  • Wenn Sie die API verwenden, legen Sie den Ausrichtungszeitraum mit dem Feld aggregations.alignmentPeriod der Bedingung fest.

Logbasierter Messwert enthält zu viele Zeitachsen

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Die Anzahl der Zeitachsen in einem Messwert hängt von der Anzahl der unterschiedlichen Kombinationen von Labelwerten ab. Die Anzahl der Zeitachsen wird als Kardinalität des Messwerts bezeichnet. Die maximale Anzahl von Zeitachsen für einen Messwert beträgt 30.000.

Da Sie eine Zeitachse für jede Kombination von Labelwerten generieren, ist es nicht schwer, 30.000 Zeitachsen zu überschreiten,wenn Sie ein oder mehrere Labels mit einer hohen Anzahl von Werten haben. Sie sollten Messwerte mit hoher Kardinalität vermeiden.

Wenn die Kardinalität eines Messwerts zunimmt, kann der Messwert gedrosselt werden und einige Datenpunkte werden möglicherweise nicht in den Messwert geschrieben. Diagramme, die den Messwert anzeigen, können aufgrund der hohen Anzahl von Zeitachsen, die das Diagramm verarbeiten muss, langsam geladen werden. Möglicherweise fallen auch Kosten für API-Aufrufe zur Abfrage von Zeitachsendaten an. Weitere Informationen finden Sie in den Abschnitten zu Cloud Monitoring auf der Preisseite von Google Cloud Observability.

Aufgrund einer Beschränkung von 1.000.000 aktiven Zeitachsen pro überwachter Ressource kann das System Ihre Messwertdaten drosseln, auch wenn sie weniger als 30.000 aktive Zeitachsen haben. Bei logbasierten Messwerten auf Projektebene wird die Ressource durch die Ressource im Logeintrag definiert. Bei logbasierten Messwerten auf Bucket-Ebene, ist die Ressource logging_bucket.

So vermeiden Sie es, Messwerte mit hoher Kardinalität zu erstellen:

  • Überprüfen Sie, ob die Labelfelder und regulären Extrahiererausdrücke mit Werten übereinstimmen, die eine beschränkte Kardinalität haben.

    Speichern Sie beispielsweise keine Größen, Zählungen oder Dauern in Labels. Speichern Sie auch keine Felder wie URLs, IP-Adressen oder eindeutige IDs, da diese alle zu einer großen Anzahl von Zeitachsen führen können.

  • Vermeiden Sie das Extrahieren von Textnachrichten, die sich unbegrenzt wie Labelwerte ändern können.

  • Vermeiden Sie das Extrahieren numerischer Werte mit unbegrenzter Kardinalität.

  • Extrahieren Sie nur Werte von Labeln mit bekannter Kardinalität, z. B. Statuscodes mit einer Reihe bekannter Werte.

Mit diesen logbasierten Systemmesswerten können Sie die Auswirkungen des Hinzufügens oder Entfernens von Labels auf die Kardinalität Ihres Messwerts messen:

Wenn Sie diese Messwerte prüfen, können Sie die Ergebnisse weiter nach Messwertnamen filtern. Weitere Informationen finden Sie unter Messwerte auswählen: Filtern.

Messwertname ist ungültig

Wenn Sie einen Zähler oder einen Verteilungsmesswert erstellen, wählen Sie einen Messwert namen aus, der unter den logbasierten Messwerten in Ihrem Google Cloud Projekt einmalig ist.

Zeichenketten mit Messwertnamen dürfen nicht länger als 100 Zeichen sein und nur die folgenden Zeichen enthalten:

  • A-Z
  • a-z
  • 0-9
  • Die Sonderzeichen _-.,+!*',()%\/.

    Durch den Schrägstrich / wird eine Hierarchie der Namensteile innerhalb des Messwertnamens angegeben. Er darf nicht das erste Zeichen des Namens sein.

Werte logbasierter Messwerte sind nicht korrekt

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Sie stellen fest, dass die für einen logbasierten Messwert gemeldeten Werte manchmal von der Anzahl der Logeinträge abweichen, die vom Log-Explorer gemeldet werden.

So minimieren Sie die Abweichung:

  • Achten Sie darauf, dass Anwendungen keine doppelten Logeinträge senden. Logeinträge gelten als doppelt , wenn sie denselben timestamp und dieselbe insertId haben. Der Log-Explorer unterdrückt doppelte Logeinträge automatisch. Logbasierte Messwerte zählen jedoch jeden Logeintrag, der mit dem Filter für den Messwert übereinstimmt.

  • Achten Sie darauf, dass ein Logeintrag an Cloud Logging gesendet wird, wenn der Zeitstempel weniger als 24 Stunden in der Vergangenheit oder weniger als 10 Minuten in der Zukunft liegt. Logeinträge, deren Zeitstempel nicht innerhalb dieser Grenzen liegen, werden von logbasierten Messwerten nicht gezählt.

Sie können die Möglichkeit doppelter Logs nicht ausschließen. Wenn bei der Verarbeitung eines Logeintrags ein interner Fehler auftritt, wird von Cloud Logging ein Wiederholungsversuch gestartet. Dieser Wiederholungsversuch kann zu einem doppelten Logeintrag führen. Wenn doppelte Logeinträge vorhanden sind, kann der Wert eines logbasierten Messwerts zu groß sein, da diese Messwerte jeden Logeintrag zählen, der mit dem Filter für den Messwert übereinstimmt.

Labelwerte werden abgeschnitten

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Werte für benutzerdefinierte Labels dürfen 1.024 Byte nicht überschreiten.

Benutzerdefinierter logbasierter Messwert kann nicht gelöscht werden

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Er gilt nicht für Messwertdaten, die von Google Cloud Diensten oder Ihren Anwendungengeschrieben wurden.

Sie versuchen, einen benutzerdefinierten logbasierten Messwert über die Google Cloud Console zu löschen. Die Löschanfrage schlägt fehl und im Löschdialog wird die Fehlermeldung There is an unknown error while executing this operation angezeigt.

So beheben Sie das Problem:

  • Aktualisieren Sie in der Google Cloud console die Seite Logbasierte Messwerte. Die Fehlermeldung wird möglicherweise aufgrund eines internen Timing-Problems angezeigt.

  • Suchen und löschen Sie alle Benachrichtigungsrichtlinien, mit denen der logbasierte Messwert überwacht wird. Nachdem Sie geprüft haben, dass der logbasierte Messwert nicht von einer Benachrichtigungsrichtlinie überwacht wird, löschen Sie den logbasierten Messwert. Logbasierte Messwerte, die von einer Benachrichtigungsrichtlinie überwacht werden, können nicht gelöscht werden.