Creación de informes personalizados y análisis de los datos de uso de AppStream 2.0 - Amazon AppStream 2.0

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de informes personalizados y análisis de los datos de uso de AppStream 2.0

Amazon Athena es un servicio de consultas interactivas sin servidor que puede utilizar para analizar los datos almacenados en sus buckets de S3 con consultas SQL estándar. Puede utilizar Athena para agregar sus informes de uso o generar otros tipos de informes personalizados.

Creación de un rastreador de AWS Glue

AWS Glue es un servicio totalmente administrado de extracción, transformación y carga (ETL) que le permite crear una base de datos a partir de los datos de Amazon S3 y consultar esa base de datos mediante Athena. Esta base de datos también se denomina catálogo de datos de AWS Glue. El rastreador de AWS Glue puede detectar automáticamente el esquema de sus datos de Amazon S3 y crear la base de datos y las tablas correspondientes. AppStream 2.0 proporciona una plantilla de AWS CloudFormation que puede utilizar para crear los recursos de AWS Glue necesarios.

importante

La creación de un rastreador de AWS Glue se realiza mediante los pasos que se describen en el siguiente procedimiento. Sin embargo, estos pasos no inician el rastreador. Para iniciar el rastreador, debe realizar los pasos que se indican en el siguiente procedimiento. Para obtener más información acerca de los rastreadores de AWS Glue, consulte Definición de rastreadores.

Para crear un rastreador de AWS Glue
  1. Abra la consola de AppStream 2.0 en https://console.aws.amazon.com/appstream2.

  2. Elija la región de AWS para la que se ha suscrito a informes de uso.

  3. En el panel de navegación, seleccione Usage Reports (Informes de uso) y compruebe que el registro de informes de uso está habilitado.

  4. En la pestaña Report Details (Detalles del informe), en el párrafo situado junto a Analytics (Análisis), elija el enlace CloudFormation template (Plantilla de CloudFormation).

    Al elegir el enlace se abre la consola de AWS CloudFormation, donde puede revisar los parámetros de la pila de AWS CloudFormation especificada por la plantilla antes de ejecutarla. La plantilla, cuando se ejecuta, crea un rastreador de AWS Glue y varias consultas de Athena de ejemplo.

  5. En la página Specify Details (Especificar detalles), junto a ScheduleExpression, deje el valor predeterminado o especifique una expresión cron diferente para la frecuencia con la que desea ejecutar el rastreador. No cambie ningún otro valor predeterminado. Cuando haya terminado, elija Siguiente.

    De forma predeterminada, el rastreador está programado para ejecutarse una vez al día, pero puede configurarlo para que se ejecute cada semana, cada mes o con otra frecuencia. Para obtener información acerca de la sintaxis cron, consulte Expresiones Cron.

  6. En la página Options (Opciones), mantenga todos los valores predeterminados y seleccione Next(Siguiente).

  7. En la página Revisar, seleccione la casilla de verificación al lado de “Acepto que es posible que AWS CloudFormation cree recursos de IAM con nombres personalizados” y, a continuación, elija Crear.

    Debe tener permisos de AWS Glue y AWS Identity and Access Management (IAM) suficientes para crear y ejecutar la pila de AWS CloudFormation. Si no tiene los permisos necesarios, pida al administrador de su cuenta de Amazon Web Services que realice estos pasos en su cuenta o que le conceda los siguientes permisos.

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

Creación de un catálogo de datos mediante el rastreador de AWS Glue

El rastreador de AWS Glue, cuando se ejecuta, crea un esquema y un catálogo de datos que se asignan a la estructura de sus informes de sesiones y aplicaciones. Cada vez que se almacena un nuevo informe en su bucket de Amazon S3, debe ejecutar el rastreador para actualizar su catálogo de datos de AWS Glue con los datos del nuevo informe.

nota

Se pueden aplicar cargos por la ejecución del rastreador de AWS Glue. Para más información, consulte Precios de AWS Glue.

  1. Abra la consola de AWS Glue en https://console.aws.amazon.com/glue/.

  2. Elija la región de AWS para la que se ha suscrito a informes de uso.

  3. Seleccione la casilla de verificación situada junto al rastreador denominado appstream-usage-sessions-crawler y, a continuación, elija Run crawler (Ejecutar rastreador). Repita este paso para el rastreador llamado appstream-usage-apps-crawler.

    Con estos pasos se ejecutan los rastreadores y se programan para que se ejecuten automáticamente de acuerdo con la programación especificada en la pila de AWS CloudFormation.

  4. Cuando ambos rastreadores terminen de ejecutarse, en el panel de navegación, elija Databases (Bases de datos). Se muestra una base de datos denominada appstream-usage, que representa sus informes de uso. Esta base de datos es un catálogo de datos de AWS Glue que se creó cuando se ejecutaron appstream-usage-sessions-crawler y appstream-usage-apps-crawler.

  5. Para ver las tablas de la base de datos, elija appstream-usage, Tables (Tablas). Se muestran dos tablas, applications (aplicaciones) y sessions (sesiones), que representan los informes de uso de aplicaciones y sesiones, respectivamente. Elija una de estas tablas para ver su esquema.

    Ahora puede consultar estas tablas en Athena con SQL.

Creación y ejecución de consultas de Athena

Para consultar sus informes de uso mediante Athena, siga los pasos que se describen a continuación.

nota

Pueden aplicarse cargos por las consultas de Athena que ejecute. Para obtener más información, consulte Precios de Amazon Athena.

  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. En Database (Base de datos), elija appstream-usage.

  3. En el panel de consultas, escriba una consulta SQL y, a continuación, elija Run query (Ejecutar consulta).

Uso de las consultas de Athena

En esta sección se indican las consultas SQL que puede ejecutar en Athena para analizar los datos de los informes de uso en su bucket de Amazon S3.

Para crear un informe consolidado de todas las sesiones en un mes determinado, ejecute la siguiente consulta:

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

También puede realizar operaciones de combinación entre las tablas applicationsy sessions en su consulta. Por ejemplo, para ver los usuarios distintos que lanzaron cada aplicación en un mes determinado, ejecute la siguiente consulta:

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

Los resultados de las consultas de Athena se almacenan como archivos .csv en un bucket de Amazon S3 de su cuenta que se denomina aws-athena-query-results-account-id-without-hyphens-region-code. Para facilitar la localización de los resultados de las consultas, elija Save as (Guardar como) y proporcione un nombre para su consulta antes de ejecutarla. También puede elegir el icono de descarga en el panel Resultados de Athena para descargar los resultados de la consulta como un archivo.csv.

Para mejorar el rendimiento y reducir los costos, Athena utiliza particiones para reducir la cantidad de datos analizados en las consultas. Para obtener más información, consulte la sección sobre partición de datos. Los informes de uso se particionan en sus buckets de Amazon S3 por año, mes y día. Puede restringir sus consultas a determinadas particiones de intervalo de fechas mediante los campos year (año),month( mes) y day (día) como condiciones en sus consultas. Por ejemplo, la siguiente consulta solo utiliza los informes de sesiones de la semana del 19 de mayo de 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

Sin embargo, la siguiente consulta produce resultados idénticos, pero como no está restringida a ninguna partición, utiliza todos los informes de sesiones almacenados en su bucket de Amazon S3.

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

Si una sesión abarca más de un día, los registros de sesión y aplicación aparecen en los informes de sesiones y aplicaciones, respectivamente, correspondientes al día en que finalizó la sesión. Por este motivo, si necesita encontrar registros relacionados con todas las sesiones que han estado activas durante un determinado intervalo de fechas, considere la posibilidad de ampliar el conjunto de particiones de su consulta hasta la duración de sesión máxima que haya configurado para las flotas.

Por ejemplo, para ver todas las sesiones que han estado activas para una determinada flota durante un mes natural, donde la flota tenía una duración de sesión máxima de 100 horas, ejecute la siguiente consulta para ampliar el conjunto de particiones a cinco días.

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

La plantilla de AWS CloudFormation que creó los rastreadores de AWS Glue también creó y guardó varias consultas de ejemplo en su cuenta de Athena que puede utilizar para analizar los datos de uso. Estas consultas de ejemplo son las siguientes:

  • Informe de sesiones mensuales acumuladas

  • Duración media de la sesión por pila

  • Número de sesiones al día

  • Horas de streaming totales por usuario

    nota

    Las cargos por uso bajo demanda se redondean a la siguiente hora para cada sesión.

  • Usuarios distintos por aplicación

Para utilizar cualquiera de estas consultas, siga los pasos que se describen a continuación.

  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. Elija Saved Queries (Consultas guardadas). Se deben mostrar las cinco consultas indicadas anteriormente en este procedimiento. El nombre de cada consulta comienza por "AS2". Por ejemplo, "AS2_users_per_app_curr_mo."

  3. Para ejecutar una consulta, seleccione el nombre de la consulta en lugar de la opción situada junto a su nombre.

  4. El texto de la consulta aparece en el panel de consultas. Elija Ejecutar consulta.

Para ver estas consultas en una plantilla de AWS CloudFormation independiente, consulte athena-sample-queries-appstream-usage-data_template.yml en el Catálogo de ejemplo de código de AWS.