Veja os registos da frota

Esta página descreve como ativar e ver registos de frotas. Com o registo da frota, vários registos são agregados e definidos em conjunto, o que lhe permite analisar o estado das suas aplicações numa vista consolidada. Esta página destina-se a:

  • Administradores da plataforma que querem ativar o registo de frotas e ver registos em todos os espaços de nomes.
  • Operadores de serviços que querem ver registos nos espaços de nomes específicos aos quais têm acesso.

Vista geral

Os registos da frota permitem-lhe ver registos ao nível de toda a frota ou para âmbitos de equipa específicos. Os âmbitos são uma funcionalidade de gestão de equipas que lhe permite definir subconjuntos de registos da frota e outros recursos por equipa, com cada âmbito associado a um ou mais clusters de membros da frota. Para mais informações sobre âmbitos, consulte o artigo Faça a gestão de equipas para a sua frota.

Pode ver dois tipos de registos de frota:

  • Registos predefinidos: todos os registos do Kubernetes (exceto registos de auditoria) que não pertencem a nenhum âmbito específico da frota com os seguintes tipos de recursos:

    • k8s_container
    • k8s_pod
    • k8s_node
    • k8s_cluster
    • k8s_control_plane_components
  • Registos do âmbito da frota: registos de contentores e pods para aplicações pertencentes a uma equipa implementada num âmbito da frota específico com vários espaços de nomes ao nível da frota.

A visualização dos registos do âmbito da frota é opcional. Se não quiser configurar a gestão de equipas, pode continuar a usar o registo de frotas para ver os registos predefinidos.

Os registos podem ser encaminhados para diferentes contentores de registos no projeto do anfitrião da frota com diferentes visualizações para o controlo de acesso. O período de retenção predefinido de um contentor de registos é de 30 dias. Se necessário, pode configurar este período.

Existem dois modos suportados para o encaminhamento de registos em que as frotas contêm clusters de vários projetos (registo entre projetos):

  • MOVE: todos os registos são movidos para o projeto anfitrião da frota. Se um cluster na frota pertencer a um projeto diferente, os respetivos registos não são retidos no projeto Google Cloud original.

  • COPY: todos os registos são enviados para o projeto anfitrião da frota. Se um cluster na frota pertencer a um projeto diferente, os respetivos registos também são retidos no projeto Google Cloud original.

Antes de começar

  1. Se já tiver criado manualmente contentores, destinos e definido filtros de exclusão do Cloud Logging, certifique-se de que os nomes que atribuiu a estes objetos não entram em conflito com as restrições de nomenclatura do registo de frotas. Se existir um conflito de nomenclatura, contacte o apoio técnico antes de continuar.

  2. Certifique-se de que os clusters cujos registos quer ver foram registados na frota escolhida.

  3. Se ainda não a tiver instalada, instale a Google Cloud CLI seguindo as instruções de instalação. Precisa da versão 424.0.0 ou superior para ver os registos da sua frota.

  4. Certifique-se de que o projeto anfitrião da frota tem todas as APIs necessárias ativadas, incluindo a API Anthos:

    gcloud services enable --project=FLEET_HOST_PROJECT_ID  \
    gkehub.googleapis.com \
    container.googleapis.com \
    connectgateway.googleapis.com \
    cloudresourcemanager.googleapis.com \
    iam.googleapis.com \
    anthos.googleapis.com
    

    where:

Prepare âmbitos, espaços de nomes e cargas de trabalho

Se quiser ver os registos do âmbito da frota, tem de criar um âmbito da frota e um espaço de nomes da frota, além de preparar as cargas de trabalho para a recolha de registos.

Antes de continuar, defina o projeto predefinido para a CLI gcloud executando o seguinte comando:

gcloud config set project FLEET_HOST_PROJECT_ID

Crie âmbitos e espaços de nomes

Se quiser ver registos ao nível do âmbito e ainda não tiver configurado âmbitos, siga as instruções em Gerir equipas para a sua frota para criar âmbitos, adicionar clusters a âmbitos e configurar espaços de nomes da frota.

