Fehler bei logbasierten Messwerten beheben

Wenn Sie Probleme mit Ihren logbasierten Messwerten in Cloud Logging diagnostizieren und beheben möchten, z. B. fehlende Daten, verzögerte Zählungen oder falsch positive Benachrichtigungen, verwenden Sie die Anleitung zur Fehlerbehebung auf dieser Seite.

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

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 in einem Google Cloud -Projekt. 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 Projekt oder Bucket von Google Cloud berechnet, in dem sie empfangen werden.

Zum Erstellen logbasierter Messwerte 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). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

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 verspätet oder gar nicht gezählt, da sie einen Zeitstempel haben, der 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 er nicht im logbasierten Messwert berücksichtigt.

    Die Anzahl der verspätet eingehenden Einträge wird im logbasierten Messwert logging.googleapis.com/logs_based_metrics_error_count aufgezeichnet.

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

  • Der logbasierte Messwert wurde nach dem Eingang von Logeinträgen erstellt, die vom Messwert gezählt werden könnten. Logbasierte Messwerte werten Logeinträge aus, die in Log-Buckets gespeichert sind. Logeinträge, die in Logging gespeichert sind, werden nicht ausgewertet.

  • Der logbasierte Messwert weist Lücken in den Daten auf. Einige Datenlücken sind zu erwarten, da die Systeme, die die logbasierten Messwertdaten verarbeiten, die Persistenz jedes Messwertdatenpunkts nicht garantieren. Lücken sind 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 falschen 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 Anzahl in einem fünfminütigen Intervall und benachrichtigt Sie, wenn die Summe kleiner als eins ist. Wenn in der Zeitreihe ein Datenpunkt fehlt, fügt die Benachrichtigungsrichtlinie einen synthetischen Wert ein, der ein Duplikat des letzten Stichprobenwerts ist und höchstwahrscheinlich null ist. Anschließend wird die Bedingung ausgewertet. Daher kann selbst ein einzelner fehlender Datenpunkt dazu führen, dass der summierte Wert null ist, was dazu führt, dass diese Benachrichtigungsrichtlinie eine Benachrichtigung sendet.

    Um das Risiko einer falschen 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). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

Einige überwachte Cloud Logging-Ressourcentypen werden nicht direkt überwachten Cloud Monitoring-Ressourcentypen zugeordnet. Wenn Sie beispielsweise zum ersten Mal eine Benachrichtigungsrichtlinie oder ein Diagramm aus einem logbasierten Messwert erstellen, wird der Ressourcentyp möglicherweise als „undefiniert“ angezeigt.

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). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

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 das Problem zu lösen:

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

  • Logbasierte Benachrichtigung erstellen Diese Benachrichtigungsrichtlinien können Daten aus dem Logeintrag extrahieren, der die Benachrichtigungsrichtlinie auslöst.

Benachrichtigungen werden nicht erstellt oder sind Fehlalarme

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

Es kann zu Fehlalarmen oder Situationen kommen, in denen Monitoring keine Benachrichtigungen 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 in einer Benachrichtigungsrichtlinie die Logik kleiner als verwendet wird.
  • Wenn eine Benachrichtigungsrichtlinie auf einer Perzentilbedingung für einen Verteilungsmesswert basiert.
  • Wenn es eine Lücke in den Messwertdaten gibt.

Falsch positive Benachrichtigungen können auftreten, weil Logeinträge verspätet an Logging gesendet werden können. Beispielsweise können die Logfelder timestamp und receiveTimestamp in einigen Fällen eine Differenz von mehreren Minuten aufweisen. Wenn Logging Logs in Log-Buckets speichert, gibt es außerdem eine inhärente Verzögerung zwischen dem Generieren der Logeinträge und dem Empfang durch Logging. Das bedeutet, dass Logging die Gesamtzahl für einen bestimmten Logeintrag möglicherweise erst zu einem späteren Zeitpunkt nach dem Generieren der Logeinträge hat. Aus diesem Grund kann eine Benachrichtigungsrichtlinie, die die Logik kleiner als verwendet oder auf einer Perzentilbedingung für einen Verteilungsmesswert basiert, eine falsch positive Benachrichtigung erzeugen: Es wurden noch nicht alle Logeinträge berücksichtigt.

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

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

Damit Benachrichtigungen auch bei pünktlichen Daten korrekt bleiben, empfehlen wir, den Ausrichtungszeitraum für die Bedingung so festzulegen, dass mehrere Logeinträge, die Ihrem Filter entsprechen, gezählt werden 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ü Rollierendes Zeitfenster fest.

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

Logbasierter Messwert hat zu viele Zeitreihen

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

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

Da Sie für jede Kombination von Labelwerten eine Zeitreihe generieren, ist es nicht schwierig, 30.000 Zeitreihen 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. Außerdem können Kosten für API-Aufrufe zum Abfragen von Zeitreihendaten anfallen. Weitere Informationen finden Sie auf der Seite Google Cloud Observability – Preise im Abschnitt zu Cloud Monitoring.

Aufgrund eines Limits von 1.000.000 aktiven Zeitreihen pro überwachter Ressource drosselt das System Ihre Messwertdaten möglicherweise auch dann, wenn weniger als 30.000 aktive Zeitreihen vorhanden sind. Bei logbasierten Messwerten auf Projektebene wird die Ressource durch die Ressource im Logeintrag definiert. Bei logbasierten Messwerten mit Bucket-Bereich ist die Ressource logging_bucket.

So vermeiden Sie das Erstellen von Messwerten mit hoher Kardinalität:

  • Prüfen Sie, ob die Labelfelder und die regulären Ausdrücke des Extraktors mit Werten übereinstimmen, die eine begrenzte Kardinalität haben.

    Speichern Sie beispielsweise keine Größen, Anzahlen 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 Zeitreihen 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 aus Labels mit bekannter Kardinalität, z. B. Statuscodes mit einer Reihe bekannter Werte.

Mit diesen systemprotokollbasierten Messwerten 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 Verteilungsmesswert erstellen, wählen Sie einen Messwertnamen aus, der unter den logbasierten Messwerten in Ihrem Google Cloud -Projekt nur einmal vorkommt.

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.

Logbasierte Messwerte sind nicht korrekt

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

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 Duplikate, wenn sie dieselbe timestamp und insertId haben. Im Log-Explorer werden doppelte Logeinträge automatisch unterdrückt. Bei logbasierten Messwerten wird jedoch jeder Logeintrag gezählt, der dem Filter für den Messwert entspricht.

  • 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 Wiederholungsprozess aufgerufen. Der Wiederholungsversuch kann zu einem doppelten Logeintrag führen. Wenn doppelte Logeinträge vorhanden sind, ist der Wert eines logbasierten Messwerts möglicherweise zu groß, da diese Messwerte jeden Logeintrag zählen, der dem Filter für den Messwert entspricht.

Labelwerte werden abgeschnitten

Dieser Eintrag gilt nur für Messwertdaten, die Google Cloud Observability aus Ihren Logdaten ableitet (logbasierte Messwerte). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

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). Sie gilt nicht für Messwertdaten, die von Google Cloud -Diensten oder Ihren Anwendungen geschrieben werden.

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

Versuchen Sie Folgendes, um dieses Problem zu beheben:

  • 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, die den logbasierten Messwert überwachen. Nachdem Sie überprü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.