Exporta registros con Google Cloud Console

En esta página, se explica cómo exportar entradas de registro con Cloud Console y la herramienta de línea de comandos de gcloud.

También puedes exportar entradas de registro con la API de Cloud Logging.

Para obtener una descripción general conceptual sobre la exportación de registros, consulta Descripción general de las exportaciones de registros. En resumen, los registros se exportan mediante la creación de uno o más receptores que incluyen un filtro de registros y un destino de exportación. A medida que Cloud Logging recibe entradas de registro nuevas, se las compara con cada receptor. Si una entrada de registro coincide con el filtro de un receptor, se escribe una copia de la entrada de registro en el destino de exportación.

Puedes exportar registros a los siguientes destinos:

Para obtener información sobre cómo se les da formato y se organizan los registros exportados, además de cómo verlos, ve a Usa registros exportados.

Crea y administra receptores con el explorador y el enrutador de registros

Con Cloud Console, puedes hacer lo siguiente:

  • Mira todos tus receptores en un solo lugar.
  • Mira qué entradas de registro coinciden con tu consulta de receptor antes de crear un receptor.
  • Crea y autoriza destinos de exportación para tus receptores.

Sin embargo, Cloud Console solo puede crear o ver receptores en los proyectos. Para crear receptores en organizaciones, carpetas o cuentas de facturación con la herramienta de línea de comandos de gcloud o la API de Cloud Logging, consulta Receptores agregados.

Antes de crear un receptor, verifica lo siguiente:

  • Tienes un proyecto de Google Cloud con registros que puedes ver en el Explorador de registros.

  • Tienes las funciones de IAM de Propietario o Escritor de configuración de registros o Logging en el proyecto de Cloud para crear, borrar o modificar un receptor. Ve a Permisos y funciones para obtener más información.

  • Tienes un servicio de destino o tienes la capacidad de crear un servicio de destino.

Crea un receptor

Para crear un receptor desde la página del Explorador de registros, selecciona Acciones > Crear receptor.

El menú muestra la opción Crear receptor.

Para crear un receptor desde la página Enrutador de registros, selecciona Crear receptor.

Selecciona Crear receptor desde el enrutador de registros

Después de seleccionar Crear receptor (Create Sink), completa los siguientes pasos en el panel Crear receptor de enrutamiento de registros:

  1. Ingresa los detalles del receptor

    • Nombre del receptor: proporciona un identificador para el receptor.

    • Descripción del receptor (opcional): describe el propósito o caso práctico del receptor.

  2. Ingresa el destino del receptor

    • Seleccionar servicio de receptor: selecciona el servicio en el que quieres enrutar tus registros.

    Los siguientes servicios y destinos están disponibles:

    • Depósito de registros de Cloud Logging: selecciona o crea un depósito de registros.
    • BigQuery: selecciona o crea el conjunto de datos específico para recibir los registros exportados. También tienes la opción de usar tablas particionadas.
    • Cloud Storage: selecciona o crea el depósito de Cloud Storage en particular para recibir los registros exportados.
    • Pub/Sub: selecciona o crea el tema específico para recibir los registros exportados.
    • Splunk: Selecciona el tema de Pub/Sub para tu servicio de Splunk.
    • Otro proyecto: Agrega el servicio de Google Cloud y el destino en el siguiente formato:

      SERVICE.googleapis.com/projects/PROJECT_ID/DESTINATION/DESTINATION_ID
      

      Por ejemplo, si tu destino de exportación es un conjunto de datos de BigQuery, el destino del receptor sería el siguiente:

      bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
      

  3. Elige registros para incluirlos en el receptor

    • Compila un filtro de inclusión: ingresa un filtro para seleccionar los registros que deseas enrutar al destino del receptor.

    Recomendamos que compiles un filtro para enrutar todos los registros de acceso a los datos a un solo bucket. Este filtro se verá de la siguiente manera:

    LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")
    

    Para verificar si ingresaste el filtro correcto, selecciona Obtener vista previa de los registros. Esto abrirá el Explorador de registros en una pestaña nueva con el filtro propagado previamente. Para obtener información sobre cómo crear un filtro, consulta Lenguaje de consulta de Logging.

  4. Elige registros para excluir del receptor (opcional)

    • Compila un filtro de exclusión: selecciona Agregar exclusión y, luego, ingresa un filtro para seleccionar los registros que no deseas enrutar al destino del receptor.

    • Nombre de filtro de exclusión: proporciona un identificador para el filtro de exclusión.

    • Frecuencia de filtros de exclusión: Proporciona un número entero entre 0 y 100. Los registros entrantes que coinciden con el filtro de exclusión se muestrean según ese valor.

      Un valor 0 muestra 0 porciento de los registros que coinciden con el filtro; por lo tanto, 0 equivale a inhabilitar el filtro de exclusión. Un valor 100 muestra el 100 porciento de todos los registros. Por lo tanto, todos los registros que coinciden con el filtro de exclusión se excluyen del destino. Un valor 50 muestra el 50 porciento de los registros que coinciden con el filtro de exclusión; por lo tanto, se excluye el 50 porciento de los registros que coinciden con la exclusión, mientras que el otro 50 porciento se enruta al destino.

      Puedes crear hasta 50 filtros de exclusión por receptor.

  5. Selecciona Crear receptor.

Las entradas de registro nuevas que coinciden con el filtro de tu receptor se enrutan al destino del receptor. Las entradas de registro que vayan a depósitos de registro, BigQuery o Pub/Sub se transmitirán de inmediato. Las que vayan a Cloud Storage se enviarán por lotes alrededor de una vez por hora. Para obtener información sobre cómo ver los registros en los destinos exportados, ve a la página sobre cómo usar los registros exportados.

Si Logging experimenta errores cuando se intentan exportar registros a tu destino de exportación, los errores aparecerán en Flujo de actividad en tu proyecto. Selecciona Actividad en la parte superior de la página principal de tu proyecto en Google Cloud Console. Para diagnosticar errores comunes, ve a la sección sobre solución de problemas que se encuentra más abajo.

Exporta registros a otro proyecto de Google Cloud

Puedes exportar registros a un destino en un proyecto de Cloud diferente de aquel en el que se crea el receptor.

Para ello, debes realizar una de las acciones siguientes:

  • Tener uno de los siguientes permisos de IAM en el proyecto de Cloud al que envías registros:

    • Propietario (roles/owner)
    • Administrador de Logging (roles/logging.admin)
    • Escritor de configuración de registros (roles/logging.configWriter)
  • Proporciona a la cuenta de servicio de tu receptor la función roles/logging.logWriter para escribir en el destino.

Para obtener más instrucciones sobre cómo proporcionar los permisos correctos en la cuenta de servicio del receptor, consulta Permisos de destino. Para ver la lista de funciones y permisos de Logging, consulta Control de acceso.

Administra receptores

Una vez que se crea tu receptor, puedes verlo en la página Enrutador de registros, en la que puedes realizar las siguientes acciones:

  • Ver los detalles del receptor
  • Edita el receptor
  • Inhabilita el receptor
  • Borra el receptor

Para ir a la página del enrutador de registros, ve al menú de Logging y selecciona Enrutador de registros.

Ir a Enrutador de registros

La interfaz del Enrutador de registros contiene un resumen de la tabla de los receptores. Cada fila de la tabla contiene información correspondiente a algunas de las propiedades del receptor descritas en Exportaciones de registros:

  • Tipo: el tipo de destino del receptor
  • Nombre: El identificador del receptor en el proyecto actual.
  • Descripción: la descripción del receptor
  • Destino (Destination): nombre completo para el destino de las entradas de registro exportadas.
  • Estado: Indica si el receptor está habilitado o inhabilitado.

Cada fila de la tabla tiene un menú y cuenta con las siguientes opciones:

  • Ver detalles del receptor: muestra el nombre del receptor, la descripción, el servicio, el destino y los filtros de inclusión y exclusión. Si seleccionas Edit (Editar), podrás cambiar las propiedades del receptor.
  • Editar receptor: Abre un panel de Editar receptor en el que puedes cambiar los parámetros del receptor.
  • Inhabilitar el receptor: te permite inhabilitar el receptor y dejar de enrutar registros al destino del receptor.

  • Habilitar el receptor: te permite habilitar un receptor inhabilitado y reiniciar los registros de enrutamiento al destino del receptor.

  • Borrar receptor: Te permite borrar el receptor y detener el enrutamiento de los registros al destino del receptor. Los receptores _Default y _Required no se pueden borrar, pero el receptor _Default puede inhabilitarse para detener el enrutamiento de registros en el depósito de registros _Default.

Hacer clic en cualquiera de los nombres de columna te permite ordenar los datos de forma ascendente o descendente. En la parte inferior de la tabla, también puedes seleccionar la cantidad de filas que deseas mostrar.

Crea y administra receptores con la herramienta de línea de comandos de gcloud

Para crear un receptor, ejecuta el comando gcloud alpha logging sinks create:

gcloud alpha logging sinks create SINK_NAME SINK_LOCATION OPTIONAL_FLAGS

Por ejemplo, para crear un receptor a un bucket de registros de Cloud Logging ejecuto lo siguiente:

gcloud alpha logging sinks create my-sink logging.googleapis.com/projects/myproject123/locations/global/buckets/my-bucket \
  --log-filter='logName="projects/myproject123/logs/matched"' --description="My first sink"

Enruta registros de un proyecto a un bucket en un proyecto diferente

Para enrutar los registros de tu proyecto actual a un bucket de un proyecto diferente, completa los siguientes pasos.

Ten en cuenta que los receptores de depósitos entre proyectos requieren agregar los permisos de administración de identidades y accesos adecuados a la cuenta de servicio que Logging crea para estos receptores. También debes habilitar la facturación en el proyecto de Google Cloud del depósito de destino.

  1. Si aún no lo hiciste, crea un bucket en el otro proyecto:

     gcloud alpha logging buckets create BUCKET_ID --project=DESTINATION_PROJECT_ID
    
  2. Crea un receptor para enrutar los registros al otro bucket:

     gcloud alpha logging sinks create SINK_NAME \
       logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/global/buckets/BUCKET_ID \
       --log-filter='FILTER_CONDITIONS'
    
  3. Obtén la cuenta de servicio del campo writerIdentity en tu receptor:

     gcloud alpha logging sinks describe SINK_NAME
    

    La cuenta de servicio se verá de la siguiente manera:

     serviceAccount:p123456789012-12345@gcp-sa-logging.iam.gserviceaccount.com
    
  4. Otorga la función roles/logging.bucketWriter a la cuenta de servicio.

    1. Obtén la política de administración de identidades y accesos para el proyecto de destino y escríbela en un archivo local en formato JSON:

      gcloud projects get-iam-policy DESTINATION_PROJECT_ID --format json > output.json
      
    2. Agrega una condición de IAM que permita que la cuenta de servicio solo escriba en el bucket que creaste. Por ejemplo:

       {
         "bindings": [
           {
             "members": [
               "user:username@gmail.com"
             ],
             "role": "roles/owner"
           },
           {
             "members": [
               "[SERVICE_ACCOUNT]"
             ],
             "role": "roles/logging.bucketWriter",
             "condition": {
                 "title": "Bucket writer condition example",
                 "description": "Grants logging.bucketWriter role to service account [SERVICE_ACCOUNT] used by log sink [SINK_NAME]",
                 "expression":
                   "resource.name.endsWith("locations/global/buckets/BUCKET_ID")"
             }
           }
         ],
         "etag": "BwWd_6eERR4=",
         "version": 3
       }

    3. Actualiza la política de IAM:

      gcloud projects set-iam-policy DESTINATION_PROJECT_ID output.json
      

Detén la transferencia de los registros

Cuando inhabilitas la transferencia de registros para el depósito _Default mediante la inhabilitación del receptor _Default y otros receptores que se enrutan al depósito _Default, Cloud Logging deja de transferir y almacenar tus datos de registros en el _Default. El depósito _Default contiene registros hasta que se cumplan las siguientes dos condiciones:

  • Ningún receptor se enruta al depósito _Default.

  • Venció el período de retención del depósito.

Una vez que hayas inhabilitado todos los receptores que envían registros al depósito _Default, Cloud Logging ya no cobra por transferir registros nuevos al depósito.

Para inhabilitar la transferencia de registros, completa los siguientes pasos:

  1. Ve al enrutador de registros.

    Ir a Enrutador de registros

  2. Para encontrar todos los receptores que enrutan los registros al depósito _Default, filtra los receptores por destino y, luego, ingresa _Default.

    Encuentra todos los receptores que enrutan los registros al depósito predeterminado

  3. Para cada receptor, selecciona Menú y, luego, Inhabilitar receptor.

    El receptor predeterminado está inhabilitado

Los receptores ahora están inhabilitados y Cloud Logging ya no enruta los registros al depósito _Default.

Permisos de destino

En esta sección, se describe cómo otorgar a Logging los permisos de administración de identidades y accesos para escribir los registros exportados en el destino de exportación del receptor.

Cuando creas un receptor, Logging crea una cuenta de servicio nueva para él, denominada identidad de escritor única. No puedes administrar esta cuenta de servicio directamente, ya que Cloud Logging es el propietario y el que la administra. La cuenta de servicio se borra si se borra el receptor.

Tu destino de exportación debe permitir que esta cuenta de servicio escriba entradas de registro. Para configurar este permiso, sigue estos pasos:

  1. Crea el receptor nuevo en Cloud Console, la interfaz de línea de comandos de gcloud logging o la API de Logging.

  2. Si creaste el receptor en Cloud Console y tienes acceso de Propietario al destino, entonces Cloud Logging debería haber configurado los permisos necesarios por ti. Si es así, no tienes que hacer nada más. De lo contrario, continúa con los siguientes pasos.

  3. Obtén la identidad de escritor del receptor nuevo, que es una dirección de correo electrónico:

    • Si usas Cloud Console, ve a la página Enrutador de registros y selecciona menú > Ver detalles del receptor. La identidad de escritor aparece en el panel Detalles del receptor (Sink details).
    • Si usas gcloud logging, las identidades del escritor aparecen cuando generas una lista de tus receptores.
    • Si usas la API de Logging, puedes obtener la identidad de escritor desde el objeto LogSink.
  4. Si tienes acceso de Propietario al destino, agrega la cuenta de servicio de la siguiente manera:

    • Para los destinos de Cloud Storage, agrega la identidad de escritor del receptor a tu depósito y asígnale la función de creador de objetos de almacenamiento.
    • Para los destinos de BigQuery, agrega la identidad de escritor del receptor a tu conjunto de datos y asígnale la función de editor de datos de BigQuery.
    • En el caso de Pub/Sub, agrega la identidad de escritor del receptor a tu tema y asígnale la función de publicador de Pub/Sub.
    • Para los destinos de depósitos de registros, agrega la identidad de escritor del receptor al depósito de registros para otorgarle el permiso roles/logging.bucketWriter.
  5. Si no tienes acceso de Propietario al destino de exportación, envía el nombre de la cuenta de servicio de la identidad de escritor a alguien que tenga esa capacidad. Esa persona debe seguir las instrucciones del paso anterior para agregar la identidad de escritor al destino de exportación.

Retrasos en la autorización

Si un receptor intenta exportar una entrada de registro, pero carece del permiso de IAM correspondiente al destino de exportación, el receptor informa un error y omite la entrada de registro. Esto continúa hasta que se otorga el permiso, momento en el que el receptor comienza a exportar entradas de registro nuevas.

Existe una demora entre la creación del receptor y el uso de su cuenta de servicio nueva para autorizar la escritura en el destino de exportación. Durante las primeras 24 horas después de la creación del receptor, es posible que veas mensajes de error relacionados con permisos del receptor en la página Actividad del proyecto, pero puedes ignorarlos.

Soluciona problemas

A continuación, se describen algunos problemas comunes que puedes encontrar cuando exportas registros y qué hacer al respecto:

  • Errores del destino: verifica la especificación del destino de exportación en el receptor. Usa projects.sinks.get a fin de encontrar la identidad de escritor para tu receptor y asegúrate de que la identidad tenga permisos de escritura en tu destino de exportación.

  • No se exportan registros: a continuación se mencionan algunas razones posibles:

    • Tu consulta es incorrecta. Revisa tu consulta de exportación para verificar si las entradas de registro que coinciden con tu consulta llegaron recientemente a Logging; corrige cualquier error ortográfico o de formato.

    • No se recibieron entradas de registro coincidentes desde que creaste o actualizaste tu receptor; solo se exportan entradas de registro nuevas.

      Hay una demora antes de poder ver los registros exportados en el destino. Esto sucede en particular en los destinos de Cloud Storage. Para obtener más información, consulta la página Disponibilidad de registros exportados.

      También puedes consultar las métricas del sistema de exportación. Estas métricas del sistema de exportación te pueden decir cuántas entradas de registro se exportan y cuántas se descartan debido a errores.

Tu receptor comienza a exportar registros cuando se corrigen los errores.

Para ver los errores del receptor mediante el visor de registros, haz lo siguiente:

  1. Ve a Flujo de actividad del proyecto o de otro recurso donde se creó el receptor:

    Ir a Flujo de actividad

  2. En el panel Filtros, selecciona Tipo de actividad > Configuración y Tipo de recurso > Receptor de exportación de registro.

  3. Ajusta la Fecha y hora para ver los errores de receptor durante el período correspondiente.

    Aparecerán los errores del receptor.

En las siguientes secciones, se enumeran algunos posibles errores específicos del servicio y resultados inesperados, y se explica qué hacer al respecto.

Errores en la exportación a Cloud Storage

En la siguiente tabla, se enumeran los errores más comunes cuando se exportan registros a Cloud Storage:

Error Causa Solución
Los permisos del bucket [YOUR_BUCKET] no permiten que el grupo de registros cree objetos nuevos. La identidad de escritor del receptor no tiene los permisos correctos para el bucket. Agrega los permisos necesarios al bucket o actualiza tu receptor para que use un bucket diferente. Consulta Permisos de destino.
No hay ningún bucket con este nombre: [YOUR_BUCKET]. Es posible que haya un error en el nombre del bucket, o que el bucket se haya borrado. Actualiza tu receptor con el destino de bucket correcto.
El receptor se creó correctamente. Sin embargo, no pudimos otorgar los permisos correctos para el destino. El modelo de control de acceso del depósito se estableció en Uniforme cuando se creó el depósito.

(Este mensaje de error continúa mostrándose después de agregar la cuenta de servicio).
Selecciona el modelo de control de acceso Detallado durante la creación del depósito. Para los depósitos existentes, puedes cambiar el modelo de control de acceso durante los primeros 90 días posteriores a la creación del depósito mediante la pestaña Permisos.

Errores en la exportación a BigQuery

En la siguiente tabla, se enumeran los errores más comunes cuando se exportan registros a BigQuery:

Error Causa Solución
Los permisos del conjunto de datos [YOUR_DATASET] no permiten que el grupo de registros cree tablas nuevas. La identidad de escritor del receptor no tiene suficientes permisos sobre el conjunto de datos. Agrega el permiso al conjunto de datos. Consulta Permisos de destino.
No hay ningún conjunto de datos con este nombre: [YOUR_DATASET]. Es posible que haya un error en el destino de tu receptor o que alguien haya borrado el conjunto de datos. Vuelve a crear el conjunto de datos o actualiza el receptor de exportación para que use un conjunto de datos diferente.
Los registros transmitidos a la tabla [YOUR_TABLE] en el conjunto de datos [YOUR_DATASET] no coinciden con el esquema de tablas. Intentas exportar registros que son incompatibles con el esquema de la tabla actual. Asegúrate de que tus entradas de registro coincidan con el esquema de la tabla. Los problemas comunes incluyen el envío de entradas de registro con diferentes tipos de datos. Por ejemplo, uno de los campos en la entrada de registro es un número entero, mientras que una columna correspondiente en el esquema tiene un tipo de string. El flujo de actividad contiene un vínculo a una de las entradas de registro no válidas. Después de corregir el origen del error, puedes cambiar el nombre de tu tabla actual y dejar que Logging cree la tabla de nuevo.
Se superó la cuota de inserción de transmisión por tabla en la tabla [YOUR_TABLE] del conjunto de datos [YOUR_DATASET]. Exportas demasiadas entradas de registro muy rápido. Consulta los límites de cuota predeterminados de BigQuery, que se aplican a la transmisión de registros. Disminuye la cantidad de datos de registro que genera tu receptor. Puedes actualizar la consulta de tu receptor para que coincida con menos entradas de registro o usar la función sample().
Los registros transmitidos a la tabla particionada [YOUR_TABLE] se encuentran fuera de los límites de tiempo permitidos. BigQuery no acepta registros con fechas muy lejanas en el pasado o el futuro. Los registros fuera de los límites de tiempo permitidos no se pueden exportar con receptores. Puedes exportar esos registros a Cloud Storage y usar un trabajo de carga de BigQuery en su lugar. Consulta la documentación de BigQuery para obtener más instrucciones.
Los registros no se pueden transmitir al conjunto de datos [YOUR_DATASET] porque una política de la organización prohíbe esa operación. Existe una política de la organización que impide la escritura en el conjunto de datos seleccionado. Consulta la documentación para obtener más detalles sobre las políticas de la organización. Modifica tu receptor de exportación para que use un conjunto de datos compatible.

Errores en la exportación de registros a Pub/Sub

En la siguiente tabla, se enumeran los errores más comunes en la exportación de registros a Pub/Sub:

Error Causa Solución
[ACCOUNT] necesita permiso de edición sobre [PROJECT] para publicar a [TOPIC]. La identidad de escritor del receptor no tiene los permisos correctos para el tema. Agrega los permisos necesarios a tu proyecto. Consulta Permisos de destino.
El tema [TOPIC] no existe. Quizás borraste el tema configurado para recibir tus registros exportados. Vuelve a crear el tema con el mismo nombre o cambia la configuración de exportación para usar un tema diferente.

¿Qué sigue?