Erstellen Sie benutzerdefinierte Berichte und analysieren Sie AppStream 2.0-Nutzungsdaten - Amazon AppStream 2.0

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.

Erstellen Sie benutzerdefinierte Berichte und analysieren Sie AppStream 2.0-Nutzungsdaten

Amazon Athena ist ein interaktiver Serverless-Abfrageservice, mit dem Sie in Ihren S3-Buckets gespeicherte Daten mit SQL-Standardabfragen analysieren können. Sie können Athena verwenden, um Ihre Nutzungsberichte zu aggregieren oder andere Arten von benutzerdefinierten Berichten zu generieren.

Erstellen Sie einen AWS Glue Crawler

AWS Glue ist ein vollständig verwalteter Service zum Extrahieren, Transformieren und Laden (ETL), mit dem Sie eine Datenbank aus Ihren Amazon S3 S3-Daten erstellen und diese Datenbank mithilfe von Athena abfragen können. Diese Datenbank wird auch als AWS Glue Datenkatalog bezeichnet. Ein AWS Glue Crawler kann das Schema Ihrer Amazon S3 S3-Daten automatisch erkennen und die entsprechende Datenbank und Tabellen erstellen. AppStream 2.0 bietet eine AWS CloudFormation Vorlage, mit der Sie die erforderlichen AWS Glue Ressourcen erstellen können.

Wichtig

Wenn Sie die Schritte im folgenden Verfahren ausführen, wird ein AWS Glue Crawler erstellt. Der Crawler wird damit jedoch nicht gestartet. Um den Crawler zu starten, müssen Sie die im nächsten Verfahren beschriebenen Schritte ausführen. Weitere Informationen zu AWS Glue Crawlern finden Sie unter Crawler definieren.

