Analisar seu aplicativo usando métricas

Neste guia de início rápido, mostramos como usar o Cloud Deploy para analisar o serviço do Cloud Run implantado com base nas métricas do Google Cloud Observability e garantir que o aplicativo esteja funcionando como esperado.

Neste guia de início rápido, você fará o seguinte:

  1. Crie e implante um serviço do Cloud Run.

    Nesse caso, você não vai usar o Cloud Deploy para implantar.

  2. Crie uma verificação de tempo de atividade no Google Cloud Observability.

    Essa verificação monitora seu serviço do Cloud Run para garantir que ele esteja em execução.

  3. Crie uma política de alertas no Cloud Monitoring.

    Por padrão, a análise do Cloud Deploy pode usar vários tipos de métricas do Google Cloud Observability. Essa política cria um alerta se uma verificação de tempo de atividade indicar um problema.

  4. Crie uma configuração do Skaffold para identificar o serviço do Cloud Run.

  5. Defina o pipeline de entrega e o destino do Cloud Deploy.

    Esse pipeline inclui apenas um estágio e um destino, além da definição de uma tarefa de análise.

  6. Crie uma versão, que é implantada automaticamente no destino.

    Depois que o aplicativo é implantado, a análise é executada como um job no lançamento.

    O serviço será implantado com sucesso no destino, mas o lançamento vai falhar porque a política de alertas vai gerar um alerta.

  7. Mude a definição do serviço do Cloud Run para aumentar a contagem de instâncias do serviço e crie uma nova versão.

    Desta vez, o serviço será implantado com sucesso, e o lançamento será concluído.

Antes de começar

  • 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.
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  • Verify that billing is enabled for your Google Cloud project.

  • Ative as APIs Cloud Deploy, Cloud Build, Cloud Run e Cloud Storage.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar as APIs

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

  • Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  • Verify that billing is enabled for your Google Cloud project.

  • Ative as APIs Cloud Deploy, Cloud Build, Cloud Run e Cloud Storage.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar as APIs

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

  • Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  • Funções exigidas

    Para garantir que a conta de serviço do Cloud Deploy tenha as permissões necessárias para executar operações do Cloud Deploy e fazer implantações no Cloud Run, peça ao administrador para conceder os seguintes papéis do IAM à conta de serviço do Cloud Deploy no seu projeto:

    Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    O administrador também pode conceder à conta de serviço do Cloud Deploy as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

    Saiba mais sobre a conta de serviço do Cloud Deploy.

    Implantar um serviço do Cloud Run

    Este guia de início rápido usa uma política de alertas que exige que o Cloud Run já exista. Vamos implantar um aqui e, em uma seção posterior, vamos definir um service.yaml usando o mesmo nome de serviço.

    Execute o comando a seguir para criar o serviço inicial:

    gcloud run deploy my-analysis-run-service \
      --image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
      --project=PROJECT_ID \
      --region=us-central1 \
      --allow-unauthenticated
    

    Substitua PROJECT_ID pela ID do seu projeto.

    Criar uma verificação de tempo de atividade do Google Cloud Observability

    Essa verificação monitora o serviço em execução para confirmar que ele está funcionando. Em uma seção posterior, você vai criar uma política de alertas do Google Cloud Observability que gera um alerta se o serviço não tiver pelo menos uma instância disponível em execução.

    1. Para criar a verificação de tempo de atividade, execute o seguinte comando:

      gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \
        --resource-type=cloud-run-revision \
        --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \
        --project=PROJECT_ID \
        --protocol=https \
        --path="/" \
        --port=443 \
        --period=1 \
        --timeout=10 \
        --service-agent-auth="oidc-token" \
        --status-classes="2xx"
      
    2. Copie o ID da verificação de tempo de atividade.

      A saída do comando que você acabou de executar contém o ID.

    Preparar a configuração do Skaffold e a definição de serviço

    Neste guia de início rápido, você cria um arquivo skaffold.yaml, que identifica o manifesto a ser usado para implantar o serviço de amostra do Cloud Run, e também define o arquivo service.yaml que define o próprio Cloud Run.

    1. Abra uma janela do terminal.

    2. Crie um novo diretório e navegue até ele.

    mkdir deploy-analysis-run-quickstart
    cd deploy-analysis-run-quickstart
    
    1. Crie um arquivo chamado skaffold.yaml com o seguinte conteúdo:
    apiVersion: skaffold/v4beta7
    kind: Config
    manifests:
      rawYaml:
      - service.yaml
    deploy:
      cloudrun: {}
    

    Consulte a referência do skaffold.yaml para mais informações sobre esse arquivo de configuração.

    1. Crie um arquivo chamado service.yaml com o seguinte conteúdo:
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: my-analysis-run-service
      annotations:
        run.googleapis.com/scalingMode: manual
        run.googleapis.com/manualInstanceCount: 0
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    Esse arquivo é uma definição de serviço do Cloud Run, que é usada para implantar o aplicativo. A imagem do contêiner a ser implantada é definida aqui como um marcador de posição, my-app-image, que é substituído pela imagem específica quando você cria o lançamento.

    Observe que definimos o modo de escalonamento como manual e a contagem de instâncias como 0. Isso significa que o serviço implantado não poderá receber tráfego e não haverá instâncias em execução, o que vai acionar um alerta. Você vai configurar esse alerta em seguida.

    Criar uma política de alertas

    Este guia de início rápido usa uma política de alertas do Google Cloud Observability. Essa política de alertas gera um alerta quando o serviço do Cloud Run falha na verificação de tempo de atividade que você criou anteriormente.

    1. No diretório deploy-analysis-run-quickstart, crie um arquivo chamado policy.yaml com o seguinte conteúdo:

      displayName: Cloud Run service uptime check
      userLabels:
        policy-for: analysis-run-pipeline
      combiner: OR
      conditions:
      - displayName: Failure of uptime check UPTIME_ID
        conditionThreshold:
          filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision"
          aggregations:
          - alignmentPeriod: 60s
            crossSeriesReducer: REDUCE_COUNT_FALSE
            groupByFields:
            - resource.label.*
            perSeriesAligner: ALIGN_NEXT_OLDER
          comparison: COMPARISON_GT
          duration: 60s
          thresholdValue: 1.0
      

      Substitua UPTIME_ID pelo ID da verificação de tempo de atividade que você criou antes.

    2. Execute o comando a seguir para criar a política:

      gcloud monitoring policies create \
        --policy-from-file=policy.yaml\
        --project=PROJECT_ID
      

      Substitua PROJECT_ID pela ID do seu projeto.

    3. Copie o ID da política da saída do comando que você acabou de executar.

      Desta vez, copie todo o ID do recurso, incluindo o caminho. Você vai usar esse ID na próxima seção, na configuração de análise do pipeline de entrega.

    Criar o pipeline e o destino de entrega

    Este pipeline de entrega tem uma etapa para um destino: analysis-staging.

    1. No diretório deploy-analysis-run-quickstart, crie um novo arquivo, clouddeploy.yaml, com o seguinte conteúdo:

      apiVersion: deploy.cloud.google.com/v1
      kind: DeliveryPipeline
      metadata:
        name: deploy-analysis-demo-app-run
      description: main application pipeline
      serialPipeline:
        stages:
        - targetId: analysis-staging
          profiles: []
          strategy:
            standard:
              analysis:
                duration: 300s
                googleCloud:
                  alertPolicyChecks:
                  - id: check-1
                    alertPolicies:
                    - ALERT_POLICY_ID
      ---
      
      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
        name: analysis-staging
      description: staging Run service
      run:
        location: projects/PROJECT_ID/locations/us-central1
      

      Neste YAML, substitua ALERT_POLICY_ID pela saída do comando gcloud monitoring policies list que você executou anteriormente e substitua PROJECT_ID pelo ID do projeto que você está usando.

    2. Registre o pipeline e o destino com o serviço do Cloud Deploy:

      gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
      

      Agora você tem um pipeline de entrega com um destino pronto para implantar seu aplicativo.

    3. Confirme o pipeline e o destino:

      No console Google Cloud , navegue até a página Pipelines de entrega do Cloud Deploy para conferir a lista dos seus pipelines de entrega disponíveis.

      Abrir a página "Pipelines de entrega"

      O pipeline de entrega que você acabou de criar é mostrado, com um destino listado na coluna Destinos.

      Página do pipeline de entrega no console do Google Cloud , mostrando seu pipeline

    Criar uma versão

    Uma versão é o recurso central do Cloud Deploy que representa as mudanças que estão sendo implantadas. O pipeline de entrega define o ciclo de vida dessa versão. Consulte Arquitetura de serviço do Cloud Deploy para mais detalhes sobre esse ciclo de vida.

    Execute o seguinte comando no diretório deploy-analysis-run-quickstart para criar um recurso release que representa a imagem do contêiner a ser implantada:

    gcloud deploy releases create test-release-001 \
      --project=PROJECT_ID \
      --region=us-central1 \
      --delivery-pipeline=deploy-analysis-demo-app-run \
      --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
    

    Observe a flag --images=, que você usa para substituir o marcador de posição (my-app-image) na definição de serviço pela imagem específica qualificada por SHA. O Google recomenda que você crie modelos para as definições de serviço dessa forma e use nomes de imagens qualificados por SHA na criação de versões.

    Assim como em todas as versões (a menos que incluam --disable-initial-rollout), o Cloud Deploy também cria automaticamente um recurso de implantação. O aplicativo é implantado automaticamente no único destino configurado para esse pipeline de entrega.

    Conferir os resultados no console do Google Cloud

    Após alguns minutos, a versão será implantada no ambiente de execução de destino. Você pode visualizar o item.

    1. No console Google Cloud , navegue até a página Pipelines de entrega do Cloud Deploy para conferir seu pipeline de entrega ("deploy-analysis-demo-app-run").

      Abrir a página "Pipelines de entrega"

    2. Clique no nome do pipeline de entrega ("deploy-analysis-demo-app-run").

      A visualização do pipeline mostra o status de implantação do app. Como há apenas um estágio no pipeline, a visualização mostra apenas um nó.

      Visualização do pipeline de entrega mostrando sucesso

      E sua versão é listada na guia Versões em Detalhes do pipeline de entrega.

    3. Clique na guia Rollouts, em Detalhes do pipeline de entrega.

    4. Clique no nome do lançamento para conferir os detalhes.

      A análise é listada como um job.

      implantações no console Google Cloud

    Uma análise com falha

    O job de análise especificado na configuração do pipeline de entrega é executado como parte desse lançamento, depois que o aplicativo é implantado. Essa análise vai falhar porque a política de alertas precisa acionar um alerta. O lançamento vai falhar devido a essa falha na análise.

    Vamos fazer uma mudança e criar outra versão, que deve ser bem-sucedida.

    Mudar a definição de serviço e criar um novo lançamento

    Agora, vamos mudar a contagem de instâncias na definição de serviço para que haja uma instância em execução do serviço e o alerta não seja acionado.

    1. Edite o arquivo de definição do Cloud Run, service.yaml, para mudar o valor de run.googleapis.com/manualInstanceCount de 0 para 1.

    2. Execute o comando a seguir no mesmo diretório deploy-analysis-run-quickstart para criar outro release:

      gcloud deploy releases create test-release-002 \
        --project=PROJECT_ID \
        --region=us-central1 \
        --delivery-pipeline=deploy-analysis-demo-app-run \
        --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
      

    Desta vez, o lançamento vai ser bem-sucedido. Isso acontece porque o serviço do Cloud Run agora tem uma instância em execução, então a verificação de tempo de atividade não vai invocar um alerta da política de alertas.

    Limpar

    Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.

    1. Exclua o serviço do Cloud Run:

      gcloud run services delete my-analysis-run-service \
      --region=us-central1 \
      --project=PROJECT_ID
      
    2. Para excluir o pipeline de entrega, o destino, a versão e o lançamento, execute o comando a seguir no diretório que contém a definição do pipeline de entrega:

      gcloud deploy delete --file=clouddeploy.yaml \
      --force \
      --region=us-central1 \
      --project=PROJECT_ID
      
    3. Exclua a política de alertas do Google Cloud Observability:

      gcloud monitoring policies delete  ALERT_POLICY_ID
      
    4. Exclua os buckets do Cloud Storage criados pelo Cloud Deploy.

      Uma termina com _clouddeploy, e a outra é [region].deploy-artifacts.[project].appspot.com.

      Abrir a página "Procurar" do Cloud Storage

    Pronto, você concluiu as etapas deste início rápido.

    A seguir