Amazon Athena CloudWatch Konnektor - Amazon Athena

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

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 ConnectionSchemaVersion 2.

  • 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_bucket genannt athena-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, wiea7e63k4b-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 ist False, 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-Staukontrolle für den Umgang mit Drosselungsereignissen von CloudWatch über das Konstrukt Amazon Athena Query Federation SDK ThrottlingInvoker. 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-Datei. In der folgenden Liste sind die erforderlichen Berechtigungen zusammengefasst.

  • 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 auf GitHub.com.