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

1. Introducción

cb762f29e9183a3f.png 8c7ca8629bc25d9c.png

Eventarc facilita la conexión de los servicios de Google Cloud con eventos de una variedad de fuentes. Te permite crear arquitecturas controladas por eventos en las que los microservicios están vinculados y distribuidos de manera flexible. También se encarga de la transferencia de eventos, la entrega, la seguridad, la autorización y el manejo de errores por ti, lo que mejora la agilidad del desarrollador y la resiliencia de las aplicaciones.

Datadog es una plataforma de supervisión y seguridad para aplicaciones en la nube. Reúne seguimientos, métricas y registros 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 simple de supervisión 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 te importa qué es. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (por lo general, se identifica como PROJECT_ID). Si no te gusta el ID generado, puedes generar otro aleatorio. También puedes probar el tuyo propio y ver si está disponible. No se puede cambiar después de este paso y se mantendrá mientras dure el proyecto.
  • Para tu información, 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 te facture 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, configura el 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 al proveedor de Datadog

Un proveedor de Eventarc es un servicio o una entidad que puede emitir eventos directamente a Google Cloud, que luego se enrutan a tu proyecto. Los proveedores externos, como Datadog, son proveedores que no pertenecen a 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 ella, se enumeran los proveedores de Google Cloud y de terceros, además de 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

...

Para limitar la lista a proveedores externos, usa el siguiente 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

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

Cómo crear 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 en 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 los detalles del canal desde 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'

De manera similar, puedes ver el canal en 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 a partir de su creación.
  • 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 una conexión con un proveedor, debes crear un canal nuevo para ese proveedor.

Un token de activación es un token de un solo uso, con restricción de tiempo, que se utiliza 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 convierte en 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 el canal activo en la consola de Google Cloud:

8399d528ccbd4c20.png

Ya estás listo para 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 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 lo registra.

Implementa el flujo de trabajo:

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

Se implementó el flujo de trabajo, pero aún no se está ejecutando. Lo ejecutará un activador de Eventarc cuando se reciba una alerta de Datadog.

6. Crea un activador de Eventarc

Ya está todo listo para conectar eventos del proveedor de Datadog a Workflows con un activador de Eventarc.

Configura la 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 hacerlo más simple, usa la cuenta de servicio de procesamiento 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 supervisor 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. La activarás de forma manual para generar 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 en @eventarc_<your-project-id>_<your-region>_<your-channel-name>.

Mantén la página del monitor abierta para el siguiente paso en el que probarás el monitor.

8. Prueba el supervisor y el activador

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

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

32ccf1cc47b01150.png

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

8f2ff70ec673007b.png

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

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

adf7cd97ca2e8da7.png

Verifica los detalles de la ejecución. Deberías ver el tipo de evento datadog.v1.alert de Datadog 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