La API de App Optimize te ayuda a analizar tus datos de costos y uso de recursos generando informes. Para obtener esta información, primero debes crear un informe enviando una solicitud a la API. En esta solicitud, defines el alcance de los datos, cómo se deben agregar o agrupar, y los filtros que se deben aplicar.
Cuando el informe esté listo, podrás leer los datos.
Para obtener información sobre los permisos, las dimensiones, las métricas y los filtros disponibles, así como las combinaciones válidas de estos parámetros de configuración, consulta Acerca de los informes.
Antes de comenzar
-
Los ejemplos de esta guía requieren un Google Cloud proyecto con recursos activos Google Cloud para analizar. La API de App Optimize necesita datos de facturación y utilización para producir resultados significativos. Los informes que se ejecuten en proyectos nuevos o vacíos estarán vacíos.
Tú eliges este proyecto, que se identifica con PROJECT_ID. Para simplificar las cosas, en esta guía, tu proyecto alojará el recurso del informe y proporcionará el alcance de los datos.
La API de App Optimize admite la creación de informes en un proyecto que analiza datos de otro proyecto fuente o de aplicaciones en límites de un solo proyecto o a nivel de la carpeta. Si generas un informe sobre una aplicación de App Hub, que puede estar compuesta por varios proyectos, debes tener los permisos de supervisión y facturación necesarios en todos los proyectos asociados de la aplicación para crear el informe.
-
Asegúrate de que la API de App Optimize esté habilitada para el proyecto que usarás para crear y administrar el recurso del informe. En los ejemplos de esta documentación, este es el proyecto identificado por
PROJECT_ID. - Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Verifica que tengas los permisos necesarios para completar esta guía.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Verifica que tengas los permisos necesarios para completar esta guía.
Roles obligatorios
Para obtener los permisos que necesitas para crear un informe con esta guía, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto con recursos activos:
-
Administrador de App Optimize (
roles/appoptimize.admin) - Visualizador de Monitoring (
roles/monitoring.viewer) -
Visualizador (
roles/viewer) (o cualquier otro rol que otorguebilling.resourceCosts.get)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Para obtener más información sobre los permisos y roles necesarios para la API de App Optimize, consulta Control de acceso con IAM.
Crea un informe
En los siguientes pasos, se describe cómo iniciar la creación de informes. En este ejemplo, se crea un informe para ayudarte a comprender los costos y el uso promedio de la CPU del proyecto que elegiste durante la última semana. El informe desglosa esta información por cada recurso individual, incluido el tipo de recurso, el producto del que forma parte y su ubicación. Google Cloud
Para crear el recurso del informe, envía una solicitud POST de HTTP a la ruta del recurso projects.locations.reports de la API de REST.
Sigue estos pasos para crear un informe.
Usa el siguiente comando
curlpara enviar la solicitud. El cuerpo de la solicitud contiene la definición del informe, incluido el alcance, las dimensiones, las métricas y los filtros solicitados.curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "scopes": [ { "project": "projects/PROJECT_ID" } ], "dimensions": [ "location", "product_display_name", "project", "resource", "resource_type" ], "metrics": [ "cost", "cpu_mean_utilization" ], "filter": "hour >= now - duration(\"168h\")" }' \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de Google Cloud .REPORT_ID: Es un ID único para tu nuevo informe, por ejemplo,my-resource-cost-report-1.
La API devuelve un objeto de operación de larga duración (LRO). Toma nota del campo
nameen la respuesta, que usarás para verificar el estado de la operación:{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }En la respuesta, el campo
doneesfalse, lo que indica que la generación del informe está en curso.Para verificar si el informe está listo, envía una solicitud HTTP
GETa la operaciónnameque se devolvió en el paso anterior:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Reemplaza
PROJECT_IDyOPERATION_IDpor los valores de la respuesta del LRO.Examina la respuesta para determinar el estado de la operación:
- Si el informe aún se está generando, la respuesta será similar a la respuesta inicial de LRO, con
doneestablecido enfalse. Debes esperar un período breve, como de 5 a 15 segundos, y volver a sondear repitiendo este paso. Cuando se complete la generación del informe, la respuesta tendrá
"done": truey se incluirá el recurso del informe en el camporesponse:{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.Report", "name": "projects/PROJECT_ID/locations/global/reports/REPORT_ID", "dimensions": [ "location", "product_display_name", "project", "resource", "resource_type" ], "scopes": [ { "project": "projects/PROJECT_ID" } ], "filter": "hour >= now - duration(\"168h\")", "expireTime": "2026-02-05T18:50:25.273833857Z", "metrics": [ "cost", "cpu_mean_utilization" ] } }Si el LRO encuentra un error, la respuesta contendrá un campo
erroren lugar del camporesponse, que proporciona detalles sobre la falla.
- Si el informe aún se está generando, la respuesta será similar a la respuesta inicial de LRO, con
Una vez que la operación se complete correctamente, podrás leer los datos del informe.
Límites de simultaneidad
Cuando creas un informe, la API de App Optimize obtiene datos de costos de la Facturación de Cloud y datos de utilización de Cloud Monitoring para cada target_project del informe.
- En el caso de un informe con alcance para un solo proyecto, ese proyecto es el proyecto objetivo.
- En el caso de una aplicación de App Hub, cada proyecto que contiene un servicio o una carga de trabajo en la aplicación es un proyecto de destino.
La API de App Optimize aplica una cuota de simultaneidad llamada operaciones de Concurrent CreateReport, que permite un máximo de 10 solicitudes simultáneas de datos de informes por proyecto objetivo. Cuando creas un informe, la API de App Optimize calcula la cantidad de proyectos objetivo en el informe y bloquea la cantidad requerida de unidades de cuota hasta que finaliza la LRO para crear el informe.
Es posible que los informes que se completan en menos de unos minutos no se contabilicen en tu límite de simultaneidad debido a la sincronización de la medición a nivel del sistema.
Puedes ver tu actividad actual de la API y administrar estos límites en la página Cuotas y límites del sistema de la consola de Google Cloud .
Si planeas crear varios informes de forma simultánea, ten en cuenta cuándo ejecutan informes tus equipos y cómo se estructuran tus aplicaciones de App Hub:
- Si varios equipos ejecutan informes que incluyen los mismos proyectos objetivo, puedes escalonar las horas de inicio de la creación de informes para cada equipo.
- Las aplicaciones pueden incluir recursos de varios proyectos, y más de una aplicación puede usar recursos de un solo proyecto. La creación de informes simultáneos para estos tipos de aplicaciones genera varias solicitudes a los proyectos de destino.
Por ejemplo, considera un equipo que trabaja en un paquete de aplicaciones para aprender artes creativas, con variantes estándar y premium. En la siguiente tabla, se muestra la lista de aplicaciones en la primera columna. En las columnas restantes, el ícono de marca de verificación () indica que un proyecto contiene servicios o cargas de trabajo para una aplicación que se muestra en la lista.
| Aplicación | common-project | dance-project | draw-project | animate-project | music-project |
|---|---|---|---|---|---|
| dance-app | |||||
| draw-app | |||||
| music-app | |||||
| animate-app | |||||
| choreograph-app | |||||
| storyteller-app | |||||
| dance-premium-app | |||||
| draw-premium-app | |||||
| music-premium-app | |||||
| animate-premium-app | |||||
| choreograph-premium-app | |||||
| storyteller-premium-app |
Si creas informes para los datos de costos y uso de todas las aplicaciones que se indican al mismo tiempo, la API de App Optimize usa más de una unidad de tu límite de simultaneidad en algunos proyectos. En particular, el proyecto compartido common-project recibe 12 solicitudes de datos de costos y uso. Dado que este número supera el límite de simultaneidad, fallarán 2 solicitudes de datos.
Para evitar este problema, el equipo podría ejecutar primero los informes de las versiones estándar de las aplicaciones y, luego, los de la versión premium.
¿Qué sigue?
- Para comprender las dimensiones, las métricas y los filtros, consulta Acerca de los informes.
- Explora otras formas de administrar los informes: