Configuración del reenvío de logs de Google Cloud

Información general

El reenvío de logs desde tu entorno de Google Cloud permite la monitorización casi en tiempo real de los recursos y las actividades que tienen lugar en tu organización o carpeta. Puedes configurar monitores de logs para recibir notificaciones de problemas, utilizar Cloud SIEM para detectar amenazas o aprovechar Watchdog para identificar incidentes desconocidos o comportamientos anómalos.

Los logs son reenviados por Google Cloud Dataflow utilizando la plantilla Datadog Dataflow. Este método te permite agrupar y comprimir los eventos de logs antes de reenviarlos a Datadog, que es la forma más eficiente de reenviar logs. Puedes especificar qué logs se reenvían utilizando filtros de inclusión y exclusión.

Instalación

Elige el método de configuración del inicio rápido si…

  • Estás configurando el reenvío de logs desde Google Cloud por primera vez.
  • Prefieres un flujo de trabajo basado en la interfaz de usuario y quieres minimizar el tiempo necesario para crear y configurar los recursos necesarios.
  • Quieres automatizar los pasos de configuración en scripts o pipelines de CI/CD.
Permisos previos

You must have the following permissions to complete the setup:

In Google Cloud:
In Datadog:

Your Datadog user account must have either the Datadog Admin role, or, if using custom roles, the following permissions:

  • api_keys_read
  • api_keys_write
Instrucciones
  1. En el cuadro de integración con Google Cloud, haz clic en el botón Configure Log Collection (Configurar la recopilación de logs).
  2. Selecciona Quick Start (Inicio rápido). Se genera automáticamente un script de instalación, configurado con tus credenciales y tu sitio Datadog.
  3. Copia el script de instalación. Puedes ejecutar el script localmente o en Google Cloud Shell:
    • Localmente: Puede ser más rápido, pero requiere tus credenciales de Google Cloud y la CLI de gcloud instalada en tu máquina.
    • Google Cloud Shell: Haz clic en Open Google Cloud Shell (Abrir Google Cloud Shell) para ejecutar el script.
  4. Después de ejecutar el script, vuelve al cuadro de integración con Google Cloud.
  5. En la sección Select Projects (Seleccionar proyectos), selecciona las carpetas y proyectos desde los que se reenviarán logs. Si seleccionas una carpeta, los logs se reenviarán desde todos sus proyectos secundarios.
    Nota: En esta sección solo aparecen las carpetas y proyectos para los que tienes el acceso y los permisos necesarios. Asimismo, las carpetas y proyectos sin nombre para mostrar no aparecen.
  6. En la sección Dataflow Job Configuration (Configuración del trabajo de Dataflow), especifica las opciones de configuración del trabajo de Dataflow:
    • Selecciona la configuración del despliegue (región de Google Cloud y proyecto para alojar los recursos creados: temas y suscripciones Pub/Sub, un sumidero de enrutamiento de logs, una entrada de Secret Manager, una cuenta de servicio, un bucket de Cloud Storage y un trabajo de Dataflow).
    • Selecciona la configuración del escalado (número de workers y número máximo de workers).
    • Selecciona la configuración del rendimiento (número máximo de solicitudes paralelas y tamaño del lote).
    • Selecciona las opciones de ejecución.
  7. En la sección Advanced Configuration (Configuración avanzada), especifica opcionalmente el tipo de máquinas virtuales de tus workers de Dataflow. Si no se selecciona ningún tipo de máquina, Dataflow elige automáticamente un tipo de máquina adecuado en función de tus requisitos de trabajo.
  8. Opcionalmente puedes especificar filtros de inclusión y exclusión utilizando el [lenguaje de consulta de la generación de logs] de Google Cloud105.
  9. Revisa los pasos a ejecutar en la sección Complete Setup (Finalizar configuración). Si todo sale según lo esperado, haz clic en Complete Setup.

Elige el método de configuración de Terraform si…

  • Gestionas la infraestructura como código y quieres mantener la integración de Datadog Google Cloud bajo control de versiones.
  • Necesitas configurar varias carpetas o proyectos de forma coherente con bloques de proveedores reutilizables.
  • Quieres un proceso de despliegue repetible y auditable que se adapte a tu entorno gestionado por Terraform.
Permisos previos

You must have the following permissions to complete the setup:

In Google Cloud:
In Datadog:

Your Datadog user account must have either the Datadog Admin role, or, if using custom roles, the following permissions:

  • api_keys_read
  • api_keys_write
Instrucciones
  1. En el cuadro de integración con Google Cloud, haz clic en el botón Configure Log Collection (Configurar la recopilación de logs).
  2. Selecciona Terraform.
  3. En la sección Select Projects (Seleccionar proyectos), selecciona las carpetas y proyectos desde los que se reenviarán logs. Si seleccionas una carpeta, los logs se reenviarán desde todos sus proyectos secundarios.
    Nota: En esta sección solo aparecen las carpetas y proyectos para los que tienes el acceso y los permisos necesarios. Asimismo, las carpetas y proyectos sin nombre para mostrar no aparecen.
  4. En la sección Dataflow Job Configuration (Configuración del trabajo de Dataflow), especifica las opciones de configuración del trabajo de Dataflow:
    • Selecciona la configuración del despliegue (región de Google Cloud y proyecto para alojar los recursos creados: temas y suscripciones Pub/Sub, un sumidero de enrutamiento de logs, una entrada de Secret Manager, una cuenta de servicio, un bucket de Cloud Storage y un trabajo de Dataflow).
    • Selecciona la configuración del escalado (número máximo de workers).
    • Selecciona la configuración del rendimiento (número máximo de solicitudes paralelas y tamaño del lote).
    • Selecciona las opciones de ejecución (Streaming Engine está activado por defecto. Lee más sobre sus ventajas).
  5. En la sección Advanced Configuration (Configuración avanzada), especifica opcionalmente el tipo de máquinas virtuales de tus workers de Dataflow. Si no se selecciona ningún tipo de máquina, Dataflow elige automáticamente un tipo de máquina adecuado en función de tus requisitos de trabajo.
  6. Opcionalmente puedes especificar filtros de inclusión y exclusión utilizando el [lenguaje de consulta de la generación de logs] de Google Cloud203.

Consulta las instrucciones del repositorio terraform-gcp-datadog-integration para configurar y gestionar la infraestructura necesaria a través de Terraform.

Las instrucciones de esta sección le guiarán a través del proceso de:

  1. Creación de un tema y una suscripción pull Pub/Sub para recibir logs de un sumidero de logs configurado.
  2. Creación de una cuenta de servicio de worker de Dataflow personalizada para proporcionar mínimo privilegio a tus workers de pipelines de Dataflow.
  3. Creación de un sumidero de logs para publicar logs en el tema Pub/Sub.
  4. Creación de un trabajo de Dataflow utilizando la plantilla de Datadog para transmitir logs desde la suscripción Pub/Sub a Datadog.

Tienes control total sobre qué logs se envían a Datadog a través de los filtros de generación de logs que creas en el sumidero de logs, incluidos los logs GCE y GKE. Consulta la página Lenguaje de consulta de generación de logs de Google para obtener información sobre la escritura de filtros. Para ver un examen detallado de la arquitectura creada, consulta Transmitir logs desde Google Cloud a Datadog en el Centro de arquitectura en la nube.

Nota: Debes activar la API de flujo de datos para utilizar Google Cloud Dataflow. Consulta Activación de API en la documentación de Google Cloud para obtener más información.

Para recopilar logs de aplicaciones que se ejecutan en GCE o GKE, también puedes utilizar el Datadog Agent.

1. Crear un tema y una suscripción Cloud Pub/Sub

  1. Ve a la consola de Cloud Pub/Sub y crea un nuevo tema. Selecciona la opción Add a default subscription (Añadir una suscripción por defecto) para simplificar la configuración.

    Nota: También puedes configurar manualmente una suscripción Cloud Pub/Sub con el tipo de entrega Pull. Si creas tu suscripción Pub/Sub manualmente, deja la casilla Enable dead lettering desmarcada. Para obtener más información, consulta Funciones de Pub/Sub no compatibles.

Página Crear un tema en la consola de Google Cloud con la casilla Añadir una suscripción por defecto seleccionada
  1. Proporciona un nombre explícito para ese tema como export-logs-to-datadog y haz clic en Create (Crear).

  2. Crea un tema adicional y una suscripción por defecto para gestionar cualquier mensaje de log rechazado por la API de Datadog. El nombre de este tema se utiliza en la plantilla de Datadog Dataflow como parte de la configuración de la ruta del parámetro de plantilla outputDeadletterTopic. Cuando hayas inspeccionado y corregido cualquier problema en los mensajes fallidos, reenvíalos al tema export-logs-to-datadog original ejecutando un trabajo de plantilla Pub/Sub a Pub/Sub.

  3. Datadog recomienda crear un secreto en Secret Manager, con el valor válido de tu clave de API de Datadog, para utilizarlo posteriormente en la plantilla de Datadog Dataflow.

Las suscripciones Cloud Pub/Sub en la nube están sujetas a las cuotas y limitaciones de Google Cloud. Si el número de logs que tienes supera esas limitaciones, Datadog te recomienda dividir tus logs en varios temas. Consulta la sección Monitor the Pub/Sub Log Forwarding (Monitorizar el reenvío de logs de Pub/Sub) para obtener información sobre cómo configurar notificaciones de monitor si te acercas a esos límites.

2. Crear una cuenta de servicio de worker de Dataflow personalizada

El comportamiento predeterminado de los workers de pipelines de Dataflow consiste en utilizar la cuenta de servicio de Compute Engine por defecto de tu proyecto, que concede permisos a todos los recursos del proyecto. Si estás reenviando logs desde un entorno de Producción, deberías crear una cuenta de servicio de worker personalizada con solo los roles y permisos necesarios, y asignar esta cuenta de servicio a tus workers de pipelines de Dataflow.

  1. Ve a la página Cuentas de servicio en la consola de Google Cloud y selecciona tu proyecto.
  2. Haz clic en CREATE SERVICE ACCOUNT (Crear cuenta de servicio) y asigna un nombre descriptivo a la cuenta de servicio. Haz clic en CREATE AND CONTINUE (Crear y continuar).
  3. Añade los roles en la tabla de permisos necesarios y haz clic en DONE (Listo).
Permisos necesarios
Administrador de Dataflow
roles/dataflow.admin
Permite que esta cuenta de servicio realice tareas administrativas de Dataflow.
Worker de Dataflow
roles/dataflow.worker
Permite que esta cuenta de servicio realice operaciones de Dataflow.
Visor de Pub/Sub
roles/pubsub.viewer
Permite que esta cuenta de servicio vea mensajes de la suscripción Pub/Sub con tus logs de Google Cloud.
Abonado de Pub/Sub
roles/pubsub.subscriber
Permite que esta cuenta de servicio consuma mensajes de la suscripción Pub/Sub con tus logs de Google Cloud.
Editor de Pub/Sub
roles/pubsub.publisher
Permite que esta cuenta de servicio publique mensajes fallidos en una suscripción independiente, lo que permite analizar o reenviar logs.
Secret Manager Secret Accessor
roles/secretmanager.secretAccessor
Permite que esta cuenta de servicio acceda a la clave de API de Datadog en Secret Manager.
Administración de objetos de almacenamiento
roles/storage.objectAdmin
Permite que esta cuenta de servicio lea y escriba en el bucket de Cloud Storage especificado para los archivos de staging.

Nota: Si no creas una cuenta de servicio personalizada para los workers de pipelines de Dataflow, asegúrate de que la cuenta de servicio predeterminada de Compute Engine tenga los permisos requeridos anteriores.

3. Exportar logs desde un tema Google Cloud Pub/Sub

  1. Ve a la página del Logs Explorer en la consola de Google Cloud.

  2. En la pestaña de Log Router (Enrutador de logs), selecciona Create Sink (Crear sumidero de datos).

  3. Indica un nombre para el sumidero de datos.

  4. Elige Cloud Pub/Sub como destino y selecciona el tema Cloud Pub/Sub creado para tal fin. Nota: El tema Cloud Pub/Sub puede encontrarse en un proyecto diferente.

    Exportar logs de Google Cloud Pub/Sub a Pub Sub
  5. Elige los logs que quieres incluir en el sumidero con un filtro opcional de inclusión o exclusión. Puedes filtrar los logs con una consulta de búsqueda o utilizar la función de muestreo. Por ejemplo, para incluir sólo el 10% de los logs con un nivel de severity de ERROR, crea un filtro de inclusión con severity="ERROR" AND sample(insertId, 0.1).

    Filtro de inclusión de un sumidero de generación de logs de Google Cloud con una consulta de gravedad=ERROR y muestra(insertId, 0.1)
  6. Haz clic en Create Sink (Crear sink).

Nota: Es posible crear varias exportaciones desde Google Cloud Logging al mismo tema Cloud Pub/Sub con diferentes sumideros.

4. Crear y ejecutar el trabajo de Dataflow

  1. Ve a la página Crear trabajo a partir de una plantilla en la consola de Google Cloud.

  2. Asigna un nombre al trabajo y selecciona un endpoint regional de Dataflow.

  3. Selecciona Pub/Sub to Datadog en el desplegable Plantilla de Dataflow. Aparecerá la sección Parámetros requeridos.

    1. Selecciona la suscripción de entrada en el desplegable Pub/Sub input subscription (Suscripción de entrada Pub/Sub).

    2. Introduce lo siguiente en el campo Datadog Logs API URL (URL de la API de logs de Datadog):

      https://

      Nota: Asegúrate de que el selector de sitios de Datadog a la derecha de la página está configurado con tu sitio Datadog antes de copiar la URL de arriba.

    3. Selecciona el tema creado para recibir fallos de mensajes en el desplegable Output deadletter Pub/Sub topic (Tema de salida Pub/Sub sin entregar).

    4. Especifica una ruta para los archivos temporales en tu bucket de almacenamiento en el campo Temporary location (Ubicación temporal).

      Parámetros requeridos en la plantilla de Datadog Dataflow
  4. En Parámetros opcionales, marca Include full Pub/Sub message in the payload.

  5. Si creaste un secreto en Secret Manager con el valor de tu clave de API Datadog, como se menciona en el paso 1, introduce el nombre de recurso del secreto en el campo ID de Google Cloud Secret Manager.

    Parámetros opcionales en la plantilla de Datadog Dataflow con los campos ID de Google Cloud Secret Manager y Fuente de la clave de API pasada, resaltados

    Consulta Parámetros de plantilla en la plantilla de Dataflow para obtener información detallada sobre el uso de las demás opciones disponibles:

    • apiKeySource=KMS con apiKeyKMSEncryptionKey configurada con tu ID de clave de Cloud KMS y apiKey, configurada con la clave de API cifrada.
    • No recomendado: apiKeySource=PLAINTEXT con apiKey configurada con la clave de API en texto sin formato.
  6. Si creaste una cuenta de servicio de worker personalizada, selecciónala en el desplegable Correo electrónico de cuenta de servicio.

    Parámetros opcionales en la plantilla de Datadog Dataflow con el correo electrónico de la cuenta de servicio resaltado
  7. Haz clic en RUN JOB (Ejecutar trabajo).

Nota: Si tienes una VPC compartida, consulta la página Especificar una red y subred en la documentación de Dataflow para obtener directrices sobre cómo especificar los parámetros Network y Subnetwork.

La recopilación de logs de Google Cloud con una suscripción Pub/Sub Push pronto estará obsoleta.

La documentación anterior de la suscripción Push sólo se mantiene para solucionar problemas o modificar configuraciones legacy.

Datadog recomienda utilizar una suscripción Pull con la plantilla de Datadog Dataflow, tal y como se describe en las secciones de configuración Inicio rápido y Terraform.

Consulta la guía Transmitir logs desde Google Cloud a Datadog en el Centro de arquitectura de Google Cloud para obtener una explicación más detallada de los pasos y la arquitectura implicados en el reenvío de logs. Para profundizar en las ventajas de la plantilla Pub/Sub a Datadog, consulta Transmitir tus logs desde Google Cloud a Datadog con Dataflow en el blog de Datadog.

Validación

Los nuevos eventos de generación de logs enviados al tema Cloud Pub/Sub aparecen en el Datadog Log Explorer.

Nota: Puedes utilizar la Calculadora de precios de Google Cloud para calcular los posibles costes.

Monitorizar el reenvío de logs de Cloud Pub/Sub

La integración de Google Cloud Pub/Sub proporciona métricas útiles para monitorizar el estado del reenvío de logs:

  • gcp.pubsub.subscription.num_undelivered_messages para el número de mensajes pendientes de entrega
  • gcp.pubsub.subscription.oldest_unacked_message_age para la antigüedad del mensaje no confirmado más antiguo de una suscripción

Utiliza las métricas anteriores con un monitor de métricas para recibir alertas de los mensajes de tus suscripciones de entrada y salida.

Monitorizar el pipeline de Dataflow

Utiliza la integración de Google Cloud Dataflow de Datadog para monitorizar todos los aspectos de tus pipelines de Dataflow. Puedes ver todas tus métricas claves de Dataflow en el dashboard predefinido, enriquecido con datos contextuales, como información sobre las instancias GCE que ejecutan tus cargas de trabajo de Dataflow y el rendimiento de tu Pub/Sub.

También puedes utilizar un monitor recomendado preconfigurado para definir notificaciones sobre aumentos en el tiempo de backlog de tu pipeline. Para obtener más información, consulta Monitorizar tus pipelines de Dataflow con Datadog en el blog de Datadog.

Referencias adicionales

Más enlaces, artículos y documentación útiles: