Actualizar un bucket de registros para usar Estadísticas de observabilidad te permite ejecutar consultas en SQL para analizar los datos de registro almacenados en ese bucket. Si la actualización de un bucket de registros falla o se detiene, puedes usar este documento para diagnosticar y resolver errores de validación síncronos, errores de aprovisionamiento asíncronos y operaciones bloqueadas. Para obtener información sobre cómo actualizar un bucket de registros, consulta Actualiza un bucket para usar Estadísticas de observabilidad.
Acerca del proceso de actualización
Cloud Logging usa un proceso de dos pasos cuando emites un comando para actualizar un bucket de registros y usar Estadísticas de observabilidad:
- Validación síncrona: Logging valida los parámetros del comando. Si la validación falla, el comando devuelve un error de inmediato.
- Aprovisionamiento asíncrono: Si la validación se realiza correctamente, Logging inicia una operación de larga duración que, por lo general, se completa en un plazo de 10 minutos.
Las actualizaciones de bucket de registros son operaciones auditadas. Para verificar el estado de la operación de larga duración o encontrar detalles de errores, puedes sondear la operación con el método Operations.GetOperation o consultar tus registros de auditoría.
Estado del bucket de registros durante una actualización
Cuando la validación síncrona de una solicitud de actualización se realiza de forma correcta,
Logging cambia el estado del bucket de registros de ACTIVE a
UPDATING y, luego, inicia la operación de larga duración. Cuando se completa la operación, el estado del bucket de registros vuelve a ser ACTIVE.
Para determinar el estado actual de un bucket de registros, ejecuta el
comando gcloud logging buckets describe:
gcloud logging buckets describe LOG_BUCKET_ID \
--location=LOCATION_ID \
--project=PROJECT_ID
Antes de ejecutar el comando, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID de tu proyecto.
- LOCATION_ID: Es la ubicación de tu bucket.
- LOG_BUCKET_ID: Es el ID de tu bucket.
El campo lifecycleState de la respuesta muestra el estado del bucket:
description: Default bucket
lifecycleState: ACTIVE
name: projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID
retentionDays: 30
En la consola de Google Cloud , mientras el bucket de registros está en el estado UPDATING, haz lo siguiente:
- En la página Almacenamiento de registros, la columna Estadísticas de observabilidad disponibles muestra Actualizando… mientras la operación de larga duración está activa (o No apto para la actualización si la consola no puede recuperar el estado de la operación).
- En los paneles Editar bucket y Actualizar bucket de registros, la opción para actualizar el bucket está inhabilitada y la información sobre la herramienta indica No hay actualizaciones pendientes como un requisito no cumplido.
Consideraciones sobre el perímetro de los Controles del servicio de VPC
Las actualizaciones de los buckets de registros dentro de un perímetro de Controles del servicio de VPC pueden fallar debido a que el perímetro bloquea las APIs o a configuraciones entre proyectos.
APIs que debe permitir el perímetro
Para actualizar un bucket de registros que se encuentra dentro de un perímetro de Controles del servicio de VPC, el perímetro no debe restringir los siguientes servicios:
logging.googleapis.comcloudkms.googleapis.com: Es obligatorio para actualizar un bucket de registros que usa una clave de encriptación administrada por el cliente (CMEK).
La restricción de estos servicios provoca el siguiente comportamiento:
logging.googleapis.comrestringido: El comando de actualización falla de inmediato con un errorPERMISSION_DENIED, y tu bucket de registros permanece en el estadoACTIVE.Resolución: Actualiza el perímetro para permitir las APIs que se indican al principio de esta sección y, luego, vuelve a intentar ejecutar el comando.
cloudkms.googleapis.comrestringido: En el caso de los buckets de registros protegidos con CMEK, la operación de larga duración falla con un errorINTERNALy el bucket de registros vuelve al estadoACTIVE.Resolución: Actualiza el perímetro para permitir las APIs que se indican al principio de esta sección y, luego, vuelve a intentar ejecutar el comando.
Configuraciones de CMEK entre perímetros
No puedes usar reglas de entrada o salida basadas en la identidad para otorgar acceso entre perímetros a la clave de Cloud Key Management Service cuando el bucket de registros y la clave de Cloud KMS se encuentran en perímetros de Controles del servicio de VPC diferentes.
En esta configuración, si tu regla de entrada especifica solo la identidad de la cuenta de servicio de Logging, ocurre lo siguiente:
- El aprovisionamiento asíncrono falla con un error
INTERNALy tu bucket de registros vuelve al estadoACTIVE. - Un registro de auditoría de políticas para el proyecto de Cloud KMS registra la falla.
Este registro de auditoría muestra que el
método
google.cloud.kms.v1.KeyManagementService.Encryptfalló con una violación de entradaNO_MATCHING_ACCESS_LEVELy, además, indica que es para una cuenta de servicio de encriptación de BigQuery.
Resolución: En la regla de entrada que permite el acceso al perímetro de Cloud KMS, establece identityType en ANY_IDENTITY
y especifica el proyecto que contiene el bucket de registros como el recurso de origen:
- ingressFrom:
identityType: ANY_IDENTITY
sources:
- resource: projects/PROJECT_NUMBER
ingressTo:
operations:
- serviceName: cloudkms.googleapis.com
methodSelectors:
- method: '*'
resources:
- projects/KMS_PROJECT_NUMBER
En el ejemplo anterior, reemplaza lo siguiente:
- PROJECT_NUMBER: Es el número del proyecto que contiene el bucket de registros.
- KMS_PROJECT_NUMBER: Es el número del proyecto que contiene la clave de Cloud KMS.
Si también especificas una regla de salida, esta también debe establecer
identityType: ANY_IDENTITY.
Consulta los registros de auditoría para obtener información sobre los errores
Las consultas de esta sección pueden ayudarte a encontrar entradas de registro que informen fallas cuando se actualiza un bucket de registros. Estas consultas se usan con el Explorador de registros.
En la consola de Google Cloud , ve a la página Explorador de registros del :
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.
Consulta todas las actualizaciones o mejoras de bucket con errores en un proyecto
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
Si usas la consola de Google Cloud para actualizar tu bucket de registros para usar Estadísticas de observabilidad y crear un conjunto de datos de BigQuery vinculado, usa la siguiente 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
Los resultados de la consulta anterior incluyen entradas de registro que indican que falló la creación del conjunto de datos de BigQuery vinculado. El mensaje de error puede ayudarte a resolver la causa de la falla.
Consulta las actualizaciones o mejoras con errores de un bucket específico
Antes de usar la siguiente consulta, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID de tu proyecto.
- LOCATION_ID: Es la ubicación de tu bucket.
- LOG_BUCKET_ID: Es el ID de tu 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
Consulta las fallas de operaciones de larga duración
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)
El mensaje de error que se proporciona con un código de error INVALID_ARGUMENT (3) contiene información suficiente para que resuelvas la falla. Por este motivo, en esta sección no se enumeran todos los mensajes de error posibles.
Problemas con los nombres de los recursos
Para resolver problemas con los nombres de los recursos, pasa
un nombre de recurso de bucket válido en el formato
projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID.
Asegúrate de que la longitud del nombre del recurso esté dentro de los límites de longitud.
Problemas con la máscara de actualización
Un mensaje de error que contiene el texto update_mask o Update mask indica
un valor faltante o con formato incorrecto.
Para resolver este problema, en el comando de la API, especifica update_mask y establece el
valor en "analytics_enabled".
Problemas de elegibilidad de bucket de registros
No puedes actualizar un bucket de registros
_Defaultbloqueado ni buckets personalizados bloqueados. Puedes actualizar el bucket_Requiredmientras está bloqueado.Cuando un bucket de registros está bloqueado, el mensaje de error es
"Bucket is not eligible for an upgrade to enable analytics".Para resolver esta falla, crea un bucket nuevo habilitado para las estadísticas y enruta los registros a él.
No puedes actualizar un bucket de registros al mismo tiempo que realizas otros cambios en él. Por ejemplo, no puedes actualizar un bucket de registros y actualizar su descripción.
Para resolver este error, envía una solicitud
UpdateBucketoUpdateBucketAsyncindependiente con soloanalytics_enabledenupdate_masky actualiza otros campos del bucket de registros en una solicitud independiente.No puedes actualizar los buckets de registros en organizaciones, carpetas ni cuentas de facturación. Solo puedes actualizar los buckets de registros cuyo elemento superior sea un proyecto de Google Cloud .
No puedes actualizar un bucket de registros que ya se actualizó o que se está actualizando.
Usa
GetBucketoListOperationspara determinar si una actualización ya se completó o está en curso.
Problemas con las claves de Cloud KMS
Mensajes de error:
"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]"
Resolución: Actualiza el cmek_settings.kms_key_name del bucket de registros a un nombre de recurso CryptoKey de Cloud KMS válido antes de actualizar el bucket.
Debes actualizar el nombre del recurso, no la versión de la clave, CryptoKeyVersion.
Mensaje de argumento no válido
Si ves el mensaje "Request contains an invalid argument.", prueba lo siguiente para los buckets de registros con CMEK habilitadas:
- Asegúrate de que se inicialice la cuenta de servicio de Logging asociada con la configuración de CMEK del bucket.
- Asegúrate de que el bucket tenga un período de retención positivo.
Para encontrar el nombre de la cuenta de servicio, ejecuta el siguiente comando después de actualizar el bucket de registros, la ubicación y los IDs del proyecto:
gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_ID
La cuenta de servicio puede estar en un proyecto, una carpeta o una organización.
DEADLINE_EXCEEDED (4)
Usa UpdateBucketAsync y sondea la operación de larga duración
que se muestra con el método Operations.GetOperation, o llama a GetBucket
después de que finalice la actualización en segundo plano.
NOT_FOUND (5)
Para resolver estos errores, intenta lo siguiente:
- Verifica que el ID del proyecto o el número del proyecto sean correctos y que el proyecto esté activo. Si el proyecto está pendiente de eliminación, restablécelo primero.
- Asegúrate de que Logging admita la ubicación especificada.
- Verifica que el ID de bucket de registros y la ubicación existan en el proyecto
y que el bucket de destino no sea
_CloudTrace.
PERMISSION_DENIED (7)
Un error de permiso denegado indica que no se permite la acción solicitada.
Faltan permisos del usuario
Para actualizar un bucket de registros, asegúrate de que el emisor tenga un
rol de Identity and Access Management (IAM) que incluya el
permiso logging.buckets.update (como roles/logging.configWriter o
roles/logging.admin) y verifica que ninguna política de la organización personalizada bloquee
la actualización.
Restricciones de las políticas de la organización
Para resolver el mensaje de error
"Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: [ID]",
asegúrate de que el perímetro de los Controles del servicio de VPC no restrinja el
servicio logging.googleapis.com. Para obtener más información, consulta
Consideraciones sobre el perímetro de los Controles del servicio de VPC.
Problemas con los extremos regionales
Para resolver los errores de permiso denegado cuando se especifican extremos regionales,
envía la solicitud al extremo global (logging.googleapis.com) o al
extremo regional que coincida con la ubicación del bucket de registros.
RESOURCE_EXHAUSTED (8)
Para resolver este error, espera a que finalicen las operaciones de aprovisionamiento en curso y vuelve a intentarlo con una retirada exponencial.
FAILED_PRECONDITION (9)
Para resolver estos errores, intenta lo siguiente:
Verifica que el bucket de registros esté en el estado
ACTIVE. No puedes actualizar un bucket de registros que se está borrando o que se está actualizando o aprovisionando.Para obtener información sobre cómo determinar el estado de un bucket de registros, consulta Estado del bucket de registros durante una actualización.
No puedes actualizar un bucket de registros bloqueado.
El mensaje genérico
"Precondition check failed."indica que el estado del bucket no esACTIVE. Espera hasta que se completen las operaciones en curso y, luego, vuelve a intentar la actualización.
INTERNAL (13)
Mensajes de error:
- Operación de larga duración (
Operations.GetOperation):"Failed to create analytics enabled bucket." - Registros de auditoría de Cloud y
UpdateBucketsíncronos:"Internal error encountered."
Resolución: Prueba lo siguiente:
En el caso de un bucket de registros habilitado para CMEK, verifica que la clave de Cloud KMS esté habilitada, que la cuenta de servicio de Logging asociada con la configuración de CMEK del bucket tenga el rol
roles/cloudkms.cryptoKeyEncrypterDecrypteren la clave, que BigQuery pueda acceder a la clave y que ninguna política de la organización ni perímetro de Controles del servicio de VPC bloqueen el acceso a Cloud KMS.Para encontrar el nombre de la cuenta de servicio, ejecuta el siguiente comando:
gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_IDLa cuenta de servicio puede estar en un proyecto, una carpeta o una organización.
Inspecciona las vistas de registro existentes en el bucket (
logging.views.list) para asegurarte de que sus filtros sean válidos y vuelve a intentar la actualización del bucket.Asegúrate de que no se haya borrado el bucket de registros (
DELETE_REQUESTED) y de que no se esté produciendo ninguna acción administrativa en conflicto en el bucket. Luego, vuelve a intentar la actualización.Vuelve a intentar actualizar el bucket de registros después de que se resuelvan los errores transitorios de creación del conjunto de datos de almacenamiento de BigQuery o del índice de búsqueda, o una vez que se restablezca la disponibilidad del servicio de aprovisionamiento, Cloud KMS o BigQuery downstream. Si la falla persiste, comunícate con Atención al cliente de Cloud.
UNAVAILABLE (14)
Si ves el mensaje "The service is currently unavailable.", vuelve a intentar la solicitud UpdateBucketAsync con una retirada exponencial.