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

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 dirigidas a ingenieros y desarrolladores, incluidos los ingenieros de DevOps, de confiabilidad de sitios (SRE) y los investigadores de seguridad, que desean 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 de Google Cloud nuevos cumplan con los requisitos para acceder a una prueba gratuita.

Antes de comenzar

  1. Asegúrate de que los registros que deseas importar se hayan exportado anteriormente 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

    Reemplaza PROJECT_ID por el ID del proyecto de destino.

  4. Asegúrate de tener habilitada la facturación para tu Google Cloud proyecto.

  5. Roles requeridos

    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, sigue estos pasos: Administrador de Logging (roles/logging.admin) en el proyecto de destino
    • Para crear, ejecutar y modificar el trabajo de importación, haz lo siguiente: Desarrollador de Cloud Run (roles/run.developer) en el proyecto de destino

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

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

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

    Te recomendamos que uses el bucket de registros predeterminado y lo actualices 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 hay costos adicionales por actualizar el bucket ni por usar Log Analytics.

    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 compilada previamente 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: 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 multirregional de EE.UU., 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 producen tiempos 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 Cómo configurar 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 forma 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 en tareas con errores, lo que puede provocar entradas de registro duplicadas.

      Si el trabajo de Cloud Run falla debido a un tiempo de espera agotado, es posible que se produzca 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: Es 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 detalles, consulta Cómo borrar registros importados más adelante en este documento.

    Cuando consultas los registros importados, no aparecen duplicados en los resultados de la consulta. 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 mostrará los registros importados de esos trabajos.

    Para obtener más opciones y detalles sobre las consultas de entradas de registro, consulta gcloud logging read.

    Borra registros importados

    Si necesitas ejecutar el mismo trabajo más de una vez, borra los registros importados anteriormente para evitar entradas duplicadas y aumentar los 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 borrarán todas las entradas de registro que se importaron al proyecto de destino, 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: