Buat Laporan Kustom dan Analisis Data Penggunaan AppStream 2.0 - Amazon AppStream 2.0

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat Laporan Kustom dan Analisis Data Penggunaan AppStream 2.0

Amazon Athena adalah layanan kueri interaktif tanpa server yang dapat Anda gunakan untuk menganalisis data yang disimpan di bucket S3 Anda menggunakan kueri SQL standar. Anda dapat menggunakan Athena untuk menggabungkan laporan penggunaan Anda atau membuat jenis laporan kustom lainnya.

Buat AWS Glue Crawler

AWS Glue adalah layanan ekstrak, transformasi, dan muat (ETL) yang dikelola sepenuhnya yang memungkinkan Anda membuat database dari data Amazon S3 dan kueri database tersebut dengan menggunakan Athena. Database ini juga disebut sebagai Katalog AWS Glue Data. AWS Glue Crawler dapat secara otomatis mendeteksi skema data Amazon S3 Anda dan membuat database dan tabel yang sesuai. AppStream 2.0 menyediakan AWS CloudFormation template yang dapat Anda gunakan untuk membuat AWS Glue sumber daya yang diperlukan.

penting

Menyelesaikan langkah-langkah dalam prosedur berikut akan membuat AWS Glue crawler. Namun, langkah-langkah ini tidak memulai crawler. Untuk memulai crawler, Anda harus melakukan langkah-langkah dalam prosedur selanjutnya. Untuk informasi selengkapnya tentang AWS Glue crawler, lihat Mendefinisikan Crawler.

Untuk membuat AWS Glue crawler
  1. Buka konsol AppStream 2.0 di https://console.aws.amazon.com/appstream2.

  2. Pilih AWS Wilayah tempat Anda berlangganan laporan penggunaan.

  3. Di panel navigasi, pilih Laporan Penggunaan, dan verifikasi bahwa pencatatan laporan penggunaan diaktifkan.

  4. Pada tab Laporan Detail, di paragraf di sebelah Analytics, pilih tautan CloudFormationtemplat.

    Memilih tautan membuka AWS CloudFormation konsol, tempat Anda dapat meninjau parameter AWS CloudFormation tumpukan yang ditentukan oleh templat sebelum menjalankannya. Template, saat dijalankan, membuat AWS Glue crawler dan beberapa contoh kueri Athena.

  5. Pada halaman Tentukan Detail, di samping ScheduleExpression, simpan nilai default atau tentukan nilai ekspresi cron yang berbeda untuk frekuensi yang Anda inginkan untuk menjalankan crawler. Jangan mengubah nilai default lainnya. Setelah selesai, pilih Berikutnya.

    Secara default, crawler dijadwalkan untuk berjalan setiap hari, tetapi Anda dapat mengonfigurasi crawler untuk menjalankan mingguan, bulanan, atau pada frekuensi lain. Untuk informasi tentang sintaks cron, lihat Ekspresi Cron.

  6. Pada halaman Opsi, pertahankan nilai default, dan pilih Berikutnya.

  7. Pada halaman Tinjauan, pilih kotak centang di samping “Saya mengakui bahwa AWS CloudFormation mungkin membuat sumber daya IAM dengan nama khusus,” lalu pilih Buat.

    Anda harus memiliki izin AWS Glue dan AWS Identity and Access Management (IAM) yang cukup untuk membuat dan menjalankan tumpukan. AWS CloudFormation Jika Anda tidak memiliki izin yang diperlukan, minta administrator akun Amazon Web Services Anda untuk melakukan langkah-langkah ini di akun Anda atau memberi Anda izin berikut.

    { "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" } ] }

Membuat Katalog Data dengan Menggunakan AWS Glue Crawler

AWS Glue Crawler, saat dijalankan, membuat Katalog Data dan skema yang dipetakan ke struktur sesi dan laporan aplikasi Anda. Setiap kali laporan baru disimpan di bucket Amazon S3, Anda harus menjalankan crawler untuk memperbarui Katalog AWS Glue Data dengan data dari laporan baru.

catatan

Biaya mungkin berlaku untuk menjalankan AWS Glue crawler Anda. Untuk informasi selengkapnya, silakan lihat Harga AWS Glue.

  1. Buka AWS Glue konsol di https://console.aws.amazon.com/glue/.

  2. Pilih AWS Wilayah tempat Anda berlangganan laporan penggunaan.

  3. Pilih kotak centang di samping crawler bernama appstream-usage-sessions-crawler, lalu pilih Run crawler. Ulangi langkah ini untuk crawler bernama appstream-usage-apps-crawler.

    Melakukan langkah-langkah ini menjalankan crawler dan menjadwalkannya untuk berjalan secara otomatis sesuai dengan jadwal yang ditentukan dalam tumpukan. AWS CloudFormation

  4. Setelah kedua crawler selesai berjalan, di panel navigasi, pilih Databases. Database bernama appstream-usage, yang mewakili laporan penggunaan Anda, ditampilkan. Database ini adalah Katalog AWS Glue Data yang dibuat saat appstream-usage-sessions-crawler dan appstream-usage-apps-crawler dijalankan.

  5. Untuk melihat tabel dalam database, pilih appstream-usage, Tables. Dua tabel, aplikasi, dan sesi, yang masing-masing mewakili laporan penggunaan aplikasi dan sesi Anda, ditampilkan. Pilih salah satu tabel untuk melihat skema.

    Anda sekarang dapat query tabel ini di Athena dengan menggunakan SQL.

Buat dan Jalankan Kueri Athena

Untuk menanyakan laporan penggunaan Anda menggunakan Athena, lakukan langkah-langkah berikut.

catatan

Biaya mungkin berlaku untuk pertanyaan Athena yang Anda jalankan. Untuk informasi selengkapnya, lihat Harga Amazon Athena.

  1. Buka konsol Athena di https://console.aws.amazon.com/athena/.

  2. Di bawah Database, pilih appstream-usage.

  3. Di panel kueri, masukkan kueri SQL, dan pilih Jalankan kueri.

Bekerja dengan Athena Queries

Bagian ini menyediakan kueri SQL yang dapat Anda jalankan di Athena untuk menganalisis data laporan penggunaan di bucket Amazon S3 Anda.

Untuk membuat laporan konsolidasi dari semua sesi di bulan tertentu, jalankan kueri berikut:

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

Anda juga dapat melakukan operasi gabungan antara aplikasi dan tabel sesi dalam kueri Anda. Misalnya, untuk melihat pengguna berbeda yang meluncurkan setiap aplikasi pada bulan tertentu, jalankan kueri berikut:

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

Hasil kueri Athena disimpan sebagai file.csv di bucket Amazon S3 di akun Anda yang diberi nama. aws-athena-query-results-account-id-without-hyphens-region-code Untuk memudahkan dalam menemukan hasil kueri, pilih Simpan sebagai dan berikan nama untuk kueri Anda sebelum menjalankannya. Anda juga dapat memilih ikon unduhan di panel Hasil Athena untuk mengunduh hasil kueri sebagai file.csv.

Untuk meningkatkan kinerja dan mengurangi biaya, Athena menggunakan partisi untuk mengurangi jumlah data yang dipindai dalam kueri. Untuk informasi selengkapnya, lihat,Data partisi. Laporan penggunaan dipartisi di bucket Amazon S3 Anda berdasarkan tahun, bulan, dan hari. Anda dapat membatasi kueri ke partisi rentang tanggal tertentu menggunakan bidang tahun, bulan, dan hari sebagai kondisi dalam kueri Anda. Misalnya, kueri berikut hanya menyerap laporan sesi untuk minggu 19 Mei 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

Sebaliknya, kueri berikut menghasilkan hasil yang identik, tetapi karena tidak terbatas pada partisi apa pun, kueri ini menyerap semua laporan sesi yang disimpan di bucket Amazon S3 Anda.

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

Jika sesi berlangsung lebih dari satu hari, sesi dan catatan aplikasi muncul di sesi dan laporan aplikasi, masing-masing, sesuai dengan hari di mana sesi berakhir. Untuk alasan ini, jika Anda perlu menemukan catatan yang berhubungan dengan semua sesi yang aktif selama rentang tanggal tertentu, pertimbangkan untuk memperluas kumpulan partisi kueri Anda dengan panjang sesi maksimum yang telah Anda konfigurasikan untuk armada Anda.

Misalnya, untuk melihat semua sesi yang aktif untuk armada tertentu selama bulan kalender, di mana armada memiliki durasi sesi maksimum 100 jam, jalankan kueri berikut untuk memperluas set partisi Anda selama lima hari.

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

AWS CloudFormation Template yang membuat AWS Glue crawler juga membuat dan menyimpan beberapa contoh kueri di akun Athena yang dapat Anda gunakan untuk menganalisis data penggunaan Anda. Contoh kueri ini meliputi yang berikut:

  • Laporan sesi bulanan agregat

  • Panjang sesi rata-rata per tumpukan

  • Jumlah sesi per hari

  • Total jam streaming per pengguna

    catatan

    Biaya penggunaan sesuai permintaan dibulatkan ke jam berikutnya untuk setiap sesi.

  • Pengguna berbeda per aplikasi

Untuk menggunakan salah satu kueri ini, lakukan langkah-langkah berikut.

  1. Buka konsol Athena di https://console.aws.amazon.com/athena/.

  2. Pilih Kueri Tersimpan. Lima pertanyaan yang dicatat sebelum prosedur ini harus ditampilkan. Nama setiap kueri dimulai dengan “AS2.” Misalnya, “as2_users_per_app_curr_mo.”

  3. Untuk menjalankan kueri, pilih nama kueri daripada opsi di sebelah nama.

  4. Teks kueri muncul di panel kueri. Pilih Run query (Jalankan kueri).

Untuk melihat kueri ini dalam AWS CloudFormation templat terpisah, lihat athena-sample-queries-appstream-usage-data_template.yl di Katalog Contoh Kode.AWS