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 para analizar. La API de App Optimize necesita datos de facturación y uso para producir resultados significativos. Los informes que se ejecuten en proyectos nuevos o vacíos estarán vacíos.
En esta guía, el proyecto identificado como
PROJECT_IDproporciona el alcance de los datos y aloja el recurso del informe.La API de App Optimize admite la creación de informes en un proyecto que analizan datos de otro proyecto o de aplicaciones en límites de un solo proyecto o a nivel de la carpeta. Para generar 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.
-
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.
Verify that you have the permissions required to complete this guide.
Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de este documento:
gcloud
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell que muestra una ventana emergente con una línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Para obtener información sobre cómo configurar la autenticación para un entorno de producción, consulta Configura las credenciales predeterminadas de la aplicación para el código que se ejecuta en Google Cloud en la documentación de autenticación de Google Cloud .
Python
- Instala la biblioteca cliente de Python para la API de App Optimize.
-
Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa la gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad (IdP) externo, primero debes acceder a gcloud CLI con tu identidad federada.
-
Si usas un shell local, crea credenciales de autenticación locales para tu cuenta de usuario:
gcloud auth application-default login
No es necesario que lo hagas si usas Cloud Shell.
Si se devuelve un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .
Para obtener información sobre cómo configurar la autenticación para un entorno de producción, consulta Configura las credenciales predeterminadas de la aplicación para el código que se ejecuta en Google Cloud en la documentación de autenticación de Google Cloud .
-
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .
Para obtener información sobre cómo configurar la autenticación para un entorno de producción, consulta Configura las credenciales predeterminadas de la aplicación para el código que se ejecuta en Google Cloud en la documentación de autenticación de Google Cloud .
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, sigue las instrucciones del método que prefieras:
gcloud
Usa el siguiente comando de gcloud beta app-optimize reports create para crear tu informe.
gcloud beta app-optimize reports create REPORT_ID \
--project=PROJECT_ID \
--location=global \
--dimensions=location,product_display_name,project,resource,resource_type \
--metrics=cost,cpu_mean_utilization \
--report-filter='hour >= now - duration("168h")' \
--scopes=project=projects/PROJECT_ID
Reemplaza lo siguiente:
REPORT_ID: Es un ID único para tu nuevo informe, por ejemplo,my-resource-cost-report-1.PROJECT_ID: Es el ID del proyecto de Google Cloud .
El comando para crear un informe espera automáticamente a que se complete la operación.
Python
El siguiente código de Python usa AppOptimizeClient.create_report() para crear un informe.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
# Create the App Optimize client
client = appoptimize_v1beta.AppOptimizeClient()
# Initialize the report request
report = appoptimize_v1beta.Report(
dimensions=['location', 'product_display_name', 'project', 'resource', 'resource_type'],
metrics=['cost', 'cpu_mean_utilization'],
filter='hour >= now - duration("168h")',
scopes=[
appoptimize_v1beta.Scope(project=f"projects/{project_id}"),
],
)
request = appoptimize_v1beta.CreateReportRequest(
parent=f"projects/{project_id}/locations/global",
report=report,
report_id=report_id,
)
# Send the request and wait for completion
operation = client.create_report(request=request)
print("Waiting for operation to complete...")
response = operation.result()
print(response)
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-first-report.
El método operation.result() de la biblioteca cliente espera automáticamente a que se complete la operación. No se requiere un bucle de sondeo manual.
REST
Envía una solicitud POST HTTP a la ruta de recursos projects.locations.reports de la API de REST.
Para enviar la solicitud, usa el siguiente comando de
curl: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: