Crie um relatório

A App Optimize API ajuda a analisar os dados de custo e utilização de recursos gerando relatórios. Para receber essas informações, 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 escopos, dimensões, métricas e filtros disponíveis, além de combinações válidas dessas configurações, consulte Sobre relatórios.

Antes de começar

  1. 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.

    Esse projeto é escolhido por você e é identificado por PROJECT_ID. Para simplificar, neste guia, seu projeto vai hospedar o recurso de relatório e fornecer o escopo de dados.

    A App Optimize API oferece suporte à criação de relatórios em um projeto que analisa dados de um projeto de origem diferente ou de aplicativos em limites de projeto único ou de pasta. Se você estiver gerando um relatório em um aplicativo do App Hub, que pode ser composto por vários projetos, será necessário ter as permissões de monitoramento e faturamento necessárias em todos os projetos associados do aplicativo para criar o relatório.

  2. Verifique se a App Optimize API está ativada para o projeto que você usará para criar e gerenciar o recurso de relatório. Nos exemplos desta documentação, esse é o projeto identificado por PROJECT_ID.
  3. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  4. Instale a Google Cloud CLI.

  5. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. Verifique se você tem as permissões necessárias para concluir este guia.

  8. Instale a Google Cloud CLI.

  9. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  10. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  11. Verifique se você tem as permissões necessárias para concluir este guia.

Funções exigidas

Para ter as permissões necessárias para 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:

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

As etapas a seguir descrevem como iniciar a criação de relatórios. 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 a que ele pertence e a localização. Google Cloud

Para criar o recurso de relatório, envie uma solicitação HTTP POST para o caminho do recurso projects.locations.reports da API REST.

Siga estas etapas para criar um relatório.

  1. Use o comando curl a seguir para enviar a solicitação. O corpo da solicitação contém a definição do relatório, incluindo o escopo, as dimensões, as métricas e os 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"
    

    Substitua:

    • PROJECT_ID: o ID do Google Cloud projeto.
    • REPORT_ID: um ID exclusivo para o novo relatório, por exemplo, my-resource-cost-report-1.

    A API retorna um objeto de operação de longa duração (LRO, na sigla em inglês). Anote o campo name na resposta, que você 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 de relatórios está em andamento.

  2. Para verificar se o relatório está pronto, envie uma solicitação HTTP GET para o name da operação retornado 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_ID e OPERATION_ID pelos valores da resposta LRO.

    Examine a resposta para determinar o status da operação:

    • Se o relatório ainda estiver sendo gerado, a resposta será semelhante à resposta LRO inicial, com done definido como false. Aguarde um breve período, como 5 a 15 segundos, e faça uma nova pesquisa repetindo esta etapa.
    • Quando a geração de relatórios for concluída, a resposta terá "done": true e incluirá o recurso de relatório no response campo:

      {
        "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 error em vez do campo response, fornecendo detalhes sobre a falha.

Quando a operação for concluída, você poderá ler os dados do relatório.

Limites de simultaneidade

Ao criar 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 em um único projeto, esse projeto é o projeto 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 Simultâneas operações CreateReport, que permite um máximo de 10 solicitações simultâneas de dados de relatório por projeto de destino. Ao criar 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 concluídos em menos de alguns minutos podem não ser contabilizados no limite de simultaneidade devido ao tempo de medição no nível do sistema.

É possível conferir sua atividade atual da API e gerenciar esses limites na página Cotas e limites do sistema no Google Cloud console.

Se você planeja criar vários relatórios simultaneamente, considere quando suas equipes executam relatórios e como seus aplicativos do App Hub sã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 de relatórios simultâneos para esses tipos de aplicativos resulta em várias solicitações para projetos de destino.

Por exemplo, considere uma equipe que trabalha em um conjunto 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, o ícone de 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 App Optimize API usará mais de uma unidade do 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, 2 das solicitações de dados vão falhar.

Para evitar esse problema, a equipe pode executar relatórios para as versões padrão dos aplicativos primeiro e, em seguida, executar relatórios para a versão premium.

A seguir