View a markdown version of this page

Grundlegendes zu Konzepten für geplante Abfragen - CloudWatch Amazon-Protokolle

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Grundlegendes zu Konzepten für geplante Abfragen

Bevor Sie geplante Abfragen erstellen, sollten Sie sich mit diesen Schlüsselkonzepten vertraut machen, die sich darauf auswirken, wie Ihre Abfragen ausgeführt werden und wo Ergebnisse geliefert werden.

IAM-Rollentrennung

Für geplante Abfragen sind zwei separate IAM-Rollen erforderlich: eine für die Ausführung von Abfragen und eine weitere für die Bereitstellung von Ergebnissen an Ziele wie Amazon S3-Buckets, EventBridge Amazon-Event-Busse oder Lookup-Tabellen. Wenn Sie wissen, warum diese Trennung besteht, können Sie Berechtigungen richtig konfigurieren und die damit verbundenen Sicherheits- und Betriebsvorteile nutzen.

Die Architektur mit zwei Rollen verteilt die Verantwortlichkeiten zwischen Datenzugriff und Datenbereitstellung. Die Rolle zur Abfrageausführung greift auf Ihre Protokolldaten zu und führt Abfragen aus, während die Zielzustellungsrolle die Ergebnisse an das von Ihnen gewählte Ziel schreibt. Diese Trennung folgt dem Prinzip der geringsten Rechte — jede Rolle hat nur die Berechtigungen, die sie für ihre spezifische Funktion benötigt.

Rolle zur Ausführung von Abfragen

Ermöglicht CloudWatch Logs, CloudWatch Logs Insights-Abfragen in Ihrem Namen auszuführen. Diese Rolle benötigt Berechtigungen, um auf Ihre Protokollgruppen zuzugreifen und Abfragen auszuführen, benötigt jedoch keinen Zugriff auf Zielressourcen. Erforderliche Berechtigungen:

  • logs:StartQuery

  • logs:StopQuery

  • logs:GetQueryResults

  • logs:DescribeLogGroups

  • logs:Unmaskwenn das Entlarven von Daten erforderlich ist

Für KMS-encrypted Protokollgruppen: kms:Decrypt und kms:DescribeKey Berechtigungen für den KMS-Schlüssel, der zum Verschlüsseln der Protokollgruppen verwendet wird. Diese Berechtigungen müssen ebenfalls hinzugefügt werden.

Anforderung einer Vertrauensbeziehung: Die Rolle zur Abfrageausführung muss eine Vertrauensrichtlinie enthalten, die es dem CloudWatch Protokolldienst (logs.amazonaws.com) ermöglicht, die Rolle zu übernehmen. Ohne diese Vertrauensstellung schlagen geplante Abfragen mit Berechtigungsfehlern fehl.

Beispiel für eine Vertrauensrichtlinie für die Rolle „Abfrageausführung“:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Beispiel für eine Berechtigungsrichtlinie für die Rolle zur Abfrageausführung:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
Rolle „Zielzustellung“

Ermöglicht CloudWatch Logs, Abfrageergebnisse an das von Ihnen gewählte Ziel zu senden. Für diese Rolle sind nur Berechtigungen für den jeweiligen Zieldienst erforderlich. Dabei gilt das Prinzip der geringsten Zugriffsrechte. Die erforderlichen Berechtigungen variieren je nach Zieltyp.

Anforderung einer Vertrauensbeziehung: Die Zielzustellungsrolle muss auch eine Vertrauensrichtlinie enthalten, die es dem CloudWatch Logs-Dienst (logs.amazonaws.com) ermöglicht, diese Rolle zu übernehmen.

Beispiel für eine Berechtigungsrichtlinie für die S3-Zielzustellungsrolle:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::your-scheduled-query-results-bucket/*" } ] }

Beispiel für eine Berechtigungsrichtlinie für eine Zielzustellungsrolle in einer Lookup-Tabelle:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLookupTable", "logs:UpdateLookupTable", "logs:GetQueryResults" ], "Resource": "*" } ] }

Diese Trennung bietet praktische Vorteile für Ihren Betrieb. Aus Sicherheitsgründen gilt: Wenn Sie ändern müssen, wo Ergebnisse geliefert werden, ändern Sie nur die Zielübermittlungsrolle, ohne die Berechtigungen zur Abfrageausführung zu ändern. Aus Konformitäts- und Auditgründen können Sie eindeutig nachverfolgen, welche Rolle auf vertrauliche Protokolldaten zugreift und welche Rolle in externe Systeme schreibt. Auf diese Weise können Sie leichter nachweisen, dass Ihre Infrastruktur für die Protokollanalyse den bewährten Sicherheitsmethoden folgt.

Cross-region und kontoübergreifende Nutzung

Eine geplante Abfrage wird in einer bestimmten Region erstellt und in dieser Region ausgeführt. Sie können jedoch Protokollgruppen abfragen und Ergebnisse für Regionen und Konten bereitstellen. Sie müssen ein oder mehrere AWS Konten als Überwachungskonten einrichten und sie mit mehreren Quellkonten verknüpfen. Ein Überwachungskonto ist ein zentrales AWS Konto, das aus Quellkonten generierte Observability-Daten einsehen und mit ihnen interagieren kann. Ein Quellkonto ist ein individuelles AWS Konto, das Observabilitätsdaten für die darin enthaltenen Ressourcen generiert. Quellkonten teilen ihre Beobachtbarkeits-Daten mit dem Überwachungskonto. Sie können also geplante Abfragen vom Überwachungskonto aus einrichten, indem Sie die Protokollgruppen aller verknüpften Konten verwenden.

Abfragen regionsübergreifender Protokollgruppen

Ihre geplante Abfrage kann auf Protokollgruppen in jeder Region zugreifen. Geben Sie Protokollgruppen mit ihrem vollständigen ARN-Format an:arn:aws:logs:region:account-id:log-group:log-group-name. Die Rolle zur Abfrageausführung benötigt logs:StartQuery und logs:GetQueryResults erteilt Berechtigungen für Protokollgruppen in allen Zielregionen.

Wichtig

Bei der Abfrage von Protokollgruppen oder der Bereitstellung von Ergebnissen über Regionen hinweg überschreiten Protokolldaten regionale Grenzen. Berücksichtigen Sie dabei Folgendes:

  • Anforderungen an den Speicherort der Daten — Stellen Sie sicher, dass die regionsübergreifende Datenübertragung den Datenverwaltungsrichtlinien und regulatorischen Anforderungen Ihres Unternehmens entspricht

  • Kosten für die Datenübertragung — Für die Cross-region Datenübertragung fallen zusätzliche Gebühren an

  • Netzwerklatenz — Bei Abfragen, die auf Protokollgruppen in entfernten Regionen zugreifen, kann es zu einer höheren Latenz kommen

Für optimale Leistung und Kosteneffizienz sollten Sie geplante Abfragen in derselben Region wie Ihre primären Protokollgruppen erstellen.

Alternativer Ansatz: Verwenden Sie die Zentralisierung von CloudWatch Protokollen, um Protokolldaten aus mehreren Konten und Regionen in ein zentrales Überwachungskonto zu replizieren. Auf diese Weise können Sie geplante Abfragen in einer einzigen Region erstellen, die auf alle Ihre zentralen Protokolle zugreifen. Dadurch werden regionsübergreifende Abfragen vermieden und die Verwaltung der IAM-Berechtigungen vereinfacht.

Zeitplanausdrücke und Umgang mit Zeitzonen

Der von Ihnen definierte Zeitplan bestimmt, wann Ihre Abfrage ausgeführt wird und wie oft sie ausgeführt wird. Die Auswahl des richtigen Zeitplanausdrucks wirkt sich darauf aus, wann Sie Ergebnisse erhalten und wie viele Daten Sie abfragen. Wenn Sie die Ausdruckstypen verstehen, können Sie zwischen Einfachheit und Präzision wählen.

Cron-Ausdrücke ermöglichen eine präzise Steuerung des Zeitpunkts, sodass Sie genaue Uhrzeiten, Wochentage oder Monatstage angeben können. Verwenden Sie Cron-Ausdrücke, wenn Abfragen zu bestimmten Geschäftszeiten ausgeführt oder an Betriebszeiten angepasst werden müssen. In der Konsole können Sie Abfragen auch mithilfe einfacher Kalenderoptionen planen.

Cron-Ausdrücke

Führen Sie Abfragen zu bestimmten Zeiten aus. Format:cron(minute hour day-of-month month day-of-week year). Beispiele:

  • cron(0 9 * * ? *)- Jeden Tag um 9:00 Uhr MEZ

  • cron(0 18 ? * MON-FRI *)- Wochentags um 18:00 Uhr UTC

  • cron(0 0 1 * ? *)- Erster Tag jedes Monats um Mitternacht UTC

  • cron(0 12 ? * SUN *)- Jeden Sonntag um 12 Uhr MEZ

  • cron(30 8 1 1 ? *)- 1. Januar um 8:30 Uhr UTC

Alle geplanten Abfragen werden in UTC ausgeführt, unabhängig von Ihrer lokalen Zeitzone oder dem Standort Ihrer AWS Ressourcen. Dies ist besonders wichtig, wenn Sie Abfragen für Geschäftszeiten oder für zeitkritische Analysen planen. Wenn Ihr Unternehmen beispielsweise in US Eastern Time tätig ist und Sie einen täglichen Bericht um 9 Uhr ET wünschen, müssen Sie den UTC-Offset berücksichtigen (14:00 UTC während der Sommerzeit, andernfalls 13:00 UTC). Planen Sie Ihre Zeitplanausdrücke unter Berücksichtigung der UTC, um sicherzustellen, dass Abfragen zu den vorgesehenen Zeiten ausgeführt werden.

Auswahl einer Abfragesprache

Geplante Abfragen unterstützen drei verschiedene Abfragesprachen. Ihre Wahl wirkt sich sowohl darauf aus, wie Sie Abfragen schreiben, als auch darauf, wie einfach Ihr Team sie verwalten kann. Die richtige Sprache hängt von Ihren Analyseanforderungen und den vorhandenen Fähigkeiten Ihres Teams ab.

Wenn Sie hauptsächlich Protokolldaten filtern und aggregieren, bietet CloudWatch Logs Insights Query Language die einfachste Syntax. Bei komplexen Datentransformationen, bei denen Sie Daten in mehreren Schritten umformen oder anreichern müssen, erleichtert der Pipeline-Ansatz von PPL die Nachvollziehbarkeit der Logik. Wenn Sie Verknüpfungen oder komplexe Aggregationen ähnlich wie bei Datenbankoperationen durchführen müssen, bietet SQL eine vertraute Syntax, die datenbankerfahrene Teams schnell übernehmen können.

CloudWatch Logs Insights Query Language (CWLI)

Purpose-built für die Protokollanalyse mit intuitiver Syntax. Am besten geeignet für:

  • Text-based Protokollanalyse und Filterung

  • Time-series Aggregationen und Statistiken

  • Teams, für die Log-Analysen noch keine Erfahrung haben

OpenSearch Service Piped Processing Language (PPL)

Pipeline-based Abfragesprache mit leistungsstarken Funktionen zur Datentransformation. Am besten geeignet für:

  • Komplexe Datentransformationen und Anreicherung

  • Multi-step Arbeitsabläufe für die Datenverarbeitung

  • Teams, die mit der Verarbeitung auf Pipeline-Basis vertraut sind

OpenSearch Strukturierte Abfragesprache für Dienste (SQL)

Standard-SQL-Syntax für vertraute Abfragen im Datenbankstil. Am besten geeignet für:

  • Komplexe Verknüpfungen und Aggregationen

  • Geschäftsinformationen und Berichterstattung

  • Teams mit ausgeprägter SQL-Erfahrung

Zielauswahl und Anwendungsfälle

Wohin Sie die Abfrageergebnisse senden, bestimmt, was Sie mit ihnen machen können. Diese Wahl beeinflusst Ihren gesamten Downstream-Workflow — unabhängig davon, ob Sie Langzeitanalysen erstellen, automatische Antworten auslösen oder beides. Wenn Sie die Stärken der einzelnen Zieltypen kennen, können Sie die richtige Architektur für Ihren Anwendungsfall entwerfen.

Amazon S3-Ziele sind für die Speicherung und Stapelverarbeitung optimiert. Wenn Sie Abfrageergebnisse über Monate oder Jahre aufbewahren, Trends im Laufe der Zeit analysieren oder Daten in Analyseplattformen einspeisen müssen, bietet Amazon S3 kostengünstigen Speicher mit unbegrenzter Aufbewahrung. EventBridge Ziele sind für die Automatisierung in Echtzeit optimiert. Wenn Abfrageergebnisse sofortige Aktionen auslösen sollen — wie das Senden von Warnmeldungen, das Starten von Workflows oder das Aktualisieren von Systemen —, werden Ergebnisse in EventBridge Form von Ereignissen geliefert, auf die Ihre Anwendungen sofort reagieren können. Standardmäßig werden alle Abfrageabschlussereignisse automatisch als Ereignisse an den Standardereignisbus gesendet, was die Integration mit nachgelagerten Verarbeitungssystemen, Lambda-Funktionen oder anderen ereignisgesteuerten Architekturen ermöglicht. Ergebnisse werden nur dann an Zielen veröffentlicht, wenn die Abfrage erfolgreich ausgeführt wurde. Die Ziele der Lookup-Tabelle sind so optimiert, dass Referenzdaten immer auf dem neuesten Stand sind. Ein Ziel einer Nachschlagetabelle füllt oder aktualisiert die angegebene Nachschlagetabelle bei jeder geplanten Ausführung automatisch mit den Abfrageergebnissen, sodass andere Abfragen mit dem Befehl auf die neuesten Daten verweisen können. lookup

Amazon-S3-Ziele

Speichern Sie Abfrageergebnisse als JSON-Dateien für die langfristige Aufbewahrung und Stapelverarbeitung. Amazon S3-Ziele eignen sich am besten für die folgenden Szenarien:

  • Historische Analyse und Datenarchivierung

  • Integration mit Data Lakes und Analyseplattformen

  • Konformitäts- und Prüfanforderungen

  • Cost-effective Speicherung großer Ergebnismengen

EventBridge Ziele

Senden Sie Abfrageergebnisse als Ereignisse für die Verarbeitung und Automatisierung in Echtzeit. Verwenden Sie das queryId in dem Ereignis, um die Abfrageergebnisse abzurufen, die nach Ausführung der Abfrage 30 Tage lang verfügbar bleiben. EventBridgeZiele eignen sich am besten für die folgenden Szenarien:

  • Auslösen automatisierter Antworten auf Abfrageergebnisse

  • Integration mit serverlosen Workflows und Lambda-Funktionen

  • Real-time Warn- und Benachrichtigungssysteme

  • Event-driven Architekturen und Microservices

Ziele der Tabelle nachschlagen

Erstellen oder aktualisieren Sie automatisch eine Nachschlagetabelle mit Abfrageergebnissen bei jeder geplanten Ausführung. Bei jeder Aktualisierung wird der Tabelleninhalt vollständig ersetzt. Suchtabellenziele eignen sich am besten für die folgenden Szenarien:

  • Halten Sie die Referenzdaten für den lookup Befehl in Ihren Protokollabfragen auf dem neuesten Stand

  • Verwaltung von Zulassungslisten, Ablehnungslisten oder Entitätsinventaren, die aus Protokolldaten abgeleitet wurden

  • Anreicherung von Abfragen mit aktuellen Aktivitätszusammenfassungen, z. B. aktiven Benutzer- oder Ressourcenlisten

Format und Struktur der Abfrageergebnisse

Geplante Abfragen liefern Ergebnisse im JSON-Format, aber jeder Zieltyp erhält eine andere Nutzlast. Bei einem Lookup-Tabellenziel werden die Abfrageergebnisse zum Inhalt der Lookup-Tabelle, und jeder Durchlauf ersetzt diesen Inhalt. Weitere Informationen finden Sie unter Konfiguration der Ziele von Lookup-Tabellen für geplante Abfragen.

Amazon S3-Ziele erhalten die Ergebniszeilen der Abfrage. Jedes Objekt enthält ein JSON-Array mit einem Eintrag für jede Zeile in der Ergebnismenge, und jeder Eintrag ordnet die Ausgabefeldnamen der Abfrage ihren Werten zu. Das Objekt enthält keine Abfrage-Metadaten oder Abfragestatistiken, und das @ptr Feld wird weggelassen, auch wenn die Abfrage es anfordert, da dieses Feld nur in der Konsole verwendet werden kann.

EventBridge Ziele erhalten Abfrage-Metadaten, einschließlich der Abfragestatistiken, aber keine Ergebniszeilen. Um die Zeilen einer abgeschlossenen Abfrage abzurufen, rufen Sie GetQueryResults mit dem Wert von queryId aus dem Ereignis auf.

Das folgende Beispiel zeigt das Ereignis, das CloudWatch Logs veröffentlicht, EventBridge wenn eine geplante Abfrage abgeschlossen ist.

{ "version": "0", "id": "be72061b-eca2-e068-a7e1-83e01d6fe807", "detail-type": "Scheduled Query Completed", "source": "aws.logs", "account": "123456789012", "time": "2025-11-18T11:31:48Z", "region": "us-east-1", "resources": [ "arn:aws:logs:us-east-1:123456789012:scheduled-query:477b4380-b098-474e-9c5e-e10a8cc2e6e7" ], "detail": { "queryId": "2038fd57-ab4f-4018-bb2f-61d363f4a004", "queryString": "fields @timestamp, @message, @logStream\n| filter @message like /ERROR/\n| sort @timestamp desc\n| limit 10000", "logGroupIdentifiers": [ "/aws/lambda/my-function" ], "status": "Complete", "startTime": 1763465460, "statistics": { "recordsMatched": 1842, "recordsScanned": 48325, "estimatedRecordsSkipped": 0, "bytesScanned": 12081250, "estimatedBytesSkipped": 0, "logGroupsScanned": 1, "resultCount": 1842 } } }

Diese Abfrage aggregiert nicht und sie hat weniger Zeilen als 10.000 zurückgegeben, sodass jedes limit der 1.842 übereinstimmenden Protokollereignisse zu einer Ausgabezeile wurde recordsMatched und resultCount identisch ist. Eine Abfrage, die aggregiert, oder eine Abfrage, deren Ergebnismenge um gekürzt wird, ergibt einen Wertlimit, der kleiner als ist. resultCount recordsMatched Weitere Informationen finden Sie unter Grundlegendes zu RecordsScanned, RecordsMatched und ResultCount.

Zu den wichtigsten Elementen gehören:

  • statistics- Zähler, die beschreiben, wie viele Protokolldaten die Abfrage gelesen hat und wie groß die Ergebnismenge ist. Eine Beschreibung der einzelnen Felder finden Sie in der folgenden Tabelle.

  • startTime- Wann die Abfrageausführung gestartet wurde (Unix-Zeitstempel)

  • queryString- Die eigentliche Abfrage, die ausgeführt wurde

  • queryId- Abfrage-ID der Abfrage, mit der Ergebnisse abgerufen werden können

  • logGroupIdentifiers- Liste der Protokollgruppen, die abgefragt wurden

  • status- Ausführungsstatus abfragen (Abgeschlossen, Fehlgeschlagen usw.)

In der folgenden Tabelle werden die einzelnen Felder des statistics Objekts beschrieben. Die API-Definitionen dieser Felder finden Sie unter QueryStatistics.

Feld Description
recordsScanned Die Gesamtzahl der während der Abfrage gescannten Protokollereignisse.
recordsMatched Die Anzahl der Protokollereignisse, die der Abfragezeichenfolge entsprachen. Dieser Wert zählt Protokollereignisse, nicht Ausgabezeilen. Verwenden Sie für die Anzahl der Zeilen in der ErgebnismengeresultCount.
resultCount Die Anzahl der Zeilen in der Abfrageergebnismenge. Dieser Wert zählt nur die Zeilen, die alle Operationen in der Abfrage überlebt haben. Er kann also kleiner als seinrecordsMatched. Er deckt alle Seiten mit Ergebnissen ab, die GetQueryResults zurückgegeben werden. Weitere Informationen finden Sie unter Grundlegendes zu RecordsScanned, RecordsMatched und ResultCount.
estimatedRecordsSkipped Eine Schätzung der Anzahl der Protokollereignisse, die bei der Verarbeitung dieser Abfrage übersprungen wurden, weil die Abfrage ein indiziertes Feld enthielt. Das Überspringen dieser Einträge senkt die Abfragekosten und verbessert die Abfrageleistungszeit. Weitere Informationen finden Sie unter Erstellen Sie Feldindizes, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren.
bytesScanned Die Gesamtzahl der Byte in den Protokollereignissen, die während der Abfrage gescannt wurden.
estimatedBytesSkipped Eine Schätzung der Anzahl von Byte in den Protokollereignissen, die bei der Verarbeitung dieser Abfrage übersprungen wurden, weil die Abfrage ein indiziertes Feld enthielt.
logGroupsScanned Die Anzahl der Protokollgruppen, die von dieser Abfrage gescannt wurden.

Grundlegendes zu RecordsScanned, RecordsMatched und ResultCount

Drei der Abfragestatistiken zählen verschiedene Dinge, und ein direkter Vergleich kann irreführend sein. Jeder misst eine andere Phase der Abfrageverarbeitung:

  • recordsScanned— Die Anzahl der Protokollereignisse, die die Abfrage aus Ihren Protokollgruppen gelesen hat. Dies ist die Eingabe für die Abfrage.

  • recordsMatched— Die Anzahl der Protokollereignisse, die der Abfragezeichenfolge entsprachen. Dieser Wert zählt Protokollereignisse.

  • resultCount— Die Anzahl der Zeilen in der Ergebnismenge, die die Abfrage generiert hat. Dieser Wert zählt die Ausgabezeilen.

Jede Stufe schränkt die Daten ein. Ein Befehl wie stats fasst viele Protokollereignisse in einer einzigen Ausgabezeile zusammen und resultCount kann daher viel kleiner als recordsMatched sein. Eine große recordsMatched Zahl mit einer kleinen Zahl resultCount bedeutet nicht, dass Zeilen in der Ergebnismenge fehlen.

Beispiel — Aggregation

Die folgende Abfrage zählt die Fehlermeldungen in jedem Log-Stream einer Loggruppe über einen Zeitraum von einer Stunde.

filter @message like /ERROR/ | stats count(*) as errorCount by @logStream

Wenn die Abfrage 1.500.000 Protokollereignisse liest, 24.318 davon enthaltenERROR, und die entsprechenden Protokollereignisse aus 12 Protokollströmen stammen, wird die Abfrage mit den folgenden Statistiken abgeschlossen.

"statistics": { "recordsMatched": 24318, "recordsScanned": 1500000, "estimatedRecordsSkipped": 0, "bytesScanned": 450000000, "estimatedBytesSkipped": 0, "logGroupsScanned": 1, "resultCount": 12 }

statserzeugt eine Zeile für jeden Log-Stream, also 12 und resultCount recordsMatched 24.318. Die 12 Werte von errorCount ergeben zusammen 24.318.

Beispiel — Filter Post-aggregation

Die folgende Abfrage speichert nur die Log-Streams, die mehr als 1.000 Fehler verursacht haben.

filter @message like /ERROR/ | stats count(*) as errorCount by @logStream | filter errorCount > 1000

Der letzte filter Befehl wird nach der Gruppierung ausgeführt, sodass Zeilen aus der Ergebnismenge entfernt werden, anstatt Ereignisse aus dem Scan zu protokollieren. Wenn 3 der 12 Log-Streams errorCount mehr als 1.000 haben, dann resultCount ist 3 statt 12. recordsScannedund ändern bytesScanned Sie nicht, da die Abfrage in beiden Fällen dieselben Protokolldaten liest.

Beispiel — Limit

Ein limit Befehl reduziert resultCount ohne jegliche Aggregation. Die folgende Abfrage gibt die 100 neuesten Fehlermeldungen zurück.

filter @message like /ERROR/ | sort @timestamp desc | limit 100

Wenn die Abfrage dieselben 1.500.000 Protokollereignisse scannt und mit denselben 24.318 übereinstimmt, resultCount ist 100, da die Ergebnismenge auf 100 Zeilen limit begrenzt wird. In der Konsole wird für diese Beziehung angezeigt, dass 100 von 24.318 Datensätzen übereinstimmen.

Jede Statistik beantwortet eine andere Frage.

Wie viele Zeilen hat diese Abfrage zurückgegeben?

Verwenden Sie resultCount. Ein Wert von 0 bedeutet, dass die Abfrage keine Zeilen erzeugt hat. Verwenden Sie ihn nicht recordsMatched für diesen Zweck, da er Protokollereignisse und nicht Zeilen zählt.

Wie viele Protokolldaten hat diese Abfrage gelesen?

Verwendung von recordsScanned und bytesScanned. Das Scanvolumen bestimmt die Kosten und die Laufzeit einer Abfrage. Um dies zu reduzieren, verkürzen Sie den Zeitraum, fragen Sie weniger Protokollgruppen ab oder erstellen Sie Feldindizes. Weitere Informationen finden Sie unter Erstellen Sie Feldindizes, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren.

Wie viele Protokollereignisse stimmten mit dieser Abfrage überein?

Verwenden Sie recordsMatched.

Anmerkung

CloudWatch Logs lässt eine Statistik aus dem statistics Objekt aus, wenn kein Wert dafür verfügbar ist, und meldet die Statistik nicht als 0.

Wenn Ihr Event-Nutzer resultCount in einem Ereignis nichts findet, behandeln Sie den Wert als unbekannt und nicht als 0. Schreiben Sie Event-Konsumenten so, dass sie fehlende Statistiken tolerieren und Statistiken ignorieren, die sie nicht kennen.