Resolver problemas de upgrade de um bucket para usar a Análise de Observabilidade

Ao fazer upgrade de um bucket de registros para usar a Análise de Observabilidade, é possível executar consultas SQL para analisar os dados de registro armazenados nesse bucket. Se o upgrade de um bucket de registros falhar ou for interrompido, use este documento para diagnosticar e resolver erros de validação síncrona, erros de provisionamento assíncrono e operações bloqueadas. Para saber como fazer upgrade de um bucket de registros, consulte Fazer upgrade de um bucket para usar a Análise de Observabilidade.

Sobre o processo de upgrade

O Cloud Logging usa um processo de duas etapas quando você emite um comando para fazer upgrade de um bucket de registros para usar a Análise de Observabilidade:

  1. Validação síncrona: o Logging valida os parâmetros do comando. Se a validação falhar, o comando vai retornar um erro imediatamente.
  2. Provisionamento assíncrono: se a validação for bem-sucedida, o Logging vai iniciar uma operação de longa duração que geralmente é concluída em 10 minutos.

Os upgrades de buckets de registros são operações auditadas. Para verificar o status da operação de longa duração ou encontrar detalhes de erro, pesquise a operação usando o método Operations.GetOperation ou consulte os registros de auditoria.

Estado do bucket de registros durante um upgrade

Quando a validação síncrona de uma solicitação de upgrade é bem-sucedida, o Logging muda o estado do bucket de registros de ACTIVE para UPDATING e inicia a operação de longa duração. Quando a operação for concluída, o estado do bucket de registros vai voltar para ACTIVE.

Para determinar o estado atual de um bucket de registros, execute o comando gcloud logging buckets describe:

gcloud logging buckets describe LOG_BUCKET_ID \
  --location=LOCATION_ID \
  --project=PROJECT_ID

Antes de executar o comando, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: o local do bucket.
  • LOG_BUCKET_ID: o ID do bucket.

O campo lifecycleState na resposta mostra o estado do bucket:

description: Default bucket
lifecycleState: ACTIVE
name: projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID
retentionDays: 30

No console do Google Cloud , enquanto o bucket de registros estiver no estado UPDATING:

  • Na página Armazenamento de registros, a coluna Análise de Observabilidade disponível mostra Fazendo upgrade… enquanto a operação de longa duração está ativa (ou Não qualificado para upgrade se o console não conseguir recuperar o status da operação).
  • Nos painéis Editar bucket e Fazer upgrade do bucket de registros, a opção de upgrade do bucket está desativada, e a dica lista Não há atualizações pendentes como um requisito não atendido.

Considerações sobre o perímetro do VPC Service Controls

Os upgrades de buckets de registro dentro de um perímetro do VPC Service Controls podem falhar devido ao bloqueio de APIs pelo perímetro ou a configurações entre projetos.

APIs que o perímetro precisa permitir

Para fazer upgrade de um bucket de registros que está dentro de um perímetro do VPC Service Controls, o perímetro não pode restringir os seguintes serviços:

  • logging.googleapis.com
  • cloudkms.googleapis.com: obrigatório para fazer upgrade de um bucket de registros que usa uma chave de criptografia gerenciada pelo cliente (CMEK).

A restrição desses serviços causa o seguinte comportamento:

  • logging.googleapis.com restrito: o comando de upgrade falha imediatamente com um erro PERMISSION_DENIED, e o bucket de registros permanece no estado ACTIVE.

    Resolução: atualize o perímetro para permitir as APIs listadas no início desta seção e tente executar o comando novamente.

  • cloudkms.googleapis.com restrito: para buckets de registros protegidos por CMEK, a operação de longa duração falha com um erro INTERNAL, e o bucket de registros retorna ao estado ACTIVE.

    Resolução: atualize o perímetro para permitir as APIs listadas no início desta seção e tente executar o comando novamente.

Configurações de CMEK entre perímetros

Não é possível usar regras de entrada ou saída baseadas em identidade para conceder acesso entre perímetros à chave do Cloud Key Management Service quando o bucket de registros e a chave do Cloud KMS estão em perímetros diferentes do VPC Service Controls.

Para essa configuração, se a regra de entrada especificar apenas a identidade da conta de serviço do Logging, ocorrerá o seguinte:

  • O provisionamento assíncrono falha com um erro INTERNAL, e o bucket de registros retorna ao estado ACTIVE.
  • Um registro de auditoria de política do projeto do Cloud KMS registra a falha. Esse registro de auditoria mostra que o método google.cloud.kms.v1.KeyManagementService.Encrypt falhou com uma violação de entrada NO_MATCHING_ACCESS_LEVEL e indica que é para uma conta de serviço de criptografia do BigQuery.

Resolução: na regra de entrada que permite o acesso ao perímetro do Cloud KMS, defina identityType como ANY_IDENTITY e especifique o projeto que contém o bucket de registros como o recurso de origem:

- ingressFrom:
    identityType: ANY_IDENTITY
    sources:
    - resource: projects/PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: cloudkms.googleapis.com
      methodSelectors:
      - method: '*'
    resources:
    - projects/KMS_PROJECT_NUMBER

No exemplo anterior, substitua o seguinte:

  • PROJECT_NUMBER: o número do projeto que contém o bucket de registros.
  • KMS_PROJECT_NUMBER: o número do projeto que contém a chave do Cloud KMS.

Se você também especificar uma regra de saída, ela também precisará definir identityType: ANY_IDENTITY.

Consultar registros de auditoria para ver informações sobre falhas

As consultas nesta seção podem ajudar você a encontrar entradas de registro que relatam falhas ao atualizar ou fazer upgrade de um bucket de registros. Essas consultas são para uso com a Análise de registros.

No console do Google Cloud , acesse a página Análise de registros:

Acessar a Análise de registros

Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.

Consultar todas as atualizações ou upgrades de bucket com falha em um projeto

log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
 protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync")
severity=ERROR

Se você usar o console do Google Cloud para fazer upgrade do bucket de registros para usar a Análise de Observabilidade e criar um conjunto de dados vinculado do BigQuery, use a seguinte consulta:

log_id("cloudaudit.googleapis.com/activity")
(protoPayload.serviceName="logging.googleapis.com" OR
 protoPayload.serviceName="bigquery.googleapis.com")
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
 protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync" OR
 protoPayload.methodName="google.cloud.bigquery.v2.DatasetService.InsertDataset")
severity=ERROR

Os resultados da consulta anterior incluem entradas de registro que indicam que a criação do conjunto de dados vinculado do BigQuery falhou. A mensagem de erro pode ajudar você a resolver a causa da falha.

Consultar atualizações ou upgrades de bucket com falha para um bucket específico

Antes de usar a consulta a seguir, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: o local do bucket.
  • LOG_BUCKET_ID: o ID do bucket.
log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
 protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync")
protoPayload.resourceName="projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID"
severity=ERROR

Consultar falhas de operação de longa duração

log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync"
operation.last=true
severity=ERROR

INVALID_ARGUMENT (3)

A mensagem de erro fornecida com um código do erro INVALID_ARGUMENT (3) contém informações suficientes para você resolver a falha. Por esse motivo, esta seção não enumera todas as mensagens de erro possíveis.

Problemas com nomes de recursos

Para resolver problemas com nomes de recursos, transmita um nome de recurso de bucket válido no formato projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID.

Verifique se o comprimento do nome do recurso está dentro dos limites.

Problemas com a máscara de atualização

Uma mensagem de erro que contém o texto update_mask ou Update mask indica um valor ausente ou incorreto.

Para resolver esse problema, no comando da API, especifique update_mask e defina o valor como "analytics_enabled".

Problemas de qualificação do bucket de registros

  • Não é possível fazer upgrade de um bucket de registros _Default bloqueado ou de buckets personalizados bloqueados. É possível fazer upgrade do bucket _Required enquanto ele estiver bloqueado.

    Quando um bucket de registros está bloqueado, a mensagem de erro é "Bucket is not eligible for an upgrade to enable analytics".

    Para resolver essa falha, crie um novo bucket com análise de dados ativada e encaminhe os registros para ele.

  • Não é possível fazer upgrade de um bucket de registros ao mesmo tempo em que você faz outras alterações nele. Por exemplo, não é possível fazer upgrade de um bucket de registros e atualizar a descrição dele.

    Para resolver essa falha, envie uma solicitação UpdateBucket ou UpdateBucketAsync separada com apenas analytics_enabled em update_mask e atualize outros campos do bucket de registros em uma solicitação separada.

  • Não é possível fazer upgrade de buckets de registros em organizações, pastas ou contas de faturamento. Só é possível fazer upgrade de buckets de registros que tenham um projeto do Google Cloud como pai.

  • Não é possível fazer upgrade de um bucket de registros que já foi ou está sendo atualizado.

    Use GetBucket ou ListOperations para determinar se um upgrade já foi concluído ou está em andamento.

Problemas com a chave do Cloud KMS

Mensagens de erro:

  • "Not a valid key reference (wrong type): 'KMS_KEY_NAME'"
  • "Name "KMS_KEY_NAME" is missing the COMPONENT component. Expected the form projects/[PROJECT_ID]/locations/[ID]/keyRings/[ID]/cryptoKeys/[ID]"

Resolução: atualize o cmek_settings.kms_key_name do bucket de registros para um nome de recurso válido do Cloud KMS CryptoKey antes de fazer upgrade do bucket. É preciso atualizar o nome do recurso, não a versão da chave, CryptoKeyVersion.

Mensagem de argumento inválido

Se a mensagem "Request contains an invalid argument." aparecer, tente o seguinte para buckets de registro com CMEK ativada:

  • Verifique se a conta de serviço do Logging associada à configuração de CMEK do bucket foi inicializada.
  • Verifique se o bucket tem um período de armazenamento positivo.

Para encontrar o nome da conta de serviço, execute o seguinte comando depois de atualizar o bucket de registros, o local e os IDs do projeto:

gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_ID

A conta de serviço pode estar em um projeto, uma pasta ou uma organização.

DEADLINE_EXCEEDED (4)

Use UpdateBucketAsync e pesquise a operação de longa duração retornada usando o método Operations.GetOperation ou chame GetBucket após o término do upgrade em segundo plano.

NOT_FOUND (5)

Para resolver essas falhas, tente o seguinte:

  • Verifique se o ID do projeto ou o número do projeto está correto e se o projeto está ativo. Se o projeto estiver com a exclusão pendente, restaure-o primeiro.
  • Verifique se o local especificado é compatível com o Logging.
  • Verifique se o ID do bucket de registros e o local existem no projeto e se o bucket de destino não é _CloudTrace.

PERMISSION_DENIED (7)

Um erro de permissão negada indica que a ação solicitada não é permitida.

Permissões do usuário ausentes

Para fazer upgrade de um bucket de registros, verifique se o autor da chamada tem um papel do Identity and Access Management (IAM) que inclui a permissão logging.buckets.update (como roles/logging.configWriter ou roles/logging.admin) e se nenhuma política personalizada da organização bloqueia a atualização.

Restrições da política da organização

Para resolver a mensagem de erro "Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: [ID]", verifique se o perímetro do VPC Service Controls não restringe o serviço logging.googleapis.com. Para mais informações, consulte Considerações sobre o perímetro do VPC Service Controls.

Problemas com endpoints regionais

Para resolver erros de permissão negada quando endpoints regionais são especificados, envie a solicitação para o endpoint global (logging.googleapis.com) ou para o endpoint regional que corresponde ao local do bucket de registros.

RESOURCE_EXHAUSTED (8)

Para resolver essa falha, aguarde a conclusão das operações de provisionamento em andamento e tente novamente com espera exponencial.

FAILED_PRECONDITION (9)

Para resolver essas falhas, tente o seguinte:

  • Verifique se o bucket de registros está no estado ACTIVE. Não é possível fazer upgrade de um bucket de registros que está sendo excluído ou que está passando por uma operação de atualização ou provisionamento.

    Para saber como determinar o estado de um bucket de registros, consulte Estado do bucket de registros durante um upgrade.

  • Não é possível fazer upgrade de um bucket de registros bloqueado.

  • A mensagem genérica "Precondition check failed." indica que o estado do bucket não é ACTIVE. Aguarde até que as operações em andamento sejam concluídas e tente fazer o upgrade novamente.

INTERNAL (13)

Mensagens de erro:

  • Operação de longa duração (Operations.GetOperation): "Failed to create analytics enabled bucket."
  • Registros de auditoria do Cloud e UpdateBucket síncrono: "Internal error encountered."

Resolução: tente o seguinte:

  • Para um bucket de registros com CMEK, verifique se a chave do Cloud KMS está ativada, se a conta de serviço do Logging associada à configuração de CMEK do bucket tem o papel roles/cloudkms.cryptoKeyEncrypterDecrypter na chave, se a chave está acessível ao BigQuery e se nenhuma política da organização ou perímetro do VPC Service Controls bloqueia o acesso ao Cloud KMS.

    Para encontrar o nome da conta de serviço, execute o seguinte comando:

    gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_ID
    

    A conta de serviço pode estar em um projeto, uma pasta ou uma organização.

  • Inspecione as visualizações de registro atuais no bucket (logging.views.list) para garantir que os filtros sejam válidos e tente fazer o upgrade do bucket novamente.

  • Verifique se o bucket de registros não foi excluído (DELETE_REQUESTED) e se nenhuma ação administrativa conflitante está ocorrendo no bucket. Em seguida, tente fazer o upgrade novamente.

  • Tente fazer o upgrade do bucket de registros novamente depois que os erros temporários de criação de índice da Pesquisa ou conjunto de dados de armazenamento do BigQuery forem resolvidos ou quando a disponibilidade do BigQuery, do Cloud KMS ou do serviço de provisionamento downstream for restaurada. Se a falha persistir, entre em contato com o Cloud Customer Care.

UNAVAILABLE (14)

Se a mensagem "The service is currently unavailable." aparecer, tente novamente a solicitação UpdateBucketAsync com espera exponencial.