Amazon Timestream, eine vollständig verwaltete Zeitreihendatenbank, wurde am 30. September für die Öffentlichkeit freigegeben. Ich kenne die Zeitreihendatenbank schon lange, habe sie aber nie benutzt und freue mich darauf.
Es ist zu neu und weder CloudFormation noch Terraform werden noch unterstützt. Dieses Mal werde ich es über die Konsole versuchen. Übrigens ist es in der Region Tokio noch nicht verfügbar. Zeigen wir die Konsole also auf die verfügbare Region.
Nun, ich war mir nicht sicher, wann ich versucht habe, es selbst zu machen, also in einem solchen Fall [Tutorial](https://aws.amazon.com/jp/blogs/news/store-and-access-time-series-data- Es wäre eine Standardpraxis, dies zu tun, während Sie in jedem Maßstab mit Amazon-Zeitstrom schauen, der jetzt allgemein verfügbar ist /).
Klicken Sie im folgenden Bildschirm von Timestream auf die Schaltfläche "Datenbank erstellen".
Legen Sie dann den Datenbanknamen auf dem geöffneten Bildschirm zur Datenbankerstellung fest.
Wenn Sie die KMS-Einstellungen leer lassen, wird der Schlüssel für Sie erstellt. Stellen Sie das Tag nach Ihren Wünschen ein und klicken Sie auf die Schaltfläche "Datenbank erstellen".
Erstellung abgeschlossen!
Drücken wir nun auf den Link des in ↑ erstellten Tabellennamens. Auf dem Bildschirm mit den Datenbankdetails befindet sich die Schaltfläche "Tabelle erstellen". Drücken Sie also darauf.
Legen Sie dann den Tabellennamen auf dem geöffneten Bildschirm zum Erstellen von Tabellen fest.
Die Datenspeichereinstellung ist diesmal eine Testversion, es handelt sich also um ein Lehrbuch.
Stellen Sie das Tag nach Ihren Wünschen ein und klicken Sie auf die Schaltfläche "Tabelle erstellen".
Die Tabellenerstellung ist abgeschlossen!
Es macht keinen Spaß, es wie das Tutorial zu gestalten. Registrieren wir also Datenausgabe von Locust.
Die zu registrierenden Daten lauten wie folgt.
Timestamp,User Count,Type,Name,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100%,Total Request Count,Total Failure Count,Total Median Response Time,Total Average Response Time,Total Min Response Time,Total Max Response Time,Total Average Content Size
1603535373,20,GET,/xxxxx/,1.000000,0.000000,5,6,6,6,8,9,9,9,9,9,9,16,0,4.11685699998543,5.413748562499876,4.11685699998543,9.385663000045952,14265.0
Erstellen Sie einen Befehl im folgenden Python und laden Sie ihn. Sie sind möglicherweise nicht mit Dimensionen vertraut, aber kurz gesagt, Sie können sie als Attributinformationen für die Klassifizierung betrachten. Dieses Mal haben wir HTTP-Ressourcen und -Methoden als Attribute definiert.
import sys
import csv
import time
import boto3
import psutil
from botocore.config import Config
FILENAME = sys.argv[1]
DATABASE_NAME = "xxxxx-test-timestream"
TABLE_NAME = "xxxxx-test-table"
def write_records(records):
try:
result = write_client.write_records(DatabaseName=DATABASE_NAME,
TableName=TABLE_NAME,
Records=records,
CommonAttributes={})
status = result['ResponseMetadata']['HTTPStatusCode']
print("Processed %d records.WriteRecords Status: %s" %
(len(records), status))
except Exception as err:
print("Error:", err)
if __name__ == '__main__':
session = boto3.Session()
write_client = session.client('timestream-write', config=Config(
read_timeout=20, max_pool_connections=5000, retries={'max_attempts': 10}))
query_client = session.client('timestream-query')
with open(FILENAME) as f:
reader = csv.reader(f, quoting=csv.QUOTE_NONE)
for csv_record in reader:
if csv_record[0] == 'Timestamp' or csv_record[3] == 'Aggregated':
continue
ts_records = []
ts_columns = [
{ 'MeasureName': 'Requests/s', 'MeasureValue': csv_record[4] },
{ 'MeasureName': '95Percentile Response Time', 'MeasureValue': csv_record[10] },
{ 'MeasureName': 'Total Median Response Time', 'MeasureValue': csv_record[18] },
{ 'MeasureName': 'Total Average Response Time', 'MeasureValue': csv_record[19] },
]
for ts_column in ts_columns:
ts_records.append ({
'Time': str(int(csv_record[0]) * 1000),
'Dimensions': [ {'Name': 'resource', 'Value': csv_record[3]}, {'Name': 'method', 'Value': csv_record[2]} ],
'MeasureName': ts_column['MeasureName'],
'MeasureValue': ts_column['MeasureValue'],
'MeasureValueType': 'DOUBLE'
})
write_records(ts_records)
Da es sich jedoch um eine Funktion handelt, die gerade für die Öffentlichkeit freigegeben wurde, haben einige Benutzer möglicherweise eine ältere Version von boto3.
$ pip list -o
Lassen Sie uns also überprüfen, ob boto3 die neueste Version ist.
Package Version Latest Type
--------------------- -------- ---------- -----
boto3 1.13.26 1.16.4 wheel
Update mit pip mit `` `-U```.
$ pip install -U boto3
Verwenden Sie außerdem `` `aws configure```, um die Standardregion auf die Region zu verweisen, in der die Datenbank mit ↑ erstellt wurde.
Wenn psutil nicht enthalten ist, installieren Sie es wie folgt.
$ yum install python3-devel
$ pip3 install psutil
Ich denke, es wird eines Tages behoben, aber ab dem 25. Oktober 2020 ist der Befehlsname im offiziellen Blog von ↑ falsch. Wenn Sie also an das Blog und pip3 glauben, können Sie es nicht installieren und werden traurig sein.
War es übrigens möglich, die Daten sicher zu laden?
Wenn Sie im Menü links "Abfrage-Editor" auswählen, wird der folgende Bildschirm angezeigt. Führen Sie also SQL aus, während Sie die Attribute auf den Text eingrenzen. Ich möchte die durchschnittliche Antwortzeit von GET-Anfragen in / xxxxx / wissen!
Als ich es ausführte, wurden nur die gewünschten Informationen extrahiert!
Um dies als Rohdaten zu erhalten, rufen Sie es erneut mit CLI oder boto3 ab. Dies ist ziemlich problematisch, da ein Seiten-Nator erforderlich ist. Erstens ist es einfach, Pandas für eine kleine Menge zu verwenden, aber in der tatsächlichen Nutzungsszene können die von Tausenden von Servern usw. gesammelten Informationen schnell abgerufen werden, also mit der Menge an Informationen, die lokal mit Pandas formatiert werden können Das sollte es nicht geben. Der Punkt, an dem es in Kombination mit Grafana in Echtzeit überwacht werden kann, ist der wahre Wert.
Recommended Posts