Prepare cargas de trabalho

Para ver os dados de registo das suas aplicações, tem de implementar as suas cargas de trabalho num cluster no espaço de nomes da frota configurado no passo anterior. Este passo aplica-se quer opte por ver os registos predefinidos, os registos do âmbito da frota ou ambos. Segue-se um exemplo para configurar a sua carga de trabalho:

  apiVersion: v1
  kind: Pod
  metadata:
    name: fleet-example-pod
    namespace: NAMESPACE_NAME
  spec:
    containers:
    - name: count
      image: ubuntu:14.04
      args: [bash, -c,
           'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done']

Após implementar o recurso, pode ver um erro se o espaço de nomes da frota não tiver sido criado por algum motivo. Neste caso, execute o seguinte comando para criar novamente o espaço de nomes e execute novamente o comando de implementação da carga de trabalho:

  kubectl create namespace NAMESPACE_NAME
  

Ative o registo da frota

Esta secção descreve como ativar a funcionalidade de registo da frota e conceder acesso à equipa para ver os registos.

gcloud

  • Pode ativar o registo de frotas através da CLI do Google Cloud, especificando os campos de configuração da funcionalidade num ficheiro JSON ou YAML. Segue-se um exemplo de uma configuração para o registo de frotas no formato JSON:

    {
      "loggingConfig": {
          "defaultConfig": {
              "mode": "COPY"
          },
          "fleetScopeLogsConfig": {
              "mode": "MOVE"
          }
      }
    }
    

Para ver todos os campos que pode configurar para esta funcionalidade, consulte a referência da API.

Quando os campos defaultConfig ou fleetScopeLogsConfig estão ativados com os modos COPY ou MOVE, conforme mostrado no exemplo anterior, é criado um destino de registo com o prefixo fleet-o11y-. Este sink de registo é criado no projeto Google Cloud para encaminhar os registos de destino do projeto do cluster para o projeto anfitrião da frota.

Quando a opção fleetScopeLogsConfig está ativada, também é criado um contentor de registos com o nome fleet-o11y-scope-$SCOPE_NAME na global região no projeto anfitrião da frota, se ainda não existir. Tenha em atenção que não pode alterar a região do contentor.

Neste exemplo, os registos predefinidos são enviados para o projeto anfitrião da frota e retidos no projeto Google Cloud original, enquanto os registos do âmbito da frota são enviados para o projeto anfitrião da frota e não são retidos no projeto Google Cloud .

  • Adicione a configuração escolhida a um ficheiro JSON e atualize a frota:

    gcloud container fleet fleetobservability update \
            --logging-config=JSON_FILE
    

Substitua JSON_FILE pelo nome do seu nome de ficheiro.

Terraform

  • A funcionalidade de observabilidade da frota está ativada por predefinição. Se for a primeira vez que usa o Terraform para gerir a funcionalidade de observabilidade da frota, importe a funcionalidade para o Terraform executando o seguinte comando:
terraform import google_gke_hub_feature.feature projects/FLEET_HOST_PROJECT_ID/locations/global/features/fleetobservability

Por exemplo, pode adicionar o seguinte bloco à sua configuração do Terraform:

  resource "google_gke_hub_feature" "feature" {
    name = "fleetobservability"
    location = "global"
    spec {
      fleetobservability {
        logging_config {
          default_config {
            mode = "COPY"
          }
          fleet_scope_logs_config {
            mode = "MOVE"
          }
        }
      }
    }
  }

Quando os campos default_config ou fleet_scope_logs_config estão ativados com os modos COPY ou MOVE, conforme mostrado no exemplo anterior, é criado um destino de registo com o prefixo fleet-o11y-. Este sink de registo é criado no projeto Google Cloud para encaminhar os registos de destino do projeto do cluster para o projeto anfitrião da frota.

Quando a opção fleet_scope_logs_config está ativada, também é criado um contentor de registos com o nome fleet-o11y-scope-$SCOPE_NAME no projeto anfitrião da frota, se ainda não existir.

