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:
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.
Antes de comenzar
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.
In the Google Cloud console, activate Cloud Shell.
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
Reemplaza PROJECT_ID por el ID del proyecto de destino.
Asegúrate de tener habilitada la facturación para tu Google Cloud proyecto.
-
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 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
).
- BUCKET_ID: el nombre del bucket de registro (por ejemplo,
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.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.
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.
- STORAGE_BUCKET_NAME: el nombre del bucket de almacenamiento que usaste en la configuración del trabajo de importación. Por ejemplo,
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
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.
En Cloud Shell, ejecuta el trabajo creado:
gcloud run jobs execute JOB_NAME \ --region=REGION
Para borrar registros importados, en Cloud Shell, ejecuta los siguientes registros:
gcloud logging logs delete imported_logs
- Revisa el código de implementación en el repositorio de GitHub.
- Obtén información para analizar los registros importados con Análisis de registros y SQL.
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.
- Summit Tuladhar | Ingeniero sénior de software de personal
- Wilton Wong | Arquitecto empresarial
- Xiang Shen | Arquitecto de soluciones
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 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:
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..
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
Ejecuta el trabajo de importación
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.
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: