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:
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.
Antes de empezar
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.
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.
Sustituye PROJECT_ID por el ID del proyecto de destino.
Asegúrate de que la facturación esté habilitada en tu Google Cloud proyecto.
-
Para conceder el rol Escritor de registros en el bucket de registro, sigue estos pasos:
Administrador de gestión de identidades y accesos de proyectos (
roles/resourcemanager.projectIamAdmin
) en el proyecto de destino -
Para conceder el rol Lector de objetos de Storage en el segmento de almacenamiento, haz lo siguiente:
Administrador de Storage (
roles/storage.admin
) en el proyecto en el que se aloja el segmento de almacenamiento -
Para crear una cuenta de servicio, haz lo siguiente:
Crear cuentas de servicio (
roles/iam.serviceAccountCreator
) en el proyecto de destino -
Para habilitar los servicios en el proyecto, haz lo siguiente:
Administrador de uso de servicios (
roles/serviceusage.serviceUsageAdmin
) en el proyecto de destino -
Para actualizar el contenedor de registros y eliminar los registros importados, sigue estos pasos:
Administrador de almacenamiento de registros (
roles/logging.admin
) en el proyecto de destino -
Para crear, ejecutar y modificar la tarea de importación, siga estos pasos:
Desarrollador de Cloud Run (
roles/run.developer
) en el proyecto de destino 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
)
- BUCKET_ID: el nombre del contenedor de registro (por ejemplo,
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.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.
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.
- STORAGE_BUCKET_NAME: el nombre del contenedor de almacenamiento que has usado en la configuración del trabajo de importación. Por ejemplo,
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
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.
En Cloud Shell, ejecuta el trabajo creado:
gcloud run jobs execute JOB_NAME \ --region=REGION
Para eliminar los registros importados, ejecuta el comando de eliminación de registros en Cloud Shell:
gcloud logging logs delete imported_logs
- Consulta el código de implementación en el repositorio de GitHub.
- Consulta cómo analizar registros importados con Analíticas de registros y SQL.
- Para ver más arquitecturas de referencia, diagramas y prácticas recomendadas, consulta el centro de arquitectura de Cloud.
- Summit Tuladhar | Ingeniero de software sénior
- Wilton Wong | Arquitecto empresarial
- Xiang Shen | Arquitecto de soluciones
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:
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.
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
Ejecutar la tarea de importación
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.
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: