Auf dieser Seite finden Sie Informationen zur Fehlerbehebung für häufige Szenarien bei der Verwendung logbasierter Messwerte in Cloud Logging.
Messwerte können nicht aufgerufen oder erstellt werden
Logbasierte Messwerte gelten nur für ein einzelnes Google Cloud-Projekt oder für ein Logging-Bucket in einem Google Cloud-Projekt Sie können nicht Logbasierte Messwerte für andere Google Cloud-Dienste erstellen Ressourcen wie Rechnungskonten oder Organisationen. Logbasierte Messwerte werden nur für Logs im Google Cloud-Projekt oder Bucket berechnet, in dem sie empfangen wurden.
Zum Erstellen von 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
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 der Empfang eines Logeintrags mehr als 24 Stunden in der Vergangenheit oder 10 Minuten in der Zukunft liegt, wird der Logeintrag nicht im logbasierten Messwert gezählt.
Die Anzahl der spät eingehenden Einträge wird für jedes Log im logbasierten Systemmesswert
logging.googleapis.com/logs_based_metrics_error_count
erfasst.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 einenreceivedTimestamp
von 14:45 Uhr am 21. Februar 2020. Dieser Eintrag wird nicht in den logbasierten Messwert einbezogen.Der logbasierte Messwert wurde nach dem Eintreffen der Logeinträge erstellt, die für den Messwert gezählt werden könnten. Mit logbasierten Messwerten werden Logeinträge in Echtzeit ausgewertet die in Log-Buckets gespeichert sind; diese Messwerte 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 protokollbasierten Messdaten verarbeiten, nicht für die Persistenz jedes Messdatenpunkts garantieren. Wenn Lücken auftreten, sind sie in der Regel selten und von kurzer Dauer. Sie können jedoch Wenn Sie eine Benachrichtigungsrichtlinie haben, die einen logbasierten Messwert überwacht, in den Daten zu falschen Benachrichtigungen führen. Die Einstellungen, die Sie in Ihrem lässt sich diese Möglichkeit reduzieren.
Beispiel: Ein „Herzschlag“ wird alle fünf Minuten ein Logeintrag logbasierten Messwert die Anzahl der Herzschläge Logeinträge. Eine Benachrichtigung fasst die Anzahl in Fünf-Minuten-Intervallen zusammen und benachrichtigt Sie, ist die Summe kleiner als eins. Wenn in der Zeitreihe ein Datenpunkt fehlt, fügt die Benachrichtigungsrichtlinie einen synthetischen Wert ein, bei dem es sich um ein Duplikat des Dies ist die jüngste Stichprobe und ist höchstwahrscheinlich null. Anschließend wird die Bedingung. Daher kann schon ein einzelner fehlender Datenpunkt dazu führen, dass der Summenwert null ist, was wiederum dazu führt, dass diese Benachrichtigungsrichtlinie eine Benachrichtigung sendet.
Um das Risiko falscher Benachrichtigungen zu verringern, konfigurieren Sie die Richtlinie so, dass sie gezählt wird mehrere „Herzschlag“ Logeinträge, nicht nur einer.
Der Ressourcentyp ist in Cloud Monitoring "nicht definiert"
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 ü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.
Vorfälle werden nicht erstellt oder sind falsch-positiv
Sie könnten falsch-positive Vorfälle oder Situationen erhalten, Monitoring erstellt keine Vorfälle aus logbasierte Messwerte, da der Ausrichtungszeitraum für die Benachrichtigungsrichtlinie ist zu kurz. In den folgenden Fällen kann es zu Falschmeldungen kommen:
- Wenn eine Benachrichtigungsrichtlinie die Logik weniger als verwendet.
- Wenn eine Benachrichtigungsrichtlinie auf einer Perzentilbedingung für eine Verteilung basiert wird.
- Wenn es eine Lücke in den Messdaten gibt.
Falsch-positive Vorfälle können auftreten, weil Logeinträge ggf. zu spät an Logging gesendet wurden. Beispielsweise können die Logfelder timestamp
und receiveTimestamp
in einigen Fällen ein Delta von Minuten aufweisen.
Wenn Logging Logs in Log-Buckets speichert,
gibt es eine inhärente Verzögerung
zwischen dem Generieren der Logeinträge und dem Logging-Vorgang
und erhält sie. 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. Deshalb wird eine Benachrichtigungsrichtlinie
mit Kleiner-als-Logik
oder basierend auf einer Perzentilbedingung
für einen Verteilungsmesswert,
Falsch-positive Warnung: Es wurden nicht alle Logeinträge berücksichtigt.
.
Allerdings unterliegen logbasierte Messwerte immer Eventual Consistency. Logbasierte Messwerte unterliegen 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 Log-receiveTimestamp
.
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 pünktlichen Daten korrekt sind, empfehlen wir, den Ausrichtungszeitraum für die Bedingung auf mindestens 10 Minuten festzulegen. Insbesondere sollte dieser Wert
dass mehrere Logeinträge, die dem Filter entsprechen,
werden gezählt. Wenn für einen logbasierten Messwert beispielsweise Heartbeat-Protokolleinträge gezählt werden, die alle N
Minuten erwartet werden, legen Sie den Alignierungszeitraum auf 2N
Minuten oder 10 Minuten fest, je nachdem, was länger ist:
Wenn Sie die Google Cloud Console verwenden, nutzen Sie das Rolling Window. um den Ausrichtungszeitraum festzulegen.
Wenn Sie die API verwenden, legen Sie den Alignierungszeitraum mit dem Feld
aggregations.alignmentPeriod
der Bedingung fest.
Messwert enthält zu viele Zeitachsen
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 und darf 30.000 nicht überschreiten.
Da Sie eine Zeitreihe für jede Kombination von Labelwerten generieren können, wenn Sie ein oder mehrere Labels mit hohen Werten haben, ist es nicht schwierig, um 30.000 Zeitreihen zu überschreiten. 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. Einzelheiten hierzu finden Sie in der Preisübersicht zu Cloud Monitoring.
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.
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. Status 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:
logging.googleapis.com/metric_throttled
logging.googleapis.com/time_series_count
logging.googleapis.com/metric_label_throttled
logging.googleapis.com/metric_label_cardinality
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 Messwert aus der unter den logbasierten Messwerten in Ihrem Google Cloud-Projekt eindeutig 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.
Messwerte sind falsch
Sie stellen fest, dass die Werte für einen logbasierten Messwert manchmal die sich von der Anzahl der vom Log-Explorer gemeldeten Logeinträge unterscheiden.
So minimieren Sie die Abweichung:
Achten Sie darauf, dass Anwendungen keine doppelten Logeinträge senden. Logeinträge gelten als Duplikate, wenn sie dieselbe
timestamp
undinsertId
haben. Der Log-Explorer unterdrückt automatisch doppelte Logeinträge. Sie können jedoch Logbasierte Messwerte zählen jeden Logeintrag, 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. Logeinträge, deren Zeitstempel nicht in diesen Grenzen liegen, werden nicht in logbasierten Messwerten gezählt.
Sie können die Möglichkeit von doppelten Logs nicht ausschließen. Wenn ein interner Fehler während der Verarbeitung eines Log-Eintrags auftritt, wird ein Wiederholungsprozess durch Cloud Logging: Der Wiederholungsprozess kann zu einem doppelten Logeintrag führen. Sind doppelte Logeinträge vorhanden, kann der Wert eines logbasierten Messwerts zu groß, da mit diesen Messwerten jeder Logeintrag gezählt wird, der dem Filter entspricht für den Messwert aus.
Labelwerte werden abgeschnitten
Werte für benutzerdefinierte Labels dürfen 1.024 Byte nicht überschreiten.
Benutzerdefinierter Protokollmesswert kann nicht gelöscht werden
Sie versuchen, einen benutzerdefinierten logbasierten Messwert über die Google Cloud Console zu löschen.
Die Löschanfrage schlägt fehl und das Dialogfeld wird angezeigt.
die Fehlermeldung There is an unknown error while executing this operation
.
Versuchen Sie Folgendes, um das Problem zu beheben:
Aktualisieren Sie in der Google Cloud Console die Seite Logbasierte Messwerte. Der Fehler wird möglicherweise aufgrund eines internen Zeitproblems angezeigt.
Identifizieren und löschen Sie alle Benachrichtigungsrichtlinien, die den logbasierten Messwert überwachen. Wenn Sie sich vergewissert haben, dass der logbasierte Messwert nicht von einer Benachrichtigungsrichtlinie überwacht wird, löschen Sie ihn. Logbasierte Messwerte, die von einer Benachrichtigungsrichtlinie überwacht werden, können nicht gelöscht werden.