Neste exemplo, os registos predefinidos são enviados para o projeto anfitrião da frota e retidos no projeto Google Cloud original, enquanto os registos do âmbito da frota são enviados para o projeto anfitrião da frota e não são retidos no projeto Google Cloud .

Confirme se a especificação da funcionalidade está atualizada:

   gcloud container fleet fleetobservability describe
  

A saída mostra a especificação fleetobservability atualizada com a configuração, como no exemplo seguinte:

createTime: '2022-09-30T16:05:02.222568564Z'
membershipStates:
  projects/123456/locations/us-central1/memberships/cluster-1:
    state:
      code: OK
      description: Fleet monitoring enabled.
      updateTime: '2023-04-03T20:22:51.436047872Z'
name:
projects/123456/locations/global/features/fleetobservability
resourceState:
  state: ACTIVE
spec:
  fleetobservability:
    loggingConfig:
      defaultConfig:
        mode: COPY
      fleetScopeLogsConfig:
        mode: MOVE
state:
  state: {}
updateTime: '2023-04-03T20:38:17.719596966Z'

As alterações feitas à especificação fleetobservability podem demorar alguns minutos a serem aplicadas.

Configure autorizações de registo em vários projetos

Esta secção só é necessária se estiver a registar um cluster numa frota num projeto diferente (também conhecido como registo entre projetos). Para encaminhar registos de projetos de clusters para o projeto anfitrião da frota, tem de conceder a função roles/logging.bucketWriter à conta de serviço de registo de cada projeto de cluster.

  1. Para obter as credenciais da conta de serviço a partir de destinos em projetos de cluster, execute o seguinte comando:

    FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
    FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)")
    gcloud logging sinks --project=GKE_PROJECT_ID describe fleet-o11y-${FLEET_HOST_PROJECT_NUMBER}-default
    

    Se o comando devolver um erro a indicar que não é possível encontrar o destino do registo, tente executar novamente o comando após um ou dois minutos. Pode ver a conta de serviço no campo writerIdentity da descrição do destino, conforme mostrado no exemplo seguinte:

    createTime: '2023-04-06T02:26:54.716195307Z'
    destination:
    logging.googleapis.com/projects/123456/locations/global/buckets/_Default
    filter: xxx
    name: fleet-o11y-default
    updateTime: '2023-04-06T19:03:51.598668462Z'
    writerIdentity:
    serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com
    
  2. Conceda a função de roles/logging.bucketWriter à conta de serviço obtida:

    gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
        --member "SERVICE_ACCOUNT" \
        --role "roles/logging.bucketWriter"
    

    where:

    • SERVICE_ACCOUNT é o nome da conta de serviço obtido no passo anterior. Por exemplo:
    gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
        --member "serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com" \
        --role "roles/logging.bucketWriter"
    

Conceda acesso da equipa aos registos

Esta secção descreve como conceder acesso aos utilizadores para verem os registos de contentores e os registos de pods.

  1. Obtenha a Política IAM para o projeto da frota e escreva-a num ficheiro local no formato JSON:

    gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID --format json > output.json
    
  2. Adicione uma condição da IAM que permita à conta de utilizador ver dados do contentor de registos que criou. Segue-se um exemplo para ver os registos do contentor e os registos do pod:

    {
      "bindings": [
        {
          "members": [
            "user:USER_ACCOUNT_EMAIL"
          ],
          "role": "roles/logging.viewAccessor",
          "condition": {
              "title": "Bucket reader condition example",
              "description": "Grants logging.viewAccessor role to user USER_ACCOUNT_EMAIL for the fleet-o11y-scope-SCOPE_NAME-k8s_container and fleet-o11y-scope-SCOPE_NAME-k8s_pod log view.",
              "expression":
                "resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_container\" || resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_pod\""
          }
        }
      ],
    }
    
  3. Atualize a política de IAM:

    gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
    

Para mais opções sobre a concessão de acesso, consulte o artigo Controle o acesso a uma vista de registo.

