Enruta alertas de supervisión de Datadog a Google Cloud con Eventarc (parte 1)

1. Introducción

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

Eventarc facilita la conexión de los servicios de Google Cloud con eventos de diversas fuentes. Te permite compilar arquitecturas basadas en eventos en las que los microservicios están distribuidos y con acoplamiento bajo. También se encarga de la transferencia, la entrega, la seguridad, la autorización y el manejo de errores de eventos por ti, lo que mejora la agilidad de los desarrolladores y la resiliencia de las aplicaciones.

Datadog es una plataforma de supervisión y seguridad para aplicaciones en la nube. Reúne registros, métricas y seguimientos de extremo a extremo para que tus aplicaciones, infraestructura y servicios de terceros sean observables.

En este primer codelab, aprenderás a enrutar una alerta de supervisión simple de Datadog a Google Cloud con Eventarc.

Qué aprenderás

  • Cómo descubrir el proveedor de Datadog
  • Cómo configurar un canal para el proveedor de Datadog
  • Cómo crear un flujo de trabajo para registrar eventos
  • Cómo crear un activador de Eventarc con el canal
  • Cómo crear un monitor de Datadog
  • Cómo probar el monitor de Datadog, el activador de Eventarc y el flujo de trabajo

2. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla en cualquier momento.
  • El ID del proyecto debe ser único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (suele identificarse como PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usará el mismo durante todo el proyecto.
  • Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar todo el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.

Inicia Cloud Shell

Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

En Google Cloud Console, haz clic en el ícono de Cloud Shell en la barra de herramientas en la parte superior derecha:

55efc1aaa7a4d3ad.png

El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:

7ffe5cbb04455448.png

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Todo tu trabajo en este codelab se puede hacer en un navegador. No es necesario que instales nada.

Configura gcloud

En Cloud Shell, establece tu ID del proyecto y guárdalo como la variable PROJECT_ID.

Además, establece una variable REGION en us-central1. Esta es la región en la que crearás recursos más adelante.

PROJECT_ID=[YOUR-PROJECT-ID]
REGION=us-central1
gcloud config set core/project $PROJECT_ID

Habilita las APIs

Habilita todos los servicios necesarios con el siguiente comando:

gcloud services enable \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Descubre el proveedor de Datadog

Un proveedor de Eventarc es un servicio o una entidad que puede emitir eventos directamente a Google Cloud, los que luego se enrutan a tu proyecto. Los proveedores externos, como Datadog, son proveedores que no son de Google Cloud y que están integrados en Google Cloud a través de Eventarc.

En Cloud Shell, ejecuta el siguiente comando para ver la lista de proveedores de Google Cloud y de terceros:

gcloud eventarc providers list

En la siguiente lista, se indican los proveedores de Google Cloud y externos, y las ubicaciones en las que están disponibles:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Puedes reducir la lista a proveedores externos con este comando:

gcloud eventarc providers list --filter='eventTypes.type!~^google*'

Deberías ver Datadog en la lista:

NAME: datadog
LOCATION: us-central1

También puedes describir el proveedor de Datadog para ver los eventos que admite:

gcloud eventarc providers describe datadog --location $REGION

displayName: Datadog
eventTypes:
- type: datadog.v1.alert
name: projects/project-id/locations/us-central1/providers/datadog

4. Configura un canal

Debes configurar un canal para integrar tu proyecto con un proveedor. Esto implica crear un canal, recuperar sus detalles y enviárselos al proveedor. Una vez que el proveedor inicializó la conexión al canal, puede comenzar a enviar eventos a tu proyecto.

Crea un canal

Puedes crear un canal para el proveedor de Datadog con gcloud:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

También puedes crearlo desde la sección Canales de la página de Eventarc en la consola de Google Cloud:

d03a7173b25e5ea6.png

Cómo recuperar los detalles del canal

Una vez que se cree el canal, recupera sus detalles de gcloud:

gcloud eventarc channels describe $CHANNEL_NAME --location $REGION

El resultado debería ser similar al siguiente ejemplo:

activationToken: so5g4Kdasda7y2MSasdaGn8njB2
createTime: '2022-03-09T09:53:42.428978603Z'
name: projects/project-id/locations/us-central1/channels/datadog-channel
provider: projects/project-id/locations/us-central1/providers/datadog
pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077
state: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

Del mismo modo, puedes ver el canal desde la consola de Google Cloud:

80d8b2b6a46cb4c5.png

El estado del canal indica su estado. Puede ser uno de los siguientes:

  • PENDING: El canal se creó correctamente y hay un token de activación disponible para crear una conexión con el proveedor. Para cambiar el estado del canal de PENDING a ACTIVE, se debe proporcionar el token al proveedor y usarlo para conectar el canal en un plazo de 24 horas después de la creación del canal.
  • ACTIVE: El canal se conectó correctamente con el proveedor. Un canal ACTIVE está listo para recibir y enrutar eventos del proveedor.
  • INACTIVE—El canal no puede recibir eventos ni reactivarse. El proveedor está desconectado de este canal o el token de activación del canal venció y el proveedor no está conectado. Para restablecer la conexión con un proveedor, debes crear un canal nuevo para él.

Un token de activación es un token de un solo uso y con restricción de tiempo que se usa para crear una conexión entre un proveedor y el proyecto de un suscriptor. Solo un proveedor específico, seleccionado durante el proceso de creación del canal, puede usar el token. El token es válido durante 24 horas después de la creación del canal. Después de 24 horas, el canal se vuelve INACTIVE.

Envía los detalles del canal al proveedor

Debes enviar los siguientes detalles del canal al proveedor de Datadog:

  • Nombre del canal (p. ej., projects/project-id/locations/us-central1/channels/datadog-channel
  • Token de activación (p. ej., so5g4Kdasda7y2MSasdaGn8njB2

Accede a Datadog, ve a la página de integraciones y asegúrate de que la integración de Google Eventarc esté instalada:

9736bd517e1fa19a.png

En la sección de configuración de Google Eventarc, ingresa el nombre completo del canal y el token de activación:

a17f522075cdd92e.png

Ahora deberías ver el canal en la lista de canales y, después de unos segundos, también deberías ver que el canal se activa en Google Cloud Console:

8399d528ccbd4c20.png

Ahora ya puedes usar el canal.

5. Crea un flujo de trabajo

Necesitas un destino en Google Cloud para recibir eventos del proveedor. Eventarc admite varios destinos de eventos, como Cloud Run, Workflows y servicios de Kubernetes. En este caso, implementa un flujo de trabajo para registrar simplemente los eventos recibidos.

Crea un archivo workflow-datadog1.yaml con el siguiente contenido:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

Ten en cuenta que el flujo de trabajo recibe un evento como parámetro. Este evento provendrá de la supervisión de Datadog a través de Eventarc. Una vez que se recibe el evento, el flujo de trabajo simplemente registra el evento recibido.

Implementa el flujo de trabajo:

WORKFLOW_NAME=workflow-datadog1
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog1.yaml \
  --location $REGION

El flujo de trabajo se implementó, pero aún no se ejecuta. Un activador de Eventarc la ejecutará cuando se reciba una alerta de Datadog.

6. Crea un activador de Eventarc

Ahora puedes conectar eventos del proveedor de Datadog a Workflows con un activador de Eventarc.

Configurar cuenta de servicio

Necesitas una cuenta de servicio con el rol eventarc.eventReceiver cuando creas un activador. Puedes crear una cuenta de servicio dedicada o usar la cuenta de servicio de procesamiento predeterminada.

Para simplificar, usa la cuenta de servicio de Compute predeterminada y otorga el rol eventarc.eventReceiver:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role roles/eventarc.eventReceiver

Crea un activador

Crea un activador con el canal de Datadog, el tipo de evento y también un destino de flujo de trabajo:

gcloud eventarc triggers create datadog-trigger1 \
  --location $REGION \
  --destination-workflow $WORKFLOW_NAME \
  --destination-workflow-location $REGION \
  --channel $CHANNEL_NAME \
  --event-filters type=datadog.v1.alert \
  --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com

Puedes enumerar los activadores para ver que el activador recién creado esté activo:

gcloud eventarc triggers list --location $REGION

NAME: datadog-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Crea un monitor de Datadog

Ahora crearás un monitor de Datadog y lo conectarás a Eventarc.

Será un monitor de tipo Hello World con valores predeterminados. Lo activarás de forma manual para generar las alertas de supervisión que, a su vez, generarán un evento de Eventarc en Google Cloud.

Para crear un monitor en Datadog, accede a Datadog. Coloca el cursor sobre Monitors en el menú principal y haz clic en New Monitor en el submenú. Existen muchos tipos de monitores. Elige el tipo de monitor Metric.

En la página New Monitor, deja los valores predeterminados para los pasos 1 y 2.

  • En el paso 3, establece Alert threshold en 1.
  • En el paso 4, establece Test monitor for Eventarc como el nombre del monitor y Notify your team como @eventarc_<your-project-id>_<your-region>_<your-channel-name>.

Mantén abierta la página de supervisión para el siguiente paso, en el que probarás el monitor.

8. Prueba el monitor y el activador

Para probar el monitor de Datadog y el activador de Eventarc, activarás el monitor de forma manual.

En la parte inferior de la página de creación del monitor, haz clic en el botón Test Notifications:

32ccf1cc47b01150.png

Luego, haz clic en el botón Run Test:

7f2ff70ec673007b.png

Esto debería simular la transición de estado en el monitor y activar un evento de Eventarc.

Verifica el flujo de trabajo workflow-datadog1. Deberías ver que hay una nueva ejecución:

adf7cd97ca2e8da7.png

Verifica los detalles de la ejecución. Deberías ver el tipo de evento de Datadog datadog.v1.alert generado a partir de la alerta de supervisión en la entrada del flujo de trabajo y también en los registros:

dc78fd8460e5fc0e.png

9. Felicitaciones

¡Felicitaciones! Completaste el codelab. Puedes continuar con el segundo codelab para aprender a responder a las alertas de supervisión de Datadog con Workflows.

Temas abordados

  • Cómo descubrir el proveedor de Datadog
  • Cómo configurar un canal para el proveedor de Datadog
  • Cómo crear un flujo de trabajo para registrar eventos
  • Cómo crear un activador de Eventarc con el canal
  • Cómo crear un monitor de Datadog
  • Cómo probar el monitor de Datadog, el activador de Eventarc y el flujo de trabajo