Implementar un trabajo para importar registros de Cloud Storage a Cloud Logging

Last reviewed 2025-02-19 UTC

En este documento se describe cómo desplegar la arquitectura de referencia que se describe en Importar registros de Cloud Storage a Cloud Logging.

Estas instrucciones están dirigidas a ingenieros y desarrolladores, incluidos los de DevOps, los de fiabilidad de sitios (SREs) y los investigadores de seguridad, que quieran configurar y ejecutar el trabajo de importación de registros. En este documento también se da por hecho que sabes cómo ejecutar tareas de importación de Cloud Run y cómo usar Cloud Storage y Cloud Logging.

Arquitectura

En el siguiente diagrama se muestra cómo se usan los servicios de Google Cloud en esta arquitectura de referencia:

Diagrama de flujo de trabajo de la importación de registros de Cloud Storage a Cloud Logging.

Para obtener más información, consulta Importar registros de Cloud Storage a Cloud Logging.

Objetivos

  • Crear y configurar una tarea de importación de Cloud Run
  • Crear una cuenta de servicio para ejecutar el trabajo

Costes

En este documento, se utilizan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Antes de empezar

  1. Asegúrate de que los registros que quieres importar se hayan exportado previamente a Cloud Storage, lo que significa que ya están organizados en el formato de exportación esperado.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Sustituye PROJECT_ID por el ID del proyecto de destino.

  4. Asegúrate de que la facturación esté habilitada en tu Google Cloud proyecto.

  5. Roles obligatorios

    Para obtener los permisos que necesitas para implementar esta solución, pide a tu administrador que te conceda los siguientes roles de IAM:

    Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

    También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

    Actualizar el contenedor de registros para usar Analíticas de registros

    Te recomendamos que uses el segmento de registro predeterminado y que lo actualices para usar Log Analytics. Sin embargo, en un entorno de producción, puedes usar tu propio contenedor de registro si el contenedor predeterminado no cumple tus requisitos. Si decides usar tu propio segmento, debes dirigir los registros que se ingieran en el proyecto de destino a este segmento de registros. Para obtener más información, consulta los artículos sobre cómo configurar segmentos de registro y crear un receptor.

    Cuando actualices el contenedor, podrás usar SQL para consultar y analizar tus registros. No hay ningún coste adicional por actualizar el contenedor o usar Analíticas de registros.

    Para actualizar el contenedor de registros predeterminado del proyecto de destino, haz lo siguiente:

    • Actualiza el contenedor de registros predeterminado para usar Analíticas de registros:

      gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
      

      Haz los cambios siguientes:

      • BUCKET_ID: el nombre del contenedor de registro (por ejemplo, _Default)
      • LOCATION: una región admitida (por ejemplo, global)

    Crear la tarea de importación de Cloud Run

    Cuando crees el trabajo, puedes usar la imagen de contenedor prediseñada que se proporciona para esta arquitectura de referencia. Si necesitas modificar la implementación para cambiar el periodo de conservación de 30 días o si tienes otros requisitos, puedes crear tu propia imagen personalizada.

    • En Cloud Shell, crea el trabajo con las configuraciones y las variables de entorno:

      gcloud run jobs create JOB_NAME \
      --image=IMAGE_URL \
      --region=REGION \
      --tasks=TASKS \
      --max-retries=0 \
      --task-timeout=60m \
      --cpu=CPU \
      --memory=MEMORY \
      --set-env-vars=END_DATE=END_DATE,LOG_ID=LOG_ID,\
      START_DATE=START_DATE,STORAGE_BUCKET_NAME=STORAGE_BUCKET_NAME,\
      PROJECT_ID=PROJECT_ID
      

      Haz los cambios siguientes:

      • JOB_NAME: el nombre de tu trabajo.
      • IMAGE_URL: la referencia a la imagen del contenedor. Usa us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution o la URL de la imagen personalizada, si has creado una siguiendo las instrucciones de GitHub.
      • REGION: la región en la que quieres que se encuentre tu trabajo. Para evitar costes adicionales, te recomendamos que la región del trabajo sea la misma que la del segmento de Cloud Storage o que se encuentre en la misma multirregión. Por ejemplo, si tu segmento es la multirregión de EE. UU., puedes usar us-central1. Para obtener más información, consulta el artículo Optimización de costes.
      • TASKS: el número de tareas que debe ejecutar el trabajo. El valor predeterminado es 1. Puedes aumentar el número de tareas si se agota el tiempo de espera.
      • CPU: el límite de CPU, que puede ser de 1, 2, 4, 6 u 8 CPUs. El valor predeterminado es 2. Puedes aumentar el número si se producen tiempos de espera. Para obtener más información, consulta el artículo Configurar límites de CPU.
      • MEMORY: el límite de memoria. El valor predeterminado es 2Gi. Puedes aumentar el número si se producen tiempos de espera. Para obtener más información, consulta Configurar límites de memoria.
      • END_DATE: el final del periodo con el formato MM/DD/AAAA. Se importarán los registros con marcas de tiempo anteriores o iguales a esta fecha.
      • LOG_ID: el identificador de registro de los registros que quieras importar. El ID de registro forma parte del campo logName de la entrada de registro. Por ejemplo, cloudaudit.googleapis.com.
      • START_DATE: el inicio del intervalo de fechas con el formato MM/DD/AAAA. Se importan los registros con marcas de tiempo posteriores o iguales a esta fecha.
      • STORAGE_BUCKET_NAME: el nombre del segmento de Cloud Storage donde se almacenan los registros (sin el prefijo gs://).

      La opción max-retries se ha definido en cero para evitar que se reintenten las tareas fallidas, lo que puede provocar que se dupliquen las entradas de registro.

      Si la tarea de Cloud Run falla debido a un tiempo de espera agotado, puede que la importación no se complete. Para evitar que las importaciones se completen de forma incorrecta debido a los tiempos de espera, aumenta el valor de tasks y los recursos de CPU y memoria.

    Si aumentas estos valores, es posible que los costes también aumenten. Para obtener más información sobre los costes, consulta Optimización de costes.

    Crear una cuenta de servicio para ejecutar el trabajo de Cloud Run

    1. En Cloud Shell, crea la cuenta de servicio gestionada por el usuario:

      gcloud iam service-accounts create SA_NAME
      

      Sustituye SA_NAME por el nombre de la cuenta de servicio.

    2. Asigna el rol Visor de objetos de Storage al segmento de almacenamiento:

      gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \
      --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/storage.objectViewer
      

      Haz los cambios siguientes:

      • STORAGE_BUCKET_NAME: el nombre del contenedor de almacenamiento que has usado en la configuración del trabajo de importación. Por ejemplo, my-bucket.
      • PROJECT_ID: el ID del proyecto de destino.
    3. Concede el rol Escritor de registros en el segmento de registros:

      gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/logging.logWriter
      
    4. Define la cuenta de servicio de la tarea de Cloud Run:

      gcloud run jobs update JOB_NAME \
      --region=REGION \
      --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
      

      Sustituye REGION por la misma región en la que has desplegado el trabajo de importación de Cloud Run.

    Ejecutar la tarea de importación

    • En Cloud Shell, ejecuta el trabajo creado:

      gcloud run jobs execute JOB_NAME \
      --region=REGION
      

    Para obtener más información, consulta los artículos Ejecutar trabajos y Gestionar ejecuciones de trabajos.

    Si necesitas volver a ejecutar el trabajo, elimina los registros importados anteriormente para evitar que se creen duplicados. Para obtener más información, consulta la sección Eliminar registros importados más adelante en este documento.

    Cuando consultas los registros importados, no aparecen duplicados en los resultados de la consulta. Cloud Logging elimina los duplicados (entradas de registro del mismo proyecto, con el mismo ID de inserción y la misma marca de tiempo) de los resultados de las consultas. Para obtener más información, consulta el campo insert_id en la referencia de la API Logging.

    Verificar resultados

    Para comprobar que la tarea se ha completado correctamente, puedes consultar los resultados de la importación en Cloud Shell:

      gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'
    

    En el resultado se muestran los registros importados. Si este proyecto se ha usado para ejecutar más de una tarea de importación en el periodo especificado, el resultado también mostrará los registros importados de esas tareas.

    Para obtener más opciones y detalles sobre cómo consultar entradas de registro, consulta gcloud logging read.

    Eliminar registros importados

    Si necesitas ejecutar el mismo trabajo más de una vez, elimina los registros importados anteriormente para evitar entradas duplicadas y un aumento de los costes.

    • Para eliminar los registros importados, ejecuta el comando de eliminación de registros en Cloud Shell:

      gcloud logging logs delete imported_logs
      

    Ten en cuenta que, al eliminar los registros importados, se borran todas las entradas de registro que se hayan importado al proyecto de destino, no solo los resultados de la última ejecución del trabajo de importación.

    Siguientes pasos

    Colaboradores

    Autor: Leonid Yankulin | Ingeniero de Relaciones con Desarrolladores

    Otros colaboradores: