A App Optimize API ajuda a analisar seus dados de custo e utilização de recursos gerando relatórios. Para isso, primeiro crie um relatório enviando uma solicitação de API. Nessa solicitação, você define o escopo dos dados, como eles devem ser agregados ou agrupados e os filtros a serem aplicados.
Quando o relatório estiver pronto, você poderá ler os dados.
Para informações sobre os escopos, dimensões, métricas e filtros disponíveis, além de combinações válidas dessas configurações, consulte Sobre os relatórios.
Antes de começar
Os exemplos neste guia exigem um Google Cloud projeto com recursos ativos para análise. A API App Optimize precisa de dados de faturamento e utilização para produzir resultados significativos. Os relatórios executados em projetos novos ou vazios vão ficar vazios.
Neste guia, o projeto identificado como
PROJECT_IDfornece o escopo de dados e hospeda o recurso de relatório.A API App Optimize permite criar relatórios em um projeto que analisam dados de outro projeto ou de aplicativos em limites de projeto único ou no nível da pasta. Para gerar um relatório sobre um aplicativo do App Hub, que pode ser composto por vários projetos, você precisa ter as permissões de monitoramento e faturamento necessárias em todos os projetos associados do aplicativo para criar o relatório.
Verifique se a App Optimize API está ativada no projeto que você vai usar para criar e gerenciar o recurso de relatório.
-
Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
Verify that you have the permissions required to complete this guide.
Selecione a guia para definir como você quer usar as amostras neste documento:
gcloud
No console do Google Cloud , ative o Cloud Shell.
Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Para informações sobre como configurar a autenticação em um ambiente de produção, consulte Configurar o Application Default Credentials para código executado em Google Cloud na documentação de autenticação do Google Cloud .
Python
- Instale a biblioteca de cliente Python para a App Optimize API.
-
Para usar os exemplos do Python nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Para informações sobre como configurar a autenticação em um ambiente de produção, consulte Configurar o Application Default Credentials para código executado em Google Cloud na documentação de autenticação do Google Cloud .
-
REST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
Para informações sobre como configurar a autenticação em um ambiente de produção, consulte Configurar o Application Default Credentials para código executado em Google Cloud na documentação de autenticação do Google Cloud .
Funções exigidas
Para ter as permissões necessárias a fim de criar um relatório usando este guia, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto com recursos ativos:
-
Administrador do App Optimize (
roles/appoptimize.admin) -
Leitor do monitoramento (
roles/monitoring.viewer) -
Leitor (
roles/viewer) ou outro papel que concedabilling.resourceCosts.get
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Para mais informações sobre as permissões e os papéis necessários para a App Optimize API, consulte Controle de acesso com o IAM.
Crie um relatório
As etapas a seguir descrevem como iniciar a criação de um relatório. Este exemplo cria um relatório para ajudar você a entender os custos e o uso médio da CPU do projeto escolhido na última semana. O relatório detalha essas informações por recurso individual, incluindo o tipo de recurso, o produto Google Cloud de que ele faz parte e a localização.
Para criar o recurso de relatório, siga as instruções do seu método preferido:
gcloud
Use o seguinte comando gcloud beta app-optimize reports create para criar seu relatório.
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
Substitua:
REPORT_ID: um ID exclusivo para seu novo relatório. Por exemplo,my-resource-cost-report-1.PROJECT_ID: o ID do projeto Google Cloud .
O comando para criar um relatório aguarda automaticamente a conclusão da operação.
Python
O código Python a seguir usa AppOptimizeClient.create_report()
para criar um relatório.
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)
Substitua:
PROJECT_ID: o ID do projeto Google Cloud .REPORT_ID: um ID exclusivo para seu novo relatório. Por exemplo,my-first-report.
O método operation.result() na biblioteca de cliente aguarda automaticamente
a conclusão da operação. Não é necessário um loop de polling manual.
REST
Envie uma solicitação HTTP POST para o caminho do recurso projects.locations.reports
da API REST.
Para enviar a solicitação, use o seguinte comando
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"Substitua:
PROJECT_ID: o ID do projeto Google Cloud .REPORT_ID: um ID exclusivo para seu novo relatório. Por exemplo,my-resource-cost-report-1.
A API retorna um objeto de operação de longa duração (LRO). Anote o campo
namena resposta, que você vai usar para verificar o status da operação:{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }Na resposta, o campo
doneéfalse, indicando que a geração do relatório está em andamento.Para verificar se o relatório está pronto, envie uma solicitação HTTP
GETpara a operaçãonameretornada na etapa anterior:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Substitua
PROJECT_IDeOPERATION_IDpelos valores da resposta da LRO.Examine a resposta para determinar o status da operação:
- Se o relatório ainda estiver sendo gerado, a resposta será semelhante à resposta inicial da LRO, com
donedefinido comofalse. Aguarde um curto período, como de 5 a 15 segundos, e faça a pesquisa novamente repetindo esta etapa. Quando a geração do relatório for concluída, a resposta terá
"done": truee incluirá o recurso de relatório no 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" ] } } ```Se a LRO encontrar um erro, a resposta vai conter um campo
errorem vez do camporesponse, fornecendo detalhes sobre a falha.
- Se o relatório ainda estiver sendo gerado, a resposta será semelhante à resposta inicial da LRO, com
Depois que a operação for concluída, você poderá ler os dados do relatório.
Limites de simultaneidade
Quando você cria um relatório, a API App Optimize recebe dados de custo do Cloud Billing e dados de utilização do Cloud Monitoring para cada target_project do relatório.
- Para um relatório com escopo de um único projeto, esse projeto é o de destino.
- Para um aplicativo do App Hub, cada projeto que contém um serviço ou carga de trabalho no aplicativo é um projeto de destino.
A API App Optimize aplica uma cota de simultaneidade chamada Operações ConcurrentCreateReport, que permite um máximo de 10 solicitações simultâneas de dados de relatórios por projeto de destino. Quando você cria um relatório, a API App Optimize calcula o número de projetos de destino no relatório e bloqueia o número necessário de unidades de cota até que a LRO para criar o relatório seja concluída.
Os relatórios que são concluídos em menos de alguns minutos podem não ser contabilizados no limite de simultaneidade devido à medição no nível do sistema.
É possível conferir sua atividade atual de API e gerenciar esses limites na página Cotas e limites do sistema no console do Google Cloud .
Se você planeja criar vários relatórios simultaneamente, considere quando suas equipes executam relatórios e como seus aplicativos do App Hub estão estruturados:
- Se várias equipes executarem relatórios que incluem os mesmos projetos de destino, você poderá escalonar os horários de início da criação de relatórios para cada equipe.
- Os aplicativos podem incluir recursos de vários projetos, e mais de um aplicativo pode usar recursos de um único projeto. A criação simultânea de relatórios para esses tipos de aplicativos resulta em várias solicitações para projetos de destino.
Por exemplo, considere uma equipe que trabalha em um pacote de aplicativos para aprender artes criativas, com variantes padrão e premium. A tabela a seguir mostra a lista de aplicativos na primeira coluna. Nas colunas restantes, a marca de seleção () indica que um projeto contém serviços ou cargas de trabalho para um aplicativo listado.
| Aplicativo | 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 |
Se você criar relatórios de dados de custo e utilização para todos os aplicativos listados ao mesmo tempo, a API App Optimize vai usar mais de uma unidade do seu limite de simultaneidade em alguns projetos. Em particular, o projeto compartilhado
common-project recebe 12 solicitações de dados de custo e utilização. Como esse número excede o limite de simultaneidade, duas solicitações de dados vão falhar.
Para evitar esse problema, a equipe pode gerar relatórios primeiro para as versões padrão dos aplicativos e depois para a versão premium.
A seguir
- Para entender dimensões, métricas e filtros, consulte Sobre os relatórios.
- Conheça outras maneiras de gerenciar relatórios: