Conferir registros da frota

Nesta página, descrevemos como ativar e acessar registros para frotas. Com a geração de registros da frota, vários registros são agregados e definidos no escopo, o que permite analisar a integridade dos aplicativos em uma visualização consolidada. Esta página é destinada a:

  • Administradores da plataforma que querem ativar a geração de registros da frota e visualizar registros em todos os namespaces.
  • Operadores de serviço que querem visualizar registros nos namespaces específicos a que têm acesso.

Informações gerais

Os registros da frota permitem acessar registros de toda a frota ou de escopos específicos da equipe. Os escopos são um recurso de gerenciamento de equipe que permite definir subconjuntos de registros da frota e outros recursos por equipe, com cada escopo associado a um ou mais clusters de membros da frota. Para mais informações sobre escopos, consulte Gerenciar equipes na sua frota.

É possível ver dois tipos de registros de frota:

  • Registros padrão: todos os registros do Kubernetes (exceto os registros de auditoria) que não pertencem a nenhum escopo específico da frota com os seguintes tipos de recursos:

    • k8s_container
    • k8s_pod
    • k8s_node
    • k8s_cluster
    • k8s_control_plane_components
  • Registros do escopo da frota: registros de contêineres e pods para aplicativos de propriedade de uma equipe implantada em um escopo de frota específico com vários namespaces no nível da frota.

A visualização dos registros de escopo da frota é opcional. Se você não quiser configurar o gerenciamento de equipe, ainda poderá usar a geração de registros da frota para ver os registros padrão.

Os registros podem ser roteados para diferentes buckets de registros no projeto host da frota com diferentes visualizações para controle de acesso. O período de armazenamento padrão de um bucket de registros é de 30 dias. É possível configurar esse período, se necessário.

Há dois modos compatíveis com o roteamento de registros em que as frotas contêm clusters de vários projetos (registro entre projetos):

  • MOVE: todos os registros são movidos para o projeto host da frota. Se um cluster na frota pertencer a um projeto diferente, os registros não serão mantidos no projeto original do Google Cloud.

  • COPY: todos os registros são enviados ao projeto host da frota. Se um cluster da frota pertencer a um projeto diferente, os registros também serão mantidos no projeto original do Google Cloud.

Antes de começar

  1. Se você já tiver criado manualmente buckets e coletores do Cloud Logging e definir filtros de exclusão, verifique se os nomes atribuídos a esses objetos não entrar em conflito com as restrições de nomenclatura da geração de registros da frota. Se houver um conflito de nomes, entre em contato com o suporte antes de continuar.

  2. Verifique se os clusters cujos registros você quer visualizar foram registrados na frota escolhida.

  3. Se você ainda não tiver instalado a Google Cloud CLI, siga as instruções de instalação. Você precisa da versão 424.0.0 ou mais recente para ver os registros da frota.

  4. Verifique se o projeto de host 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
    

    onde:

Preparar escopos, namespaces e cargas de trabalho

Se você quiser ver os registros de escopo da frota, precisará criar um escopo e um namespace de frota, além de preparar cargas de trabalho para a coleta de registros.

Antes de continuar, defina o projeto padrão para a Google Cloud CLI executando o seguinte comando:

gcloud config set project FLEET_HOST_PROJECT_ID

Criar escopos e namespaces

Se você quiser ver registros no nível do escopo, mas ainda não tiver configurado os escopos, siga as instruções em Gerenciar equipes na sua frota para criar escopos e adicionar clusters a escopos e configurar namespaces da frota. de dois minutos.

Preparar cargas de trabalho

Para acessar os dados de registro dos seus aplicativos, implante suas cargas de trabalho em um cluster no namespace da frota configurado na etapa anterior. Esta etapa é aplicável se você visualizar os registros padrão, os registros de escopo da frota ou ambos. Veja um exemplo para configurar 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 a implantação do recurso, talvez você veja um erro se, por algum motivo, não for possível criar o namespace da frota. Nesse caso, execute o comando a seguir para criar o namespace e execute de novo o comando de implantação da carga de trabalho:

  kubectl create namespace NAMESPACE_NAME
  

Ativar a geração de registros da frota

Nesta seção, descrevemos como ativar o recurso de geração de registros de frota e conceder à equipe acesso para ver os registros.

gcloud

  • É possível ativar a geração de registros da frota usando a Google Cloud CLI especificando os campos de configuração do recurso em um arquivo JSON ou YAML. Veja um exemplo de configuração para geração de registros da frota no formato JSON:

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

Para ver todos os campos que você pode configurar para esse recurso, consulte a Referência da API.

Quando os campos defaultConfig ou fleetScopeLogsConfig são ativados com os modos COPY ou MOVE, como mostrado no exemplo anterior, um coletor de registros é criado com o prefixo fleet-o11y-. Esse coletor de registros é criado no projeto do Google Cloud para rotear registros de destino do projeto de cluster para o projeto host da frota.

Quando fleetScopeLogsConfig está ativado, um bucket de registros com o nome fleet-o11y-scope-$SCOPE_NAME também é criado na região global no projeto host da frota, se ele ainda não existir. Lembre-se que não é possível alterar a região do bucket.

Neste exemplo, os registros padrão vão ser enviados ao projeto host da frota e mantidos no projeto original do Google Cloud. Já os registros do escopo da frota serão enviados para o projeto host da frota e não serão mantidos no projeto do Google Cloud.

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

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

Substitua JSON_FILE pelo nome do projeto.

Terraform

  • O recurso de observabilidade da frota é ativado por padrão. Se esta for a primeira vez que você usa o Terraform para gerenciar o recurso de observabilidade da frota, importe o recurso para o Terraform executando o seguinte comando:
terraform import google_gke_hub_feature.feature projects/FLEET_HOST_PROJECT_ID/locations/global/features/fleetobservability
  • É possível ativar a geração de registros da frota com o Terraform usando um módulo do Terraform.

Por exemplo, você pode adicionar o seguinte bloco à 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 são ativados com os modos COPY ou MOVE, como mostrado no exemplo anterior, um coletor de registros é criado com o prefixo fleet-o11y-. Esse coletor de registros é criado no projeto do Google Cloud para rotear registros de destino do projeto de cluster para o projeto host da frota.

Quando fleet_scope_logs_config estiver ativado, um bucket de registros com o nome fleet-o11y-scope-$SCOPE_NAME também será criado no projeto host da frota, se ele ainda não existir.

Neste exemplo, os registros padrão vão ser enviados ao projeto host da frota e mantidos no projeto original do Google Cloud. Já os registros do escopo da frota serão enviados para o projeto host da frota e não serão mantidos no projeto do Google Cloud.

Verifique se a especificação do recurso está atualizada:

   gcloud container fleet fleetobservability describe
  

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

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'

Qualquer mudança feita na especificação fleetobservability pode levar alguns minutos para ser aplicada.

Configurar permissões de geração de registros entre projetos

Esta seção só é necessária se você estiver registrando um cluster em uma frota em um projeto diferente (também conhecido como registro entre projetos). Para rotear registros de projetos de cluster para o projeto host de frota, é preciso conceder o papel roles/logging.bucketWriter à conta de serviço de geração de registros de cada projeto de cluster.

  1. Para receber as credenciais da conta de serviço dos coletores 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 retornar um erro informando que o coletor de registros não foi encontrado, tente executar o comando novamente depois de um ou dois minutos. É possível ver a conta de serviço no campo writerIdentity da descrição do coletor, conforme mostrado no exemplo a seguir:

    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 o papel de roles/logging.bucketWriter à conta de serviço recuperada:

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

    onde:

    • SERVICE_ACCOUNT é o nome da conta de serviço recuperada da etapa anterior. 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"
    

Conceder à equipe acesso aos registros

Na seção, descrevemos como conceder acesso aos usuários para que eles visualizem os registros de contêiner e de pod.

  1. Acesse a política do IAM para o projeto da frota e grave-a em um arquivo local no formato JSON:

    gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID --format json > output.json
    
  2. Adicione uma condição do IAM que permita que a conta de usuário visualize dados do bucket de registros que você criou. Este é um exemplo para visualizar registros de contêiner e de 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 do IAM:

    gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
    

Para mais opções sobre como conceder acesso, consulte Conceder acesso a uma visualização de registro.

Ver registros da frota

Os administradores da plataforma têm acesso para visualizar todos os registros em todos os namespaces.

Registros padrão

Para conferir todos os registros padrão no bucket _Default do projeto host da frota, preencha as variáveis no URL a seguir, copie e cole 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

Registros de contêiner do escopo da frota e registros do pod

Os operadores de serviço podem visualizar registros nos namespaces aos quais têm acesso. Para conferir registros de todos os namespaces em um escopo específico de frota, siga estas etapas:

  1. Com o projeto host da frota selecionado, acesse a seção Equipes no console do Google Cloud.

    Acesse "Equipes"

  2. Clique no escopo da equipe cujos registros você quer visualizar e clique na guia Registros.

  3. Selecione Registros de contêiner ou Registros do pod para filtrar a visualização.

Para ver registros de um namespace específico no seu escopo:

  1. Na página Teams, com o escopo de equipe selecionado, clique na guia Namespaces.
  2. Clique no namespace cujos registros você quer visualizar e clique na guia Registros.
  3. Selecione Registros de contêiner ou Registros do pod para filtrar a visualização.

Como alternativa, para visualizar os registros de contêiner, preencha as variáveis no seguinte URL, copie e cole 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 conferir os registros de pods em um escopo específico da frota, preencha as variáveis no seguinte URL, copie e cole 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 registros para mais informações sobre a análise de dados de registros.

Desativar a geração de registros da frota

Para desativar o recurso de geração de registros de frota, siga estas etapas:

gcloud

  1. Salve a seguinte configuração em um arquivo chamado disable_logging_config.json:

    {
      "loggingConfig": {}
    }
    
  2. Atualize a especificação de recurso fleetobservability:

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

Terraform

Na configuração do Terraform, atualize todos os modos de roteamento de registros para MODE_UNSPECIFIED. Veja 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"
          }
        }
      }
    }
  }

Verifique se a especificação do recurso está atualizada:

   gcloud container fleet fleetobservability describe
  

A saída mostra a especificação fleetobservability atualizada com 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'
  

Qualquer mudança feita na especificação fleetobservability pode levar alguns minutos para ser aplicada.

Depois de desativar a geração de registros da frota, os coletores de registros e os filtros de exclusão vão ser removidos dos seus projetos. No entanto, todos os buckets de registros criados para o escopo e as visualizações de registros criadas no bucket de registros serão preservados. Para excluir o bucket de registros no projeto host da frota, consulte Excluir um bucket.

Atualizar o período de armazenamento dos buckets de registros

O período de armazenamento padrão de um bucket de registros é de 30 dias. Para atualizar esse período, execute o seguinte comando:

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

onde:

  • SCOPE_NAME é o nome do escopo da frota.

  • RETENTION_DAYS é o número de dias do novo período de armazenamento. Para acessar mais opções sobre a configuração de buckets de registros, consulte Gerenciar buckets.

Se você prolongar o período de armazenamento de um bucket, as regras de retenção serão aplicadas a partir de agora, não retroativamente. Não é possível recuperar os registros após o término do período de armazenamento aplicável.

Referência da API

Nesta seção, fornecemos informações sobre os possíveis campos que você pode adicionar ao seu objeto fleetobservability.

observabilidade da frota

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

Campo Descrição Esquema Opcional
loggingConfig

Especificado se o recurso de geração de registros da frota estiver ativado para toda a frota.

Se não for especificado, o recurso de geração de registros da frota será desativado para toda a frota.

loggingConfig Verdadeiro

loggingConfig

loggingConfig define a configuração dos recursos de geração de registros da frota na observabilidade da frota.

Campo Descrição Esquema Opcional
defaultConfig Define o comportamento de roteamento de registros padrão da frota. routeConfig Verdadeiro
frotaScopeLogsConfig Define o comportamento de roteamento dos registros do escopo da frota. routeConfig Verdadeiro

routingConfig

routingConfig define a configuração do modo de roteamento de registros no recurso de geração de registros da frota.

Campo Descrição Esquema Opcional
mode

Especificado para ativar o roteamento de registros e não especificado ou MODE_UNSPECIFIED para desativar o roteamento de registros.

Se definido como COPY, os registros serão copiados para o projeto de destino.

Se definido como MOVE, os registros serão movidos para o projeto de destino.

String; Uma destas opções: MOVE, COPY e MODE_UNSPECIFIED Verdadeiro

Restrições de nomenclatura

Quando a observabilidade da frota está ativada, o controlador dela reserva os nomes a seguir para os objetos de registros criados. Para evitar comportamentos indesejados ou inesperados, evite usar esses nomes ao criar seus próprios buckets de registros, coletores e definir filtros de exclusão.

Recurso ativado Objeto criado Nome usado pela observabilidade da frota
defaultConfig Coletor fleet-o11y-FLEET_PROJECT_NUMBER-default
Filtro de exclusão fleet-o11y-FLEET_PROJECT_NUMBER-default-exclusion: Esse nome está reservado no coletor _Default do projeto do cluster.
fleetScopeLogsConfig Bucket de registros fleet-o11y-scope-SCOPE_NAME
  • Visualização de registros de contêiner no bucket
  • fleet-o11y-scope-SCOPE_NAME-k8s_container
  • Visualização de registros do pod no bucket
  • fleet-o11y-scope-SCOPE_NAME-k8s_pod
    Coletor fleet-o11y-FLEET_PROJECT_NUMBER-scope-SCOPE_NAME
    Filtro de exclusão fleet-o11y-FLEET_PROJECT_NUMBER-scope-exclusion

    Solução de problemas

    Nesta seção, descrevemos como resolver problemas relacionados à geração de registros da frota.

    Notificação por e-mail sobre o erro de configuração do coletor

    Se você recebeu um e-mail com o título [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>, a conta de serviço do coletor de registros não tem permissão para gravar registros no destino do coletor. Para resolver isso, siga as etapas em Permissões de geração de registros entre projetos.

    Mensagem de erro desconhecida da IU do Cloud Logging

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

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

    Erro de associação não encontrada

    O seguinte erro pode aparecer:

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

    Verifique se você registrou o cluster em uma frota.