1. Introducción
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.
Workflows es una plataforma de organización completamente administrada que ejecuta servicios en un orden que tú definas llamado flujo de trabajo. Estos flujos de trabajo pueden combinar servicios alojados en Cloud Run o Cloud Functions, servicios de Google Cloud como Cloud Vision AI y BigQuery, y cualquier API basada en HTTP.
En el primer codelab, aprendiste a enrutar alertas de supervisión de Datadog a Google Cloud con Eventarc. En este segundo codelab, aprenderás a responder a las alertas de supervisión de Datadog con Workflows. Específicamente, crearás 2 máquinas virtuales de Compute Engine y las supervisarás con un monitor de Datadog. Una vez que se borre 1 de las VMs, recibirás una alerta de Datadog en Workflows a través de Eventarc. A su vez, Workflows volverá a crear la VM borrada para volver a 2 la cantidad de VMs en ejecución.
Qué aprenderás
- Cómo habilitar la integración de Datadog en Google Cloud
- Cómo crear un flujo de trabajo para verificar y crear VMs de Compute Engine.
- Cómo conectar las alertas de supervisión de Datadog a Workflows con Eventarc.
- Cómo crear un supervisor de Datadog y crear alertas sobre las eliminaciones de VM
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- 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.
- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una string de caracteres que no se utiliza en las API de Google y se puede actualizar 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). Cloud Console genera automáticamente una string única, que, por lo general, no importa cuál sea. En la mayoría de los codelabs, debes hacer referencia al ID del proyecto (suele ser
PROJECT_ID
). Por lo tanto, si no te gusta, genera otro aleatorio o prueba con uno propio y comprueba si está disponible. Después de crear el proyecto, este ID se “congela” y no se puede cambiar. - Además, hay un tercer valor, el Número de proyecto, que usan algunas API. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en Cloud Console para usar las API o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Si quieres cerrar los recursos para no se te facture más allá de este instructivo, sigue las instrucciones de “limpieza” que se encuentran al final del codelab. 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:
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:
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. Puedes realizar todo tu trabajo en este lab usando simplemente un navegador.
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 \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. Verifica el canal de Datadog
Asegúrate de que el canal de Datadog que creaste en el primer codelab esté activo. En Cloud Shell, ejecuta el siguiente comando para recuperar los detalles del canal:
CHANNEL_NAME=datadog-channel 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: ACTIVE uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
También puedes ver el estado del canal en la consola de Google Cloud:
El estado del canal debe ser ACTIVE
. De lo contrario, vuelve al primer codelab y sigue los pasos para crear y activar un canal con Datadog.
4. Habilita la integración de Datadog en Google Cloud
Si quieres usar Datadog para supervisar un proyecto, debes habilitar las APIs necesarias para Datadog, crear una cuenta de servicio y conectarla a Datadog.
Habilita las APIs para Datadog
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
Crear una cuenta de servicio
La integración de Datadog en Google Cloud usa una cuenta de servicio para realizar llamadas a la API de Cloud Logging y recopilar métricas a nivel de nodo de tus instancias de Compute Engine.
Crea una cuenta de servicio para Datadog:
DATADOG_SA_NAME=datadog-service-account gcloud iam service-accounts create $DATADOG_SA_NAME \ --display-name "Datadog Service Account"
Habilita la cuenta de servicio de Datadog para recopilar métricas, etiquetas, eventos y etiquetas de usuario. Para ello, otorga los siguientes roles de IAM:
DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/cloudasset.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/compute.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/monitoring.viewer
Crea y descarga una clave de cuenta de servicio. Necesitas el archivo de claves para completar la integración con Datadog.
Crea un archivo de claves de la cuenta de servicio en el directorio principal de Cloud Shell:
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
En Cloud Shell, haz clic en More ⁝
y, luego, selecciona Download File
. En el campo File path
, ingresa key.json
. Para descargar el archivo de claves, haz clic en Download
.
Conecta la cuenta de servicio a Datadog.
En tu cuenta de Datadog, ve a la sección Integrations
y busca la tarjeta de integración de Google Cloud
:
Coloca el cursor sobre Google Cloud Platform
para ir a la página Install
:
Para instalar la integración, sube la clave de la cuenta de servicio en la sección Upload Private Key File
y, luego, haz clic en Install Integration
:
Después de completar la integración, Datadog crea automáticamente una serie de paneles relacionados con Google Cloud en Dashboards
:
5. Crea VMs de Compute Engine
A continuación, crea algunas máquinas virtuales (VMs) de Compute Engine. Supervisarás estas VMs con un monitor de Datadog y responderás a las alertas de Datadog con un flujo de trabajo en Google Cloud.
Crea 2 VMs de Compute Engine:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
Deberías ver las VMs creadas y en ejecución en aproximadamente un minuto en la consola de Cloud. Después de un tiempo (por lo general, 10 min), también deberías ver estas VMs en Datadog, en el panel de Google Compute Engine
, en Dashboards
:
6. Crea un flujo de trabajo
Ahora que tienes 2 VMs en ejecución, crea un flujo de trabajo que responda a las alertas desde un monitor de Datadog. El flujo de trabajo puede ser tan sofisticado como quieras, pero, en este caso, verificará la cantidad de instancias de VM en ejecución y, si es inferior a 2, creará nuevas instancias de VM para asegurarse de que haya 2 VMs en ejecución en todo momento.
Crea un archivo workflow-datadog2.yaml
con el siguiente contenido:
main: params: [event] steps: - init: assign: - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} - zone: "us-central1-a" - minInstanceCount: 2 - namePattern: "datadog-instance-##" - listInstances: call: googleapis.compute.v1.instances.list args: project: ${projectId} zone: ${zone} result: listResult - getInstanceCount: steps: - initInstanceCount: assign: - instanceCount: 0 - setInstanceCount: switch: - condition: ${"items" in listResult} steps: - stepA: assign: - instanceCount: ${len(listResult.items)} - findDiffInstanceCount: steps: - assignDiffInstanceCount: assign: - diffInstanceCount: ${minInstanceCount - instanceCount} - logDiffInstanceCount: call: sys.log args: data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)} - endEarlyIfNeeded: switch: - condition: ${diffInstanceCount < 1} next: returnResult - bulkInsert: call: googleapis.compute.v1.instances.bulkInsert args: project: ${projectId} zone: ${zone} body: count: ${diffInstanceCount} namePattern: ${namePattern} instanceProperties: machineType: "e2-micro" disks: - autoDelete: true boot: true initializeParams: sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310 networkInterfaces: - network: "global/networks/default" result: bulkInsertResult - returnResult: return: ${bulkInsertResult}
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 verifica la cantidad de instancias en ejecución y crea nuevas instancias de VM si es necesario.
Implementa el flujo de trabajo:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.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.
7. Crea un activador de Eventarc
Ya está todo listo para conectar eventos del proveedor de Datadog a Workflows con un activador de Eventarc. Usarás el canal y la cuenta de servicio que configuraste en el primer codelab.
Crea un activador con el canal de Datadog, el tipo de evento y también un destino de flujo de trabajo:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') gcloud eventarc triggers create datadog-trigger2 \ --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-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
8. Crea un supervisor de Datadog
Ahora, crearás un monitor de Datadog y lo conectarás a Eventarc.
El monitor verificará la cantidad de VMs de Compute Engine en ejecución y generará una alerta si es inferior a 2.
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
, crea un monitor con lo siguiente:
- Elige el método de detección:
Threshold
. - Define la métrica:
gcp.gce.instance.is_running
de (en todas partes)sum by
(todo) - Establece condiciones de alerta:
- Se activa cuando la métrica
below
el umbralat least once
durante los últimos5 minutes
- Umbral de alerta:
< 2
- Notificar a tu equipo:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- Ejemplo de nombre de supervisor:
Compute Engine instances < 2
Ahora, presiona Create
en la parte inferior para crear el monitor.
9. Prueba el supervisor y el activador
Para probar el monitor de Datadog, el activador de Eventarc y, finalmente, el flujo de trabajo, borrarás una de las VMs:
gcloud compute instances delete instance-2 --zone us-central1-a
Después de unos segundos, deberías ver la instancia borrada en la consola de Google Cloud.
Hay un poco de latencia para que este cambio aparezca en Datadog. Después de un tiempo (por lo general, 10 min), deberías ver el monitor en Datadog para detectarlo y alertarlo en la sección Manage Monitors
:
Una vez que Datadog supervise las alertas, deberías ver que esa alerta va a Workflows a través de Eventarc. Si revisas los registros de Workflows, deberías ver que Workflows verifica la diferencia entre el recuento de instancias actual y el esperado:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
Para responder a esa alerta, crea una instancia de VM nueva con el prefijo datadog-instance-##
.
Al final, seguirás teniendo 2 VMs en tu proyecto: una que creaste inicialmente y otra que creó Workflows después de la alerta de Datadog.
10. Felicitaciones
¡Felicitaciones! Completaste el codelab.
Temas abordados
- Cómo habilitar la integración de Datadog en Google Cloud
- Cómo crear un flujo de trabajo para verificar y crear VMs de Compute Engine.
- Cómo conectar las alertas de supervisión de Datadog a Workflows con Eventarc.
- Cómo crear un supervisor de Datadog y crear alertas sobre las eliminaciones de VM