Veja os registos da frota

Os administradores da plataforma têm acesso à visualização de todos os registos em todos os espaços de nomes.

Registos predefinidos

Para ver todos os registos predefinidos no contentor _Default no projeto de anfitrião da frota, preencha as variáveis no seguinte URL, copie-o e cole-o no navegador:

https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2F_Default%2Fviews%2F_Default?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID

Registos de contentores de âmbito da frota e registos de pods

Os operadores de serviços podem ver registos nos espaços de nomes aos quais têm acesso. Para ver os registos de todos os espaços de nomes num âmbito da frota específico, conclua os passos seguintes:

  1. Com o projeto anfitrião da frota selecionado, aceda à secção Equipas na Google Cloud consola.

    Aceda a Equipas

  2. Clique no âmbito da equipa cujos registos quer ver e clique no separador Registos.

  3. Selecione Registos do contentor ou Registos do pod para filtrar a vista de registos.

Para ver os registos de um espaço de nomes específico no seu âmbito:

  1. Na página Equipas, com o âmbito da equipa selecionado, clique no separador Espaços de nomes.
  2. Clique no espaço de nomes cujos registos quer ver e clique no separador Registos.
  3. Selecione Registos do contentor ou Registos do pod para filtrar a vista de registos.

Em alternativa, para ver os registos do contentor, preencha as variáveis no seguinte URL, copie-o e cole-o no navegador:

https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_container?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID

Para ver os registos de pods num âmbito de frota específico, preencha as variáveis no seguinte URL, copie-o e cole-o no navegador:

https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_pod?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID

Consulte a interface do Explorador de registos para ver mais informações sobre como analisar dados de registo.

Desative o registo de frotas

Para desativar a funcionalidade de registo da frota, conclua os seguintes passos:

gcloud

  1. Guarde a seguinte configuração num ficheiro denominado disable_logging_config.json:

    {
      "loggingConfig": {}
    }
    
  2. Atualize a especificação da funcionalidade fleetobservability:

    gcloud container fleet fleetobservability update \
            --logging-config=disable_logging_config.json
    

Terraform

Na configuração do Terraform, atualize todos os modos de encaminhamento de registos para MODE_UNSPECIFIED. Vejamos um exemplo:

  resource "google_gke_hub_feature" "feature" {
    name = "fleetobservability"
    location = "global"
    spec {
      fleetobservability {
        logging_config {
          default_config {
            mode = "MODE_UNSPECIFIED"
          }
          fleet_scope_logs_config {
            mode = "MODE_UNSPECIFIED"
          }
        }
      }
    }
  }

Confirme se a especificação da funcionalidade está atualizada:

   gcloud container fleet fleetobservability describe
  

A saída mostra a especificação fleetobservability atualizada com a sua configuração:

  createTime: '2022-09-30T16:05:02.222568564Z'
  membershipStates:
    projects/123456/locations/global/memberships/cluster-1:
      state:
        code: OK
        description: Fleet monitoring enabled.
        updateTime: '2023-04-03T20:22:51.436047872Z'
  name:
  projects/123456/locations/global/features/fleetobservability
  resourceState:
    state: ACTIVE
  spec:
    fleetobservability:
      loggingConfig: {}
  state:
    state: {}
  updateTime: '2023-04-03T20:38:17.719596966Z'
  

As alterações feitas à especificação fleetobservability podem demorar alguns minutos a serem aplicadas.

Depois de desativar o registo de frotas, os destinos de registo e os filtros de exclusão são removidos dos seus projetos. No entanto, todos os contentores de registos criados para o âmbito e as vistas de registos criadas no contentor de registos são preservados. Para eliminar o contentor de registos no projeto anfitrião da frota, consulte o artigo Elimine um contentor.

Atualize o período de retenção para contentores de registos

O período de retenção predefinido de um contentor de registos é de 30 dias. Para atualizar este período, execute o seguinte comando:

gcloud logging buckets update fleet-o11y-scope-SCOPE_NAME --location=global --retention-days=RETENTION_DAYS

