Use a API – Recomendações

Esta página explica como ver e gerir recomendações no Recommender através de comandos gcloud ou da API REST.

Uma interação típica de recomendações com a API Recommender é:

  1. Listar as recomendações para um projeto específico.

  2. Marque uma recomendação que pretenda aplicar como claimed ou marque uma recomendação que não pretenda aplicar como dismissed.

  3. Aplique a recomendação. Pode fazê-lo automaticamente com o Active Assist na Google Cloud consola ou manualmente com os comandos da Google Cloud CLI, as chamadas da API REST ou outras ferramentas.

    Quando aplica manualmente a recomendação, os comandos ou as chamadas que usa são específicos do tipo de recurso. Por exemplo, para alterar o tamanho de uma instância de VM em resposta a uma recomendação do recomendador de dimensionamento de instâncias de VM, usa comandos do Compute Engine gcloud ou chamadas para a API REST do Compute Engine.

    Quando realiza estas operações, identifica o recurso de destino através do valor do campo resource na matriz OperationsGroup na entidade Recommendation devolvida. Este campo está no seguinte formato:

    //API_NAME/RESOURCE_PATH

    Por exemplo:

    //compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1
  4. Marque a recomendação como succeeded ou failed.

Tenha em atenção que só é possível interagir com as recomendações obtidas através da API usando a API ou o BigQuery Export.

Para obter informações sobre como alterar o estado das recomendações na Google Cloud consola, consulte a documentação do Active Assist ou do recomendador adequado.

Defina o projeto predefinido

Defina o projeto predefinido, caso ainda não o tenha feito:

gcloud config set project PROJECT_ID

onde PROJECT_ID é o ID do seu projeto.

Defina variáveis de ambiente

Defina variáveis de ambiente para interações do Recommender:

PROJECT=TARGET_PROJECT_ID
LOCATION=LOCATION_ID
RECOMMENDER=RECOMMENDER_ID

where:

  • TARGET_PROJECT_ID é o projeto cujas recomendações quer listar. Este pode ser um projeto diferente do seu projeto atual.

    • Para comandos gcloud, tem de usar o ID do projeto
    • Para pedidos de API, pode usar o número do projeto ou o ID do projeto. Recomendamos que indique o número do projeto.

    O número do projeto é devolvido nas respostas da API e dos gcloud comandos.

  • LOCATION_ID é a Google Cloud localização onde os recursos associados às recomendações estão localizados (por exemplo, global ou us-central1-a).

  • RECOMMENDER_ID é o ID do recomendador totalmente qualificado (por exemplo, google.compute.instance.MachineTypeRecommender).

Consulte Recomendadores para ver uma tabela de links para informações sobre cada recomendador, incluindo localizações suportadas e IDs de recomendadores.

Defina autorizações

Tem de ter autorizações para aceder às recomendações no projeto de destino.

  • Para requerentes que incluam um projeto de faturação no respetivo pedido. O projeto usado no pedido tem de estar em conformidade, e o utilizador tem de ter uma função no projeto que contenha a autorização serviceusage.services.use. A função Consumidor de utilização de serviços contém a autorização necessária.
  • Cada recomendador requer autorizações específicas. Consulte a secção Recomendadores para ver uma tabela de links para informações sobre cada recomendador, incluindo as autorizações necessárias.

Recomendações de listas

Conforme mostrado no separador gcloud Beta, pode listar todas as recomendações do seu projeto sem ter de especificar uma localização e um recomendador. Esta funcionalidade está em pré-visualização.

A funcionalidade de IA generativa requer que especifique um projeto, uma localização e um motor de recomendações. Para ver detalhes, consulte o separador gcloud.

gcloud Beta

Introduza os seguintes dados:

gcloud beta recommender recommendations list \
    --project=${PROJECT} \
    --format=FORMAT

onde FORMAT é um gcloud formato de saída suportado, como json.

Por exemplo:

gcloud beta recommender recommendations list \
    --project=example-project \
    --format=json

gcloud

Introduza os seguintes dados:

gcloud recommender recommendations list \
    --project=${PROJECT} \
    --location=${LOCATION} \
    --recommender=${RECOMMENDER} \
    --format=FORMAT

onde FORMAT é um gcloud formato de saída suportado (por exemplo, json).

Por exemplo:

gcloud recommender recommendations list \
    --project=example-project \
    --location=us-central1-a \
    --recommender=google.compute.instance.MachineTypeRecommender \
    --format=json

REST

Introduza os seguintes dados:

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
    -H "x-goog-user-project: ${PROJECT}" \
    "https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations"

Por exemplo:

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
    -H "x-goog-user-project: example-project" \
    "https://recommender.googleapis.com/v1/projects/example-project/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations"

Esta operação produz as recomendações de dimensionamento da instância de VM atual no projeto de destino como uma lista de Recommendation entidades no formato especificado.

O resultado é semelhante ao seguinte:

[
  {
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "test",
              "path": "/machineType",
              "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1",
              "resourceType": "compute.googleapis.com/Instance",
              "valueMatcher": {
                "matchesPattern": ".*zones/us-central1-a/machineTypes/n1-standard-4"
              }
            },
            {
              "action": "replace",
              "path": "/machineType",
              "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1",
              "resourceType": "compute.googleapis.com/Instance",
              "value": "zones/us-central1-a/machineTypes/custom-2-5120"
            }
          ]
        }
      ]
    },
    "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.",
    "etag": "\"280b34810bba8a1a\"",
    "lastRefreshTime": "2019-06-28T06:49:21Z",
    "name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
    "primaryImpact": { ... },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "recommenderSubtype": "CHANGE_MACHINE_TYPE"
  }
]

Tenha em atenção que as recomendações devolvidas incluem os seguintes campos:

  • Um campo name no seguinte formato:

    projects/PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations/RECOMMENDATION_ID

    em que RECOMMENDATION_ID identifica exclusivamente a recomendação

  • Um campo etag associado ao estado atual da recomendação.

Quando faz referência a uma recomendação através de comandos Google Cloud CLI subsequentes ou chamadas à API REST, faz referência ao ID da recomendação e à etag, o que garante que as operações só são realizadas se a recomendação não tiver sido modificada desde a última vez que a recuperou.

Altere o estado de uma recomendação

Pode marcar uma recomendação como reivindicada para indicar que pretende aplicar as alterações recomendadas ao recurso associado. Quando uma recomendação é reivindicada, o seu nome de utilizador é atribuído como o autor da recomendação e o Recommender não atualiza a recomendação com conteúdo mais recente.

Pode marcar uma recomendação como ignorada para indicar que não pretende aplicar as alterações recomendadas ao recurso associado ou que não quer continuar a ver a recomendação. Quando uma recomendação é ignorada, deixa de aparecer como uma recomendação ATIVA. O sistema de recomendações pode continuar a atualizar a recomendação com conteúdo mais recente.

Depois de aplicar uma recomendação, pode marcá-la como bem-sucedida ou com falhas.

Para alterar o estado de uma recomendação, conclua os seguintes passos:

gcloud

Introduza os seguintes dados:

gcloud recommender recommendations STATE_CHANGE \
    RECOMMENDATION_ID \
    --project=${PROJECT} \
    --location=${LOCATION} \
    --recommender=${RECOMMENDER} \
    --etag=ETAG \
    --state-metadata=STATE_METADATA \
    --format=FORMAT

Onde

  • STATE_CHANGE é a alteração que quer fazer a uma recomendação. Os valores válidos são:
    • mark-claimed para marcar a recomendação como reivindicada.
    • mark-dismissed para marcar a recomendação como ignorada.
    • mark-succeeded para marcar a recomendação como bem-sucedida.
    • mark-failed para marcar a recomendação como falhada.
  • RECOMMENDATION_ID é o ID de uma recomendação que obteve de uma chamada anterior para listar recomendações.
  • ETAG é a etag devolvida que representa o estado da recomendação
  • STATE_METADATA são metadados opcionais sobre a operação. Especifique os metadados como uma lista separada por vírgulas de pares KEY=VALUE. Esta opção está disponível quando marca uma recomendação como reivindicada, bem-sucedida ou com falha.

Por exemplo:

gcloud recommender recommendations mark-succeeded \
    a523ff7e-ed03-4143-a3a5-5b396b99cba9 \
    --project=example-project \
    --location=us-central1-a \
    --recommender=google.compute.instance.MachineTypeRecommender \
    --etag='"5e3a63cccf1e0964"' \
    --state-metadata=priority=high,tracking_number=12345 \
    --format=json

REST

Introduza o seguinte

curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: ${PROJECT}" \
    --data-binary @- \
    https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations/RECOMMENDATION_ID:STATE_CHANGE \
<< EOM
{
  "etag": "ETAG"
  "stateMetadata": STATE_METADATA
}
EOM

where:

  • RECOMMENDATION_ID é o ID de uma recomendação que obteve de uma chamada anterior para listar recomendações.
  • STATE_CHANGE é a alteração que quer fazer a uma recomendação. Os valores válidos são:
    • markClaimed para marcar a recomendação como reivindicada.
    • markDismissed para marcar a recomendação como ignorada.
    • markSucceeded para marcar a recomendação como bem-sucedida.
    • markFailed para marcar a recomendação como falhada.
  • ETAG é a etag devolvida que representa o estado da recomendação
  • STATE_METADATA é um campo opcional com metadados adicionais acerca da operação. Especifique os metadados como pares key:value. Este campo está disponível quando marca uma recomendação como reivindicada, com êxito ou com falha.

Por exemplo:

curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: example-project" \
    --data-binary @- \
    https://recommender.googleapis.com/v1/projects/example-project/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/8f20d509-83d2-45d2-8152-1b8d5d7d5831:markSucceeded \
<< EOM
{
  "etag": "\"280b34810bba8a1a\""
  "stateMetadata": {
    "priority" : "high",
    "tracking_number": "12345"
  }
}
EOM

Esta operação devolve a entidade Recommendation no formato especificado após a operação ter sido realizada.

O resultado é semelhante ao seguinte:

{
  "content": {
    "operationGroups": [ ... ]
  },
  "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.",
  "etag": "\"5e3a63cccf1e053c\"",
  "lastRefreshTime": "2019-06-28T06:49:21Z",
  "name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
  "primaryImpact": { ... },
  "stateInfo": {
    "state": "SUCCEEDED",
    "stateMetadata": {
      "priority" : "high",
      "tracking_number": "12345"
    }
  }
}

Tenha em atenção que o valor do campo state foi alterado para SUCCEEDED.