Erstellen von benutzerdefinierten Berichten und Analysieren von 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 von benutzerdefinierten Berichten und Analysieren von 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 eines AWS Glue-Crawlers

AWS Glue ist ein vollständig verwalteter ETL-Service (Extraktion, Transformation und Laden), mit dem Sie eine Datenbank mit Ihren Amazon-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-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

Mit der im folgenden Verfahren beschriebenen Vorgehensweise erstellen Sie einen AWS Glue-Crawler. 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 Definieren von Crawlern.

So erstellen Sie einen AWS Glue-Crawler
  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. Klicken Sie auf der Registerkarte Report Details (Berichtsdetail) im Abschnitt neben Analytics (Analysen) auf den Link CloudFormation template (CloudFormation-Vorlage).

    Durch Klicken auf den Link öffnet sich die AWS CloudFormation-Konsole. Dort können Sie die durch die Vorlage festgelegten Parameter des AWS CloudFormation-Stacks überprüfen, bevor Sie sie ausführen. Wenn die Vorlage ausgeführt wird, erstellt sie einen AWS Glue-Crawler und mehrere Athena-Beispielabfragen.

  5. Auf der Seite Specify Details (Details angeben) können Sie entweder den Standardwert neben ScheduleExpression beibehalten oder einen anderen Cron-Ausdruck für die Häufigkeit festlegen, mit der der Crawler ausgeführt werden soll. Ändern Sie keinen anderen Standardwert. Wählen Sie Next aus, wenn Sie damit fertig sind.

    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 erkenne an, dass AWS CloudFormation unter Umständen IAM-Ressourcen mit benutzerdefinierten Namen erstellen kann“, und wählen Sie dann Erstellen aus.

    Sie müssen über ausreichende Berechtigungen für AWS Glue und AWS Identity and Access Management (IAM) verfügen, um den AWS CloudFormation-Stack erstellen und ausführen zu können. 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 eines Datenkatalogs mithilfe des AWS Glue-Crawlers

Wenn der AWS Glue-Crawler ausgeführt wird, erstellt er einen Datenkatalog und ein Schema, die der Struktur Ihrer Sitzungs- und Anwendungsberichte zugeordnet werden. Jedes Mal, wenn ein neuer Bericht in Ihrem Amazon-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 das Ausführen Ihres AWS Glue-Crawlers fallen möglicherweise Gebühren an. 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.

    Wenn Sie diese Schritte ausführen, werden die Crawler ausgeführt und so konfiguriert, dass sie automatisch entsprechend dem im AWS CloudFormation-Stack festgelegten Zeitplan ausgeführt werden.

  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. Bei dieser Datenbank handelt es sich um einen AWS Glue-Datenkatalog, der bei der Ausführung von appstream-usage-sessions-crawler und appstream-usage-apps-crawler erstellt wurde.

  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, die die AWS Glue-Crawler erstellt hat, hat auch einige Beispielabfragen in Ihrem Athena-Konto erstellt und gespeichert, die Sie zum Analysieren Ihrer Nutzungsdaten verwenden 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 dazu, wie Sie diese Abfragen in einer separaten AWS CloudFormation-Vorlage anzeigen können, finden Sie unter athena-sample-queries-appstream-usage-data_template.yml im AWS-Codebeispiel-Katalog.