where:

  • SCOPE_NAME é o nome do âmbito da frota.

  • RETENTION_DAYS é o número de dias do novo período de retenção. Para mais opções sobre a configuração de contentores de registos, consulte o artigo Faça a gestão dos contentores.

Se prolongar o período de retenção de um contentor, as regras de retenção aplicam-se a partir desse momento e não retroativamente. Não é possível recuperar os registos após o fim do período de retenção aplicável.

Referência da API

Esta secção fornece informações sobre os possíveis campos que pode adicionar ao seu objeto fleetobservability.

fleetobservability

fleetobservability define a configuração de observabilidade da frota.

Campo Descrição Esquema Opcional
loggingConfig

Especificado se a funcionalidade de registo da frota está ativada para toda a frota.

Se não for especificado, a funcionalidade de registo da frota é desativada para toda a frota.

loggingConfig True

loggingConfig

loggingConfig define a configuração das funcionalidades de registo da frota na observabilidade da frota.

Campo Descrição Esquema Opcional
defaultConfig Define o comportamento de encaminhamento de registos para os registos predefinidos na frota. routingConfig True
fleetScopeLogsConfig Define o comportamento de encaminhamento de registos para registos de âmbito da frota. routingConfig True

routingConfig

routingConfig define a configuração do modo de encaminhamento de registos na funcionalidade de registo de frota.

Campo Descrição Esquema Opcional
modo

Especificado para ativar o encaminhamento de registos e não especificado ou MODE_UNSPECIFIED para desativar o encaminhamento de registos.

Se estiver definido como COPY, os registos são copiados para o projeto de destino.

Se estiver definido como MOVE, os registos são movidos para o projeto de destino.

String; um dos seguintes: MOVE, COPY e MODE_UNSPECIFIED True

Restrições de nomenclatura

Quando a observabilidade da frota está ativada, o controlador de observabilidade da frota reserva os seguintes nomes para os objetos de registos que cria. Para evitar um comportamento indesejável ou inesperado, deve evitar usar estes nomes quando criar os seus próprios contentores de registos, sinks e definir filtros de exclusão.

Funcionalidade ativada Objeto criado Nome usado pela observabilidade da frota
defaultConfig Lava-louça fleet-o11y-FLEET_PROJECT_NUMBER-default
Filtro de exclusão. fleet-o11y-FLEET_PROJECT_NUMBER-default-exclusion. Este nome está reservado no receptor _Default do projeto do cluster.
fleetScopeLogsConfig Contentor de registo fleet-o11y-scope-SCOPE_NAME
  • Vista de registos para registos de contentores no depósito
  • fleet-o11y-scope-SCOPE_NAME-k8s_container
  • Vista de registos para registos de pods no contentor
  • fleet-o11y-scope-SCOPE_NAME-k8s_pod
    Lava-louça fleet-o11y-FLEET_PROJECT_NUMBER-scope-SCOPE_NAME
    Filtro de exclusão fleet-o11y-FLEET_PROJECT_NUMBER-scope-exclusion

    Resolução de problemas

    Esta secção descreve como resolver problemas relacionados com o registo de frotas.

    Notificação por email sobre o erro de configuração do destino

    Se recebeu um email com o título [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>, significa que a conta de serviço do seu coletor de registos não tem autorização para escrever registos no destino do coletor. Para resolver este problema, siga os passos descritos no artigo Autorizações de registo em vários projetos.

    Mensagem de erro desconhecida da IU do Cloud Logging

    Se vir o seguinte erro na IU do Cloud Logging, verifique novamente se as variáveis project_id e scope introduzidas no URL estão corretas.

    Error: There is an unknown error while executing this operation.
    

    Erro de subscrição não encontrada

    Pode ver o seguinte erro:

    ERROR: (gcloud.alpha.container.fleet.memberships.bindings.create) NOT_FOUND: Resource 'parent resource not found for projects/...' was not found
    

    Certifique-se de que registou o cluster numa frota.