Um einen Crawler zu erstellen AWS Glue
  1. Öffnen Sie die AppStream 2.0-Konsole unter https://console.aws.amazon.com/appstream2.

  2. Wählen Sie die AWS Region aus, für die Sie Nutzungsberichte abonniert haben.

  3. Wählen Sie im Navigationsbereich die Option Usage Reports (Nutzungsberichte) und stellen Sie sicher, dass die Protokollierung von Nutzungsberichten aktiviert ist.

  4. Wählen Sie auf der Registerkarte Berichtsdetails im Absatz neben Analytics den Link zur CloudFormationVorlage aus.

    Wenn Sie den Link auswählen, wird die AWS CloudFormation Konsole geöffnet, in der Sie die Parameter des in der Vorlage angegebenen AWS CloudFormation Stacks überprüfen können, bevor Sie sie ausführen. Wenn die Vorlage ausgeführt wird, erstellt sie einen AWS Glue Crawler und mehrere Athena-Beispielabfragen.

  5. Behalten Sie auf der Seite „Details angeben“ neben ScheduleExpressionentweder den Standardwert bei oder geben Sie einen anderen Cron-Ausdruckswert für die Häufigkeit an, mit der Sie den Crawler ausführen möchten. Ändern Sie keinen anderen Standardwert. Wählen Sie abschließend Weiter.

    Standardmäßig ist eine tägliche Ausführung des Crawlers festgelegt. Sie können den Crawler jedoch so konfigurieren, dass er wöchentlich, monatlich oder mit einer anderen Häufigkeit ausgeführt wird. Weitere Informationen zur Cron-Syntax finden Sie unter Cron-Ausdrücke.

  6. Behalten Sie auf der Seite Options (Optionen) die Standardwerte bei und wählen Sie Next (Weiter) aus.

  7. Aktivieren Sie auf der Seite „Überprüfen“ das Kontrollkästchen neben „Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen mit benutzerdefinierten Namen erstellt werden“, und wählen Sie dann Erstellen aus.

    Sie müssen über ausreichende AWS Glue und AWS Identity and Access Management (IAM-) Berechtigungen verfügen, um den Stack zu erstellen und auszuführen. AWS CloudFormation Wenn Sie nicht über die erforderlichen Berechtigungen verfügen, bitten Sie Ihren AWS-Kontoadministrator, diese Schritte in Ihrem Konto auszuführen oder Ihnen die folgenden Berechtigungen zu erteilen.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:CreateNamedQuery", "athena:BatchGetNamedQuery", "athena:GetNamedQuery", "athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetQueryExecution", "athena:ListNamedQueries", "cloudformation:DescribeStacks", "cloudformation:GetStackPolicy", "cloudformation:DescribeStackEvents", "cloudformation:CreateStack", "cloudformation:GetTemplate", "cloudformation:ListChangeSets", "cloudformation:ListStackResources", "iam:GetRole", "iam:CreateRole", "iam:GetRolePolicy", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*", "arn:aws:cloudformation:*:*:stack/AppStreamUsageReports/*", "arn:aws:athena:*:*:workgroup/primary", "arn:aws:s3:::aws-athena-query-results-*" ] }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::appstream-logs-*", "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*" ], "Condition": { "StringEquals": { "iam:PassedToService": "glue.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "cloudformation:GetTemplateSummary", "glue:GetResourcePolicy", "glue:GetCrawlers", "glue:BatchGetCrawlers", "glue:GetClassifiers", "glue:CreateClassifier", "glue:ListCrawlers", "glue:GetTags", "glue:GetCrawlerMetrics", "glue:GetClassifier", "tag:GetResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": "athena:RunQuery", "Resource": "arn:aws:athena:*:*:workgroup/primary" }, { "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetPartitions", "glue:GetTable" ], "Resource": [ "arn:aws:glue:*:*:table/appstream-usage/*", "arn:aws:glue:*:*:database/appstream-usage", "arn:aws:glue:*:*:catalog" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:*:*:database/appstream-usage", "arn:aws:glue:*:*:catalog" ] }, { "Effect": "Allow", "Action": [ "glue:GetCrawler", "glue:StartCrawler", "glue:CreateCrawler" ], "Resource": "arn:aws:glue:*:*:crawler/appstream-usage*" }, { "Effect": "Allow", "Action": "glue:GetCatalogImportStatus", "Resource": "arn:aws:glue:*:*:catalog" } ] }

Erstellen Sie mithilfe des Crawlers einen Datenkatalog AWS Glue

Wenn der AWS Glue Crawler ausgeführt wird, erstellt er einen Datenkatalog und ein Schema, die der Struktur Ihrer Sitzungen und Anwendungsberichte zugeordnet sind. Jedes Mal, wenn ein neuer Bericht in Ihrem Amazon S3 S3-Bucket gespeichert wird, müssen Sie den Crawler ausführen, um Ihren AWS Glue Datenkatalog mit den Daten aus dem neuen Bericht zu aktualisieren.

Anmerkung

Für den Betrieb Ihres AWS Glue Crawlers können Gebühren anfallen. Weitere Informationen finden Sie unter AWS Glue -Preisgestaltung.

  1. Öffnen Sie die AWS Glue Konsole unter https://console.aws.amazon.com/glue/.

  2. Wählen Sie die AWS Region aus, für die Sie Nutzungsberichte abonniert haben.

  3. Aktivieren Sie das Kontrollkästchen neben dem Crawler mit dem Namen appstream-usage-sessions-crawler und wählen Sie dann Run crawler (Crawler ausführen) aus. Wiederholen Sie diesen Schritt für den Crawler mit dem Namen appstream-usage-apps-crawler.

    Durch die Ausführung dieser Schritte werden die Crawler ausgeführt und so geplant, dass sie automatisch gemäß dem im Stack angegebenen Zeitplan ausgeführt werden. AWS CloudFormation

  4. Wenn die Ausführung beider Crawler abgeschlossen ist, klicken Sie im Navigationsbereich auf Databases (Datenbanken). Es wird eine Datenbank mit dem Namen appstream-usage angezeigt, die Ihre Nutzungsberichte darstellt. Diese Datenbank ist ein AWS Glue Datenkatalog, der erstellt wurde, als appstream-usage-sessions-crawler und appstream-usage-apps-crawler ausgeführt wurden.

  5. Um die Tabellen in der Datenbank anzuzeigen, wählen Sie appstream-usage, Tables (Tabellen) aus. Es werden zwei Tabellen angezeigt: applications (Anwendungen) und sessions (Sitzungen). Diese stellen Ihre Nutzungsberichte zu Anwendungen bzw. Sitzungen dar. Klicken Sie auf eine Tabelle, um ihr Schema anzuzeigen.

    Sie können diese Tabellen jetzt mithilfe von SQL in Athena abfragen.

Erstellen und Ausführen von Athena-Abfragen

Führen Sie die folgenden Schritte aus, um Ihre Nutzungsberichte mithilfe von Athena abzufragen.

Anmerkung

Für Athena-Abfragen fallen möglicherweise Gebühren an. Weitere Informationen hierzu finden Sie unter Preise zu Amazon Athena.

  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Wählen Sie unter Database (Datenbank) die Option appstream-usage.

  3. Geben Sie im Abfragebereich eine SQL-Abfrage ein und klicken Sie auf Run query (Abfrage ausführen).

Arbeiten mit Athena-Abfragen

Dieser Abschnitt stellt SQL-Abfragen bereit, die Sie in Athena ausführen können, um die Nutzungsberichte in Ihrem Amazon-S3-Bucket zu analysieren.

Um einen konsolidierten Bericht zu allen Sitzungen in einem bestimmten Monat zu erstellen, führen Sie die folgende Abfrage aus:

SELECT * FROM "appstream-usage"."sessions" WHERE year='four-digit-year' AND month='two-digit-month'

Sie können auch Join-Vorgänge zwischen den Tabellen applications (Anwendungen) und sessions (Sitzungen) in Ihrer Abfrage ausführen. Beispiel: Führen Sie die folgende Abfrage aus, um die verschiedenen Benutzer anzuzeigen, die die einzelnen Anwendungen in einem bestimmten Monat gestartet haben:

SELECT DISTINCT apps.application_name, sessions.user_id FROM "appstream-usage"."applications" apps INNER JOIN "appstream-usage"."sessions" sessions ON (apps.user_session_id = sessions.user_session_id AND sessions.year='four-digit-year' AND sessions.month='two-digit-month') WHERE apps.year='four-digit-year' AND apps.month='two-digit-month' ORDER BY 1, 2

Die Ergebnisse von Athena-Abfragen werden als CSV-Dateien in einem Amazon-S3-Bucket in Ihrem Konto mit der Bezeichnung aws-athena-query-results-account-id-without-hyphens-region-code gespeichert. Damit Sie Abfrageergebnisse einfach finden können, wählen Sie Save as (Speichern unter) und geben Sie einen Namen für Ihre Abfrage ein, bevor Sie sie ausführen. Sie können auch auf das Download-Symbol im Bereich Athena-Ergebnisse klicken, um die Ergebnisse der Abfrage in einer CSV-Datei herunterzuladen.

Um die Leistung zu verbessern und die Kosten zu senken, reduziert Athena die Menge der in Abfragen überprüften Daten mithilfe der Partitionierung. Weitere Informationen finden Sie auf der Seite zum Partitionieren von Daten. Nutzungsberichte werden in Ihren Amazon-S3-Buckets nach Jahr, Monat und Tag partitioniert. Sie können Ihre Abfragen auf bestimmte Partitionen von Datumsbereichen eingrenzen. Verwenden Sie dazu die Felder year (Jahr), month (Monat) und day (Tag) als Bedingungen für Ihre Abfragen. Beispiel: Die folgende Abfrage erfasst nur die Sitzungsberichte für die Woche ab dem 19. Mai 2019.

SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, COUNT(DISTINCT user_session_id) AS num_sessions FROM "appstream-usage"."sessions" WHERE year='2019' AND month='05' AND day BETWEEN '19' and '25' GROUP BY 1 ORDER BY 1

Im Gegensatz dazu erzeugt die folgende Abfrage identische Ergebnisse. Da sie jedoch nicht auf Partitionen begrenzt ist, erfasst sie alle in Ihrem Amazon-S3-Bucket gespeicherten Sitzungsberichte.

SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, COUNT(DISTINCT user_session_id) AS num_sessions FROM "appstream-usage"."sessions" WHERE session_end_time BETWEEN '2019-05-19' AND '2019-05-26' GROUP BY 1 ORDER BY 1

Wenn eine Sitzung mehrere Tage umfasst, werden die Datensätze zur Sitzung und zur Anwendung in den Sitzungs- und Anwendungsberichten zu dem Tag angezeigt, in dem die Sitzung endete. Wenn Sie Datensätze zu allen Sitzungen finden müssen, die während eines bestimmten Datumsbereichs aktiv waren, empfehlen wir daher, den Partitionssatz Ihrer Abfrage um die maximale Sitzungsdauer zu erweitern, die Sie für Ihre Flotten konfiguriert haben.

Beispiel: Wenn Sie alle Sitzungen anzeigen möchten, die für eine bestimmte Flotte während eines Kalendermonats aktiv waren und die Flotte eine maximale Sitzungsdauer von 100 Stunden hatte, führen Sie die folgende Abfrage aus, um Ihren Partitionssatz um fünf Tage zu erweitern.

SELECT * FROM "appstream-usage"."sessions" WHERE fleet_name = 'fleet_name' AND session_start_time BETWEEN '2019-05-01' AND '2019-06-01' AND year='2019' AND (month='05' OR (month='06' AND day<='05')) ORDER BY session_start_time

Die AWS CloudFormation Vorlage, mit der die AWS Glue Crawler erstellt wurden, hat auch mehrere Beispielabfragen in Ihrem Athena-Konto erstellt und gespeichert, mit denen Sie Ihre Nutzungsdaten analysieren können. Zu diesen Beispielabfragen gehören:

  • Aggregierte monatliche Sitzungsberichte

  • Durchschnittliche Sitzungsdauer pro Stack

  • Anzahl der Sitzungen pro Tag

  • Gesamtzahl der Streaming-Stunden pro Benutzer

    Anmerkung

    On-Demand-Nutzungsgebühren werden für jede Sitzung auf die nächste Stunde aufgerundet.

  • Verschiedene Benutzer pro App

Führen Sie die folgenden Schritte aus, um eine dieser Abfragen zu verwenden.

  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Wählen Sie Saved Queries (Gespeicherte Abfragen). Die fünf vor diesem Verfahren erwähnten Abfragen sollten angezeigt werden. Die Namen der einzelnen Abfragen beginnen mit "AS2". Beispiel: "AS2_users_per_app_curr_mo."

  3. Um eine Abfrage auszuführen, wählen Sie den Abfragenamen anstatt der Option neben dem Namen aus.

  4. Der Text der Abfrage wird im Abfragebereich angezeigt. Wählen Sie Abfrage ausführen.

Informationen zum Anzeigen dieser Abfragen in einer separaten AWS CloudFormation Vorlage finden Sie unter athena-sample-queries-appstream-usage-data_template.yml im Codebeispielkatalog.AWS