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

Last reviewed 2024-01-02 UTC

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

Estas instrucciones están destinadas a ingenieros y desarrolladores, incluidos DevOps, Ingenieros de confiabilidad de sitios (SRE) y los investigadores de seguridad que quieran configurar y ejecutar la tarea de importación de registros. En este documento, también se supone que estás familiarizado con la ejecución de trabajos 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 importación de registros de Cloud Storage a Cloud Logging

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

Objetivos

  • Crea y configura un trabajo de importación de Cloud Run
  • Crea una cuenta de servicio para ejecutar el trabajo:

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. Asegúrate de que los registros que deseas importar se hayan exportado antes 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. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  4. Reemplaza PROJECT_ID por el ID del proyecto de destino.

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

  6. Enable the Cloud Run and Identity and Access Management (IAM) APIs:

    gcloud services enable run.googleapis.com iam.googleapis.com

Roles obligatorios

Para obtener los permisos que necesitas para implementar esta solución, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Para otorgar el rol de escritor de registros en el bucket de registros, sigue estos pasos: Administrador de IAM de proyecto (roles/resourcemanager.projectIamAdmin) en el proyecto de destino
  • Para otorgar el rol de visualizador de objetos de almacenamiento en el bucket de almacenamiento: Administrador de almacenamiento (roles/storage.admin) en el proyecto en el que se aloja el bucket de almacenamiento
  • Para crear una cuenta de servicio, haz lo siguiente: Crea cuentas de servicio (roles/iam.serviceAccountCreator) en el proyecto de destino
  • Para habilitar los servicios en el proyecto, ejecuta el siguiente comando: Administrador de Service Usage (roles/serviceusage.serviceUsageAdmin) en el proyecto de destino
  • Para actualizar el bucket de registros y borrar los registros importados: Administrador de Logging (roles/logging.admin) en el proyecto de destino
  • Para crear, ejecutar y modificar el trabajo de importación: Desarrollador de Cloud Run (roles/run.developer) en el proyecto de destino

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios a través de funciones personalizadas o cualquier otro rol predefinido.

Actualiza el bucket de registros para usar el análisis de registros

Te recomendamos usar el bucket de registros predeterminado y actualizarlo para usar el Análisis de registros. Sin embargo, en un entorno de producción, puedes usar tu propio bucket de registros si el bucket predeterminado no cumple con tus requisitos. Si decides usar tu propio bucket, debes enrutar los registros que se transfieren al proyecto de destino a este bucket de registros. Para obtener más información, consulta Configura buckets de registros y Crea un receptor.

Cuando actualices el bucket, podrás usar SQL para consultar y analizar tus registros. No se aplican costos adicionales por actualizar el bucket o usar el Análisis de registros.

Para actualizar el bucket de registros predeterminado en el proyecto de destino, haz lo siguiente:

  • Actualiza el bucket de registros predeterminado para usar el análisis de registros

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

    Reemplaza lo siguiente:

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

Crea el trabajo de importación de Cloud Run

Cuando crees el trabajo, puedes usar la imagen de contenedor precompilada que se proporciona para esta arquitectura de referencia. Si necesitas modificar la implementación para cambiar el período de retención de 30 días o si tienes otros requisitos, puedes compilar tu propia imagen personalizada..

  • En Cloud Shell, crea el trabajo con las opciones de configuración 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
    

    Reemplaza lo siguiente:

    • 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 compilaste una con las instrucciones de GitHub.
    • REGION: es la región en la que deseas que se ubique el trabajo; para evitar costos adicionales, recomendamos mantener la región del trabajo igual o dentro de la misma multirregión que la región del bucket de Cloud Storage. Por ejemplo, si tu bucket es la multirregión US, puedes usar us-central1. Para obtener más información, consulta Optimización de costos.
    • TASKS: es la cantidad de tareas que se deben ejecutar. El valor predeterminado es 1. Puedes aumentar la cantidad de tareas si se agotan el tiempo de espera.
    • CPU: es el límite de CPU, que puede ser de 1, 2, 4, 6 u 8 CPUs. El valor predeterminado es 2. Puedes aumentar la cantidad si se producen tiempos de espera. Para obtener más información, consulta Configura límites de CPU.
    • MEMORY: el límite de memoria. El valor predeterminado es 2Gi. Puedes aumentar la cantidad si se producen tiempos de espera. Para obtener más detalles, consulta Configura los límites de memoria.
    • END_DATE: el inicio del período en el formato MM/DD/AAAA. Se importan los registros con marcas de tiempo anteriores o iguales a esta fecha.
    • LOG_ID: el identificador de registro de los registros que deseas importar. El ID de registro es parte del campo logName de la entrada de registro. Por ejemplo, cloudaudit.googleapis.com.
    • START_DATE: es el inicio del período en el formato MM/DD/AAAA. Se importan los registros con marcas de tiempo posteriores o iguales a esta fecha.
    • STORAGE_BUCKET_NAME: es el nombre del bucket de Cloud Storage en el que se almacenan los registros (sin el prefijo gs://).

    La opción max-retries se establece en cero para evitar reintentos de tareas fallidas, lo que puede generar entradas de registro duplicadas.

    Si el trabajo de Cloud Run falla debido a un tiempo de espera, es posible que se genere una importación incompleta. Para evitar importaciones incompletas debido a los tiempos de espera, aumenta el valor de tasks, así como los recursos de CPU y memoria.

Aumenta estos valores puede aumentar los costos. Para obtener detalles sobre los costos, consulta Optimización de costos.

Crea una cuenta de servicio para ejecutar tu trabajo de Cloud Run

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

    gcloud iam service-accounts create SA_NAME
    

    Reemplaza SA_NAME por el nombre de la cuenta de servicio.

  2. Otorga el rol Visualizador de objetos de almacenamiento en el bucket 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
    

    Reemplaza lo siguiente:

    • STORAGE_BUCKET_NAME: el nombre del bucket de almacenamiento que usaste en la configuración del trabajo de importación. Por ejemplo, my-bucket.
    • PROJECT_ID: el ID del proyecto de destino.
  3. Otorga el rol Escritor de registros en el bucket de registro:

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

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

    Reemplaza REGION por la misma región en la que implementaste el trabajo de importación de Cloud Run.

Ejecuta el trabajo 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 Ejecuta trabajos y Administra ejecuciones de trabajos.

Si necesitas volver a ejecutar el trabajo, borra los registros importados anteriormente para evitar crear duplicados. Para obtener más información, consulta Borra los registros importados más adelante en este documento.

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

Verifica los resultados

Para validar que el trabajo se haya completado de forma correcta, en Cloud Shell, puedes consultar los resultados de la importación:

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

El resultado muestra los registros importados. Si este proyecto se usó para ejecutar más de un trabajo de importación dentro del período especificado, el resultado también muestra los registros importados de esos trabajos.

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

Borra registros importados

Si necesitas ejecutar el mismo trabajo más de una vez, borra los registros importados previamente para evitar entradas duplicadas y mayores costos.

  • Para borrar registros importados, en Cloud Shell, ejecuta los siguientes registros:

    gcloud logging logs delete imported_logs
    

Ten en cuenta que, si borras los registros importados, se purgarán todas las entradas de registro que se importaron al proyecto de destino y no solo los resultados de la última ejecución del trabajo de importación.

Pasos siguientes

Colaboradores

Autor: Leonid Yankulin | Ingeniero de relaciones con desarrolladores

Otros colaboradores: