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.
Visão geral
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
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.
Verifique se os clusters cujos registros você quer visualizar foram registrados na frota escolhida.
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.
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
em que:
- FLEET_HOST_PROJECT_ID O ID do projeto host da frota. Saiba como encontrar esse valor.
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.
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
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"
em que:
- SERVICE_ACCOUNT é o nome da conta de serviço recuperada da etapa 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"
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.
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
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\"" } } ], }
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 Controlar o 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:
Com o projeto host da frota selecionado, acesse a seção Equipes no console do Google Cloud.
Clique no escopo da equipe cujos registros você quer visualizar e clique na guia Registros.
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:
- Na página Teams, com o escopo de equipe selecionado, clique na guia Namespaces.
- Clique no namespace cujos registros você quer visualizar e clique na guia Registros.
- 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
Salve a seguinte configuração em um arquivo chamado
disable_logging_config.json
:{ "loggingConfig": {} }
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
em que:
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 | True |
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. | routingConfig | True |
fleetScopeLogsConfig | Define o comportamento de roteamento dos registros do escopo da frota. | routingConfig | True |
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 |
---|---|---|---|
modo | 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 | True |
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 |
fleet-o11y-scope-SCOPE_NAME-k8s_container |
||
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.