Amazon Athena CloudWatch Konnektor
Der Amazon Athena CloudWatch-Konnektor ermöglicht Amazon Athena, mit CloudWatch zu kommunizieren, sodass Sie Ihre Protokolldaten mit SQL abfragen können.
Dieser Konnektor verwendet keine Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren. Die Verbindungskonfiguration erfolgt über Lambda.
Der Konnektor ordnet Ihre LogGroups als Schemas und jeden LogStream als Tabelle zu. Der Konnektor ordnet auch eine spezielle all_log_streams-Ansicht zu, die alle LogStreams in der LogGroup enthält. Diese Ansicht ermöglicht es Ihnen, alle Protokolle in einer LogGroup gleichzeitig abzufragen, anstatt jeden LogStream einzeln zu durchsuchen.
Voraussetzungen
Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Weitere Informationen finden Sie unter Eine Datenquellenverbindung erstellen oder Verwenden Sie AWS Serverless Application Repository, um einen Datenquellen-Konnektor bereitzustellen.
Parameter
Verwenden Sie die Parameter in diesem Abschnitt, um den CloudWatch-Konnektor zu konfigurieren.
Wir empfehlen, dass Sie einen CloudWatch-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die glue_connection Umgebungsvariable des CloudWatch-Konnektors Lambda auf den Namen der zu verwendenden Glue-Connection.
Eigenschaften von Glue Connections
Verwenden Sie den folgenden Befehl, um das Schema für ein Glue-Connection-Objekt zu erhalten. Dieses Schema enthält alle Parameter, mit denen Sie Ihre Verbindung steuern können.
aws glue describe-connection-type --connection-type CLOUDWATCH
Lambda-Umgebungseigenschaften
-
glue_connection – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.
Anmerkung
-
Alle Konnektoren, die Glue Connections verwenden, müssen AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
-
Der mit Glue-Connection erstellte CloudWatch-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
-
Der mit Glue-Connection erstellte CloudWatch-Connector unterstützt nur
ConnectionSchemaVersion2.
-
spill_bucket – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
-
spill_prefix – (Optional) Ist standardmäßig ein Unterordner im angegebenen
spill_bucketgenanntathena-federation-spill. Wir empfehlen Ihnen, einen Amazon-S3-Speicher-Lebenszyklus an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind. -
spill_put_request_headers – (Optional) Eine JSON-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-
putObject-Anforderung, die für den Überlauf verwendet wird (z. B.{"x-amz-server-side-encryption" : "AES256"}). Andere mögliche Header finden Sie unter PutObject in der API-Referenz zu Amazon Simple Storage Service. -
kms_key_id – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet werden, mit dem AES-GCM-authentifizierten Verschlüsselungsmodus und einem zufällig generierten Schlüssel verschlüsselt. Damit Ihre Lambda-Funktion stärkere Verschlüsselungsschlüssel verwendet, die von KMS generiert werden, wie
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, können Sie eine ID einer Verschlüsselung angeben. -
disable_spill_encryption – (Optional) Bei Einstellung auf
True, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung istFalse, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine serverseitige Verschlüsselung verwendet.
Der Konnektor unterstützt auch AIMD-StaukontrolleThrottlingInvoker. Sie können das Standarddrosselungsverhalten optimieren, indem Sie eine der folgenden optionalen Umgebungsvariablen festlegen:
-
throttle_initial_delay_ms – Die erste Aufrufverzögerung, die nach dem ersten Stauereignis angewendet wurde. Der Standardwert beträgt 10 Millisekunden.
-
throttle_max_delay_ms – Die maximale Verzögerung zwischen Aufrufen. Sie können TPS ableiten, indem Sie es in 1000 ms teilen. Der Standardwert beträgt 1 000 Millisekunden.
-
throttle_decrease_factor – Der Faktor, um den Athena die Aufrufrate reduziert. Der Standardwert ist 0,5.
-
throttle_increase_ms – Die Geschwindigkeit, mit der Athena die Aufrufverzögerung verringert. Der Standardwert beträgt 10 Millisekunden.
Datenbanken und Tabellen
Der Athena-CloudWatch-Konnektor ordnet Ihre LogGroups als Schemas (d.h. Datenbanken) und jeden LogStream als Tabelle zu. Der Konnektor ordnet auch eine spezielle all_log_streams-Ansicht zu, die alle LogStreams in der LogGroup enthält. Diese Ansicht ermöglicht es Ihnen, alle Protokolle in einer LogGroup gleichzeitig abzufragen, anstatt jeden LogStream einzeln zu durchsuchen.
Jede vom Athena-CloudWatch-Konnektor zugeordnete Tabelle hat das folgende Schema. Dieses Schema stimmt mit den von CloudWatch Logs bereitgestellten Feldern überein.
-
log_stream – Ein
VARCHAR, das den Namen des LogStream enthält, aus dem die Zeile stammt. -
Zeit – Ein
INT64, das die Epochenzeit enthält, zu der die Protokollzeile generiert wurde. -
Botschaft – Ein
VARCHAR, das die Protokollnachricht enthält.
Beispiele
Das folgende Beispiel zeigt, wie Sie eine SELECT-Abfrage in einem angegebenen LogStream durchführen.
SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" LIMIT 100
Das folgende Beispiel zeigt, wie Sie eine all_log_streams-Ansicht, um eine Abfrage für alle LogStreams in einer angegebenen LogGroup durchzuführen.
SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" LIMIT 100
Erforderliche Berechtigungen
Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im Policies-Abschnitt der athena-cloudwatch.yaml
-
Amazon-S3-Schreibzugriff – Der Konnektor benötigt Schreibzugriff auf einen Speicherort in Amazon S3, um Ergebnisse aus großen Abfragen zu übertragen.
-
Athena GetQueryExecution – Der Konnektor verwendet diese Berechtigung, um ein Fast-Fail durchzuführen, wenn die vorgeschaltete Athena-Abfrage beendet wurde.
-
CloudWatch Logs Lese-/Schreibrechte – Der Konnektor verwendet diese Berechtigung, um Ihre Protokolldaten zu lesen und seine Diagnoseprotokolle zu schreiben.
Leistung
Der Athena-CloudWatch-Konnektor versucht, Abfragen für CloudWatch zu optimieren, indem er Scans der für Ihre Abfrage erforderlichen Protokollstreams parallelisiert. Für bestimmte Zeitraumfilter wird das Prädikat-Pushdown sowohl innerhalb der Lambda-Funktion als auch in CloudWatch Logs ausgeführt.
Verwenden Sie für Ihre Protokollgruppennamen und Protokollstreamnamen nur Kleinbuchstaben, um eine optimale Leistung zu erzielen. Bei der Verwendung gemischter Groß- und Kleinschreibung führt der Konnektor eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch, die rechenintensiver ist.
Anmerkung
Der CloudWatch-Connector unterstützt keine Datenbanknamen in Großbuchstaben.
Pass-Through-Abfragen
Der CloudWatch-Connector unterstützt Pass-Through-Abfragen, die die Abfragesyntax für CloudWatch Logs Insights verwenden. Weitere Informationen über CloudWatch Logs Insights finden Sie unter Analysieren von Protokolldaten mit Amazon CloudWatch Logs Insights im Benutzerhandbuch zu Amazon CloudWatch Logs.
Um Pass-Through-Abfragen mit CloudWatch zu verwenden, verwenden Sie die folgende Syntax:
SELECT * FROM TABLE( system.query( STARTTIME => 'start_time', ENDTIME => 'end_time', QUERYSTRING => 'query_string', LOGGROUPNAMES => 'log_group-names', LIMIT => 'max_number_of_results' ))
Das folgende Beispiel für eine CloudWatch-Passthrough-Abfrage filtert nach dem duration-Feld, wenn es nicht gleich 1000 ist.
SELECT * FROM TABLE( system.query( STARTTIME => '1710918615308', ENDTIME => '1710918615972', QUERYSTRING => 'fields @duration | filter @duration != 1000', LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1', LIMIT => '2' ))
Lizenzinformationen
Das Amazon Athena CloudWatch Konnektor-Projekt ist lizenziert unter der Apache-2.0-Lizenz
Weitere Ressourcen
Weitere Informationen zu diesem Konnektor finden Sie unter der entsprechenden Seite