Criar e ler um relatório
Saiba como criar um relatório da API App Optimize sobre seus Google Cloudgastos, monitorar a geração do relatório e ler os dados resultantes quando estiverem prontos. Neste guia de início rápido, você pode usar a API REST ou a biblioteca de cliente Python.
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 estarão vazios.
Neste guia, o projeto identificado como
PROJECT_IDfornece o escopo de dados e hospeda o recurso de relatório.A App Optimize API oferece suporte à criação de relatórios em um projeto que analisa dados de outro projeto ou de aplicativos em limites de projeto único ou de pasta. Para gerar um relatório em 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 para o projeto que você usará para criar e gerenciar o recurso de relatório.
-
Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários 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 de como você planeja usar os exemplos neste documento:
gcloud
No Google Cloud console, ative o Cloud Shell.
Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI 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 em execução em Google Cloud na documentação de autenticação. 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 Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud 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.
Saiba mais em 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 em execução em Google Cloud na documentação de autenticação. Google Cloud
-
REST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a Google Cloud CLI.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud 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 em execução em Google Cloud na documentação de autenticação. Google Cloud
Funções exigidas
Para conseguir as permissões necessárias para criar e ler um relatório usando este guia de início rápido, 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 (
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 personalizados papéis ou outros predefinidos papéis.
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
Este exemplo cria um relatório do gasto total no escolhido PROJECT_ID. O relatório detalha os custos por cada Google Cloud produto usado, como o Compute Engine e o Cloud Storage, e por o SKU e local específicos. O relatório abrange os últimos três dias de dados.
Para criar o recurso de relatório, siga as instruções do seu método preferido:
gcloud
Use o comando gcloud beta app-optimize reports create para criar o relatório.
gcloud beta app-optimize reports create REPORT_ID \
--project=PROJECT_ID \
--location=global \
--dimensions=location,product_display_name,project,sku \
--metrics=cost \
--report-filter='hour >= now - duration("72h")' \
--scopes=project=projects/PROJECT_ID
Substitua:
PROJECT_ID: o ID do Google Cloud projeto.REPORT_ID: um ID exclusivo para o novo relatório, por exemplo,my-first-report
O comando aguarda a conclusão da operação de criação do relatório e retorna o recurso de relatório criado.
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 and prepare a request for a new report
client = appoptimize_v1beta.AppOptimizeClient()
report = appoptimize_v1beta.Report(
dimensions=['location', 'product_display_name', 'project', 'sku'],
metrics=['cost'],
filter='hour >= now - duration("72h")',
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,
)
# Request the creation of the report and wait until the process is done
operation = client.create_report(request=request)
print("Waiting for report creation operation to complete...")
response = operation.result()
print(response)
Substitua:
PROJECT_ID: o ID do Google Cloud projeto.REPORT_ID: um ID exclusivo para o novo relatório, por exemplo,my-first-report.
O método operation.result() aguarda a conclusão da operação de criação do relatório.
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
curlcomando: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", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")" }' \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"Substitua:
PROJECT_ID: o ID do Google Cloud projeto.REPORT_ID: um ID exclusivo para o novo relatório, por exemplo,my-first-report
A API retorna um objeto de operação de longa duração (LRO, na sigla em inglês), que representa o processo de geração de relatórios. Confira um exemplo de resposta:
{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }O status
"done": falseindica que o relatório ainda está sendo gerado. Anote oOPERATION_ID, porque você o usará na próxima etapa.Como a geração de relatórios pode levar tempo, é necessário consultar a LRO até que ela indique que o processo de geração foi concluído e os dados do relatório estão prontos para download.
Para verificar o status do processo de geração, envie uma solicitação HTTP
GETpara o nome do recurso da operação:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Confira a resposta. Se
"done"forfalse, aguarde de 5 a 15 segundos e repita esta etapa. Se"done"fortrue, o relatório estará pronto.Confira a seguir um exemplo de resposta quando a operação for concluída:
{ "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", "scopes": [ { "project": "projects/PROJECT_ID" } ], "dimensions": [ "location", "product_display_name", "project", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")", "expireTime": "2026-02-04T22:05:05Z" } }
Ler os dados do relatório
Para recuperar os dados do relatório, siga as instruções do seu método preferido:
gcloud
Use o seguinte comando gcloud beta app-optimize reports read para buscar os dados do relatório.
gcloud beta app-optimize reports read REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
O código Python a seguir usa AppOptimizeClient.read_report() para buscar os dados do relatório.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
# Create the App Optimize client and read your report's data
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.ReadReportRequest(
name=name,
)
result = client.read_report(request=request)
# Display the report's data
print(result)
REST
Quando a LRO estiver concluída, use o método personalizado :read da API REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
A resposta da API contém as linhas de dados do relatório e as definições de coluna. Confira a seguir um exemplo de resposta bem-sucedida:
{
"rows": [
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "25",
"nanos": 750000000
}
],
[
"us-central1",
"Cloud Storage",
"projects/PROJECT_ID",
"9ADA-9ADC-2FBE",
{
"currency_code": "USD",
"units": "5",
"nanos": 100000000
}
],
[
"europe-west1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "18",
"nanos": 500000000
}
],
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"F61D-4D51-AAFC",
{
"currency_code": "USD",
"units": "12",
"nanos": 200000000
}
]
],
"columns": [
{
"name": "location",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "product_display_name",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "project",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "sku",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "cost",
"type": "RECORD",
"mode": "NULLABLE",
"columns": [
{
"name": "currency_code",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "units",
"type": "INT64",
"mode": "NULLABLE"
},
{
"name": "nanos",
"type": "INT64",
"mode": "NULLABLE"
}
]
}
],
"next_page_token": ""
}
Os relatórios com muitas linhas são paginados. Para processar várias páginas, consulte Ler os dados de um relatório.
Para entender os valores no campo cost, consulte
Interpretar métricas de custo.
Para mais informações sobre os dados e entender as limitações deles, consulte
Entender os dados.
Limpar
A App Optimize API exclui automaticamente o relatório 24 horas após a criação. Para excluir o relatório mais cedo, siga as instruções do seu método preferido:
gcloud
Use o comando gcloud beta app-optimize reports delete para remover o relatório.
gcloud beta app-optimize reports delete REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
O código a seguir usa AppOptimizeClient.delete_report() para remover o relatório.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.DeleteReportRequest(name=name)
client.delete_report(request=request)
print(f"Deleted report: {name}")
REST
Envie uma solicitação HTTP DELETE para o endpoint do recurso do relatório:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"
A seguir
- Saiba mais sobre relatórios.
- Conheça outras maneiras de gerenciar relatórios:
- Consulte a visão geral da API App Optimize.