Daten von Amazon S3 in Timestream für die InfluxDB-Automatisierung aufnehmen - Amazon Timestream

Für ähnliche Funktionen wie Amazon Timestream für sollten Sie Amazon Timestream for LiveAnalytics InfluxDB in Betracht ziehen. Es bietet eine vereinfachte Datenaufnahme und Antwortzeiten im einstelligen Millisekundenbereich für Analysen in Echtzeit. Erfahren Sie hier mehr.

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.

Daten von Amazon S3 in Timestream für die InfluxDB-Automatisierung aufnehmen

Nachdem das Timestream for LiveAnalytics Export-Tool den Entladevorgang abgeschlossen hat, beginnt der nächste Schritt im Automatisierungsprozess. Diese Automatisierung verwendet die Import-Tools von InfluxDB, um die Daten in ihre spezielle Zeitreihenstruktur zu übertragen. Der Prozess transformiert das Datenmodell von Timestream so, dass es den Konzepten von InfluxDB für Messungen, Tags und Felder entspricht. Schließlich werden die Daten mithilfe des Leitungsprotokolls von InfluxDB effizient geladen.

Der Workflow für den Abschluss einer Migration ist in vier Phasen unterteilt:

  1. Entladen Sie Daten mit dem Tool Timestream für den LiveAnalytics Export.

  2. Datentransformation: Konvertierung von Timestream für LiveAnalytics Daten in das InfluxDB-Zeilenprotokollformat (basierend auf dem nach der Kardinalitätsbeurteilung definierten Schema) mit Amazon Athena.

  3. Datenaufnahme: Nehmen Sie den Zeilenprotokoll-Datensatz in Ihre Timestream for InfluxDB-Instance auf.

  4. Validierung: Optional können Sie überprüfen, ob jeder Leitungsprotokollpunkt aufgenommen wurde (erforderlich während des Datentransformationsschritts). --add-validation-field true

Datentransformation

Für die Datentransformation haben wir ein Skript entwickelt, um Timestream für das LiveAnalytics exportierte Datenparkettformat mithilfe von Amazon Athena in das Line Protocol-Format von InfluxDB zu konvertieren. Amazon Athena bietet einen serverlosen Abfrageservice und eine kostengünstige Möglichkeit, große Mengen von Zeitreihendaten zu transformieren, ohne spezielle Rechenressourcen zu benötigen.

Das -Skript führt folgende Aktionen aus:

  • Lädt exportierten Timestream für LiveAnalytics Daten aus einem Amazon S3 S3-Bucket in eine Amazon Athena Athena-Tabelle.

  • Führt die Datenzuordnung und Umwandlung der in der Athena-Tabelle gespeicherten Daten in das Leitungsprotokoll durch und speichert sie im S3-Bucket.

Datenzuweisung

Die folgende Tabelle zeigt, wie Timestream für LiveAnalytics Daten den Leitungsprotokolldaten zugeordnet wird.

Timestream für Concept LiveAnalytics Konzept des Leitungsprotokolls

Name der Tabelle

Messung

Dimensions (Abmessungen)

Tags

Name der Maßnahme

Tag (optional)

Maßnahmen

Felder

Time (Zeit)

Zeitstempel

Voraussetzungen und Installation

Weitere Informationen finden Sie in den Abschnitten Voraussetzungen und Installation in der README-Datei des Transformationsskripts.

Usage

Führen Sie den folgenden Befehl aus, um im Bucket example_s3_bucket gespeicherte Daten aus dem Timestream für die LiveAnalytics Tabelle example_table in example_database zu transformieren:

python3 transform.py \ --database-name example_database \ --tables example_table \ --s3-bucket-path example_s3_bucket \ --add-validation-field false

Nachdem das Skript abgeschlossen ist,

  • In Athena wird die Tabelle example_database_example_table erstellt, die Timestream für Daten enthält. LiveAnalytics

  • In Athena wird die Tabelle lp_example_database_example_table erstellt, die Timestream für Daten enthält, die in Linienprotokollpunkte transformiert wurden. LiveAnalytics

  • Im S3-Bucket example_s3_bucket werden innerhalb des Pfads Linienprotokolldaten gespeichert. example_database/example_table/unload-<%Y-%m-%d-%H:%M:%S>/line-protocol-output

Empfehlungen

Weitere Informationen zur letzten Verwendung des Skripts finden Sie in der README-Datei des Transformationsskripts. Ausgaben sind für spätere Schritte der Migration erforderlich, z. B. zur Validierung. Wenn Sie Dimensionen ausgeschlossen haben, um die Kardinalität zu verbessern, passen Sie das Schema an, um die Kardinalität zu reduzieren, indem Sie das --dimensions-to-fields Argument verwenden, um bestimmte Dimensionen in Feldern zu ändern.

Ein Feld zur Validierung hinzufügen

Informationen zum Hinzufügen eines Felds für die Validierung finden Sie im Abschnitt Hinzufügen eines Felds für die Validierung in der README-Datei des Transformationsskripts.

Datenaufnahme in Timestream für InfluxDB

Das InfluxDB-Aufnahmeskript nimmt komprimierte Zeilenprotokoll-Datensätze in Timestream für InfluxDB auf. Ein Verzeichnis, das mit Gzip komprimierte Zeilenprotokolldateien enthält, wird zusammen mit dem InfluxDB-Bucket als Befehlszeilenargument übergeben. Dieses Skript wurde entwickelt, um mehrere Dateien gleichzeitig mithilfe von Multiprocessing aufzunehmen, um die Ressourcen mit InfluxDB und dem Computer, der das Skript ausführt, zu nutzen.

Das Skript macht Folgendes:

  • Extrahiert gezippte Dateien und nimmt sie in InfluxDB auf.

  • Implementiert Wiederholungsmechanismen und Fehlerbehandlung.

  • Zeichnet erfolgreiche und fehlgeschlagene Datenerfassungen auf und setzt sie fort.

  • Optimiert den I/O Betrieb beim Lesen aus einem Leitungsprotokoll-Datensatz.

Voraussetzungen und Installation

Weitere Informationen finden Sie im Abschnitt Voraussetzungen und Installation in der README-Datei des Aufnahmeskripts unter. GitHub

Datenaufbereitung

Die für die Aufnahme erforderlichen Zip-Line-Protokolldateien werden von den Datentransformationsskripten generiert. Gehen Sie wie folgt vor, um Ihre Daten vorzubereiten:

  1. Richten Sie eine EC2 Instanz mit ausreichend Speicherplatz für den transformierten Datensatz ein.

  2. Synchronisieren Sie die transformierten Daten aus dem S3-Bucket mit Ihrem lokalen Verzeichnis:

    aws s3 sync \ s3://your-bucket-name/path/to/transformed/data \ ./data_directory
  3. Stellen Sie sicher, dass Sie Lesezugriff auf alle Dateien im Datenverzeichnis haben.

  4. Führen Sie das folgende Aufnahmeskript aus, um Daten in Timestream for InfluxDB aufzunehmen.

Usage

python influxdb_ingestion.py <bucket_name> <data_directory> [options]

Grundlegende Verwendung

python influxdb_ingestion.py my_bucket ./data_files

Aufnahmeraten

Wir haben einige Tests für die Aufnahmeraten durchgeführt. Aufnahmetests unter Verwendung einer EC2 C5N.9XL-Instanz, die das Aufnahmeskript mit 10 Workern ausführt und das ~500 GB-Leitungsprotokoll in 8XL Timestream für InfluxDB-Instances einspeist:

  • 3.000 IOPS 15,86 GB/Stunde.

  • 12.000 IOPS 70,34 GB/Stunde.

  • 16.000 IOPS 71,28 GB/Stunde.

Empfehlungen

  • Verwenden Sie eine EC2 Instanz mit ausreichend CPU-Kernen, um die Parallelverarbeitung durchzuführen.

  • Stellen Sie sicher, dass die Instanz über genügend Speicherplatz für den gesamten transformierten Datensatz verfügt und zusätzlichen Speicherplatz für die Extraktion bietet.

    • Die Anzahl der gleichzeitig extrahierten Dateien entspricht der Anzahl der Worker, die während der Skriptausführung konfiguriert wurden.

  • Positionieren Sie die EC2 Instanz in derselben Region und derselben AZ (falls möglich) wie Ihre InfluxDB-Instance, um die Latenz zu minimieren.

  • Erwägen Sie die Verwendung von Instance-Typen, die für den Netzwerkbetrieb optimiert sind, beispielsweise C5N.

  • Wenn hohe Aufnahmeraten erforderlich sind, werden mindestens 12.000 IOPS für die Timestream for InfluxDB-Instance empfohlen. Zusätzliche Optimierungen können erzielt werden, indem die Anzahl der Worker für das Skript in Abhängigkeit von Timestream für die Größe der InfluxDB-Instanz erhöht wird.

Weitere Informationen finden Sie in der README-Datei des Aufnahmeskripts.