Cómo crear un monitor sintético

En este documento, se describe cómo puedes crear monitores sintéticos para probar la disponibilidad, la coherencia y el rendimiento de tus servicios, aplicaciones, páginas web y APIs. Debes proporcionar pruebas para tu aplicación. El monitor sintético ejecuta esa secuencia de comandos y registra los resultados de las pruebas y los datos adicionales, como la latencia. Si quieres recibir notificaciones cuando una prueba falle, puedes configurar una política de alertas para supervisar los resultados.

Información acerca de los monitores sintéticos

Un monitor sintético ejecuta periódicamente una Cloud Function de 2a gen. de un solo propósito que se implementa en Cloud Run. Cuando creas el monitor sintético, debes definir la Cloud Function, que debe escribirse en Node.js, y la frecuencia de ejecución. Por ejemplo, puedes configurar tu Cloud Function para que interactúe con una página web mediante Puppeteer. También puedes configurar tu Cloud Function para que interactúe con una API mediante el módulo de Axios. También puedes probar los recursos que se encuentran dentro de una red de VPC.

Para crear tu Cloud Function, puedes usar un editor intercalado o subir un archivo ZIP. Si decides usar el editor intercalado, puedes comenzar con un esqueleto proporcionado. Después de crear un monitor sintético, Cloud Monitoring usa un sistema de programación que programa la ejecución periódica de tu Cloud Function. Si bien especificas la región en la que existe tu Cloud Function, los comandos que activan la ejecución pueden originarse en cualquier región compatible con los servidores de verificación de tiempo de actividad. Para obtener más información, consulta Enumera las direcciones IP del servidor de la verificación de tiempo de actividad.

Puedes crear una política de alertas para recibir notificaciones cuando haya fallas en las pruebas:

  • Cuando creas un monitor sintético con la consola de Google Cloud, el comportamiento predeterminado es crear una política de alertas. Tú proporcionas los canales de notificación. La política de alertas predeterminada está configurada para notificarte cuando hay dos o más fallas de prueba consecutivas.

  • Cuando creas un monitor sintético con la API de Cloud Monitoring, debes crear la política de alertas para supervisar el tipo de métrica uptime_check/check_passed del recurso de Cloud Run en el que se ejecuta la Cloud Function.

Consideraciones sobre la frecuencia de ejecución

Tú configuras la frecuencia con la que se ejecuta tu Cloud Function. Para determinar la frecuencia de las ejecuciones, considera el objetivo de nivel de servicio (SLO) de tu servicio. Para detectar posibles incumplimientos del SLO, debes ejecutar las pruebas con frecuencia. Sin embargo, el SLO de tu servicio no es la única consideración. También debes considerar cómo la frecuencia de ejecuciones se traduce en carga en tu servicio y en tus costos. Cada ejecución proporciona carga en tu servicio, por lo que, mientras más a menudo ejecutes tu Cloud Function, más carga aplicarás a tu servicio. A modo de referencia, el intervalo de ejecución predeterminado para las verificaciones de tiempo de actividad es de un minuto.

La frecuencia de ejecución también determina qué tan rápido puedes recibir una notificación cuando falla la prueba. Monitoring abre un incidente y envía una notificación después de la segunda falla consecutiva de una prueba. Por ejemplo, si la frecuencia de ejecución es de 5 minutos, pueden pasar 10 minutos hasta que hay dos pruebas con errores. Recibirás una notificación luego de la segunda prueba fallida.

Código de muestra de Cloud Function

Para obtener plantillas y muestras, consulta Muestras de monitores sintéticos. Puedes usar estas muestras como punto de partida para tu Cloud Function. Si eres un desarrollador experimentado, considera usar Gemini a fin de generar código para monitores sintéticos y, así, reducir el tiempo de desarrollo. El uso de Gemini para generar código es una versión preliminar pública.

La plantilla genérica, que puedes seleccionar cuando creas un monitor sintético con la consola de Google Cloud, se configura para recopilar datos de seguimiento y de registro de las solicitudes HTTP salientes. La solución aprovecha el módulo auto-instrumentation-node de OpenTelemetry y el registrador de winston. Debido a la dependencia de los productos de código abierto, es posible que haya cambios en la estructura de los datos de seguimiento y registro. Por lo tanto, los datos de registro y de seguimiento recopilados solo deben usarse con fines de depuración.

Puedes implementar tu propio enfoque para recopilar datos de seguimiento y de registro de las solicitudes HTTP salientes. Para ver un ejemplo de un enfoque personalizado, consulta la clase SyntheticAutoInstrumentation.

Configuración de Cloud Function

Cuando configures tu Cloud Function, debes especificar el entorno de ejecución, la compilación, las conexiones y la configuración de seguridad, o aceptar la configuración predeterminada:

  • Es posible que el valor predeterminado de la memoria asignada no sea suficiente. Te recomendamos que establezcas este campo en al menos 2 GiB.

  • El valor predeterminado para la configuración de transferencia de datos entrante de tu Cloud Function es permitir todo el tráfico. Puedes usar esta configuración o una más restrictiva.

    Cuando permites todo el tráfico, siempre se aprueba la primera fase de validación que realiza Cloud Functions a nivel de la red. La segunda fase de validación determina si el llamador tiene permiso para ejecutar la Cloud Function. La autorización depende de la función de Identity and Access Management (IAM) del emisor. De forma predeterminada, Cloud Monitoring tiene permiso para ejecutar tu Cloud Function. Si deseas obtener información para ver o modificar la configuración de transferencia de datos entrantes, consulta Configuración de entrada.

Restricciones de Cloud Function

  • El nombre de tu Cloud Function no debe contener un guion bajo.

  • Solo puedes recopilar datos de seguimiento y registro de las solicitudes HTTP salientes cuando usas la plantilla genérica.

  • Solo se admiten funciones de HTTP. Si usas la consola de Google Cloud para crear tu monitor sintético, se te proporcionará una función predeterminada que consulta una URL. La fuente de la función predeterminada, que se puede modificar, está disponible en el repositorio de Git generic-synthetic-nodejs.

    Para obtener información sobre las funciones de HTTP, consulta Escribe funciones de HTTP.

  • Si usas la API, el comando de implementación debe especificar que la Cloud Function es de 2a generación. Si usas la consola de Google Cloud, la implementación se realiza automáticamente. Para obtener más información, consulta Implementa una función de Cloud Functions.

  • El entorno de ejecución está restringido a Node.js. Para obtener más información, consulta Nodo. Se admiten las siguientes versiones de Node.js: 12, 14, 16, 18 y 20.

Datos recopilados por monitores sintéticos

En esta sección, se describen los datos que se recopilan para el monitor sintético. Si quieres obtener información para ver los resultados de la ejecución, consulta Cómo explorar los resultados del monitor sintético.

Historial de ejecuciones

Para cada monitor sintético, se recopila un historial de los resultados de la ejecución. Estos datos incluyen lo siguiente:

  • Una serie temporal que registra el éxito o la falla de las ejecuciones a lo largo del tiempo.

  • Una serie temporal que registra la duración de la ejecución del código. El tiempo de ejecución de la función no se registra. Los datos de latencia se escriben como una serie temporal uptime_check/request_latency para el recurso de Cloud Run en el que se ejecuta la Cloud Function. En la página Detalles del monitor sintético, se proporciona un gráfico de estos datos.

  • Registros que contienen información sobre las ejecuciones de supervisión sintética, como información sobre los detalles de la prueba y las fallas. Los registros disponibles dependen de tu Cloud Function. Por ejemplo, si usas la plantilla Mocha, los registros incluyen información sobre si la prueba se aprobó o falló y la duración de la prueba. El seguimiento de pila, cuando se incluye, enumera la línea de código que falló, los tipos de errores y los mensajes de error.

  • Opcionalmente, seguimientos y registros de solicitudes HTTP salientes. Si deseas obtener información para recopilar estos datos, consulta Latencia de solicitud.

Métricas y registros de Cloud Function

Métricas y registros para tu Cloud Function. Estos datos, que recopila Cloud Functions, incluyen información sobre la cantidad de ejecuciones por segundo, el tiempo de ejecución y el uso de memoria de tu función.

Latencia de la solicitud

Cloud Trace recopila y almacena automáticamente los datos de latencia de la solicitud HTTP que hace el monitor sintético.

Para recopilar datos de seguimiento, registro y latencia de las solicitudes HTTP salientes que realiza el monitor sintético, debes usar la plantilla genérica. Para obtener más información, consulta Muestras de monitores sintéticos.

Antes de comenzar

  1. Si quieres obtener los permisos que necesitas para ver y modificar los monitores sintéticos con la consola de Google Cloud, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

    Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

    Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.

  2. Habilita las API de Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API.

    Habilita las API

  3. Verifica que tu proyecto de Google Cloud contenga la cuenta de servicio predeterminada de Compute Engine. Esta cuenta de servicio se crea cuando habilitas la API de Compute Engine y tiene un nombre similar a 12345-compute@developer.gserviceaccount.com.

    En la consola de Google Cloud, ve a la página Cuentas de servicio:

    Ir a Cuentas de servicio

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administrador.

    Si la cuenta de servicio predeterminada de Compute Engine no existe, haz clic en Crear cuenta de servicio y completa el cuadro de diálogo.

  4. Asegúrate de que a la cuenta de servicio predeterminada de Compute Engine o a la cuenta de servicio que creaste se haya otorgado el rol de editor (roles/editor).

    Para ver los roles otorgados a tu cuenta de servicio, haz lo siguiente:

    1. En la consola de Google Cloud, ve a la página IAM:

      Ir a IAM

      Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administrador.

    2. Selecciona Incluir asignaciones de roles proporcionadas por Google.
    3. Si la cuenta de servicio que usa tu monitor sintético no aparece en la lista o si no se le otorgó un rol que incluya los permisos en el rol de agente de Cloud Trace (roles/cloudtrace.agent), otorga este rol a tu cuenta de servicio.
  5. Configura los canales de notificaciones que deseas usar para recibir notificaciones. Te recomendamos que crees varios tipos de canales de notificaciones. Para obtener más información, consulta Cómo crear y administrar canales de notificaciones y Cómo crear y administrar canales de notificaciones mediante la API.

Cómo crear un monitor sintético

Console

Cuando creas un monitor sintético con la consola de Google Cloud, se implementa una Cloud Function (2ª gen..) nueva y se crea el monitor para esa Cloud Function. No puedes crear un monitor sintético que supervise una Cloud Function existente.

  1. Asegúrate de que habilitaste las APIs necesarias, que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y que a esta cuenta se le haya otorgado la función de editor (roles/editor). Para obtener más información, consulta Antes de comenzar.
  2. En la consola de Google Cloud, ve a la página  Supervisión sintética:

    Ir a Supervisión sintética

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Monitoring.

  3. Selecciona Create Synthetic Monitor.
  4. Selecciona la plantilla para tu Cloud Function:

    • Monitor sintético personalizado: Usa esta plantilla cuando quieras recopilar datos de registro o datos de seguimiento de solicitudes HTTP salientes.

    • Monitor sintético de Mocha: Usa esta plantilla cuando escribas paquetes de pruebas de Mocha.

    • Verificador de vínculos roto: Usa esta plantilla para probar un URI y una cantidad configurable de vínculos en ese URI. Para obtener información sobre los campos de este verificador, consulta Crea un verificador de vínculos rotos.

  5. Ingresa un nombre para el monitor.

  6. Opcional: Actualiza el Tiempo de espera de respuesta, la Frecuencia de verificación y agrega etiquetas definidas por el usuario.

  7. Realiza una de las siguientes acciones:

  8. En el diálogo de Cloud Function, haz lo siguiente:

    1. Ingresa un nombre visible y selecciona una región. Los nombres deben ser únicos en una región.

    2. En la sección Configuración del entorno de ejecución, la compilación, las conexiones y la seguridad, haz lo siguiente:

      • Revisa la configuración predeterminada y actualízala cuando sea necesario.

      • En el campo Cuenta de servicio del entorno de ejecución, selecciona una cuenta de servicio.

      1. Edita el código generado o escribe o sube el código de tu Cloud Function:

        • Para editar el código generado, ingresa tu propio código o carga la función de ejemplo predeterminada, selecciona Inline Editor. La función de muestra, que depende de la plantilla que seleccionaste antes, envía una solicitud a una URL específica. Puedes modificar la función predeterminada.

        • Para cargar un archivo ZIP desde tu sistema local, selecciona Carga de ZIP.

        Si subes un archivo ZIP desde tu sistema local, también debes especificar un bucket de Cloud Storage para el archivo ZIP. Si no tienes un bucket de Cloud Storage adecuado, crea uno.

        • Para cargar un archivo ZIP desde Cloud Storage, selecciona ZIP de Cloud Storage, selecciona el bucket de almacenamiento y, luego, el archivo ZIP que deseas cargar.

        También puedes crear una Cloud Function mediante las páginas de Cloud Functions en la consola de Google Cloud. Para crear un monitor sintético que supervise una copia de esa Cloud Function, ve a la pestaña Fuente y haz clic en Descargar ZIP. Luego, podrás subir el archivo ZIP.

      2. Haz clic en Aplicar función.

  9. Configura la política de alertas:

    1. Opcional: Actualiza el nombre de la política de alertas y la duración de la falla antes de que se envíen las notificaciones.

    2. Agrega los canales de notificaciones.

  10. Haz clic en Crear.

    La Cloud Function que definiste se compila y se implementa como 2ª gen.., y se crea el monitor sintético.

gcloud

Cuando creas un monitor sintético con Google Cloud CLI o la API de Cloud Monitoring, pasas el nombre de la función a la llamada a la API. Por lo tanto, solo puedes crear un monitor sintético que supervise una Cloud Function existente.

  1. Asegúrate de que habilitaste las APIs necesarias, que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y que a esta cuenta se le haya otorgado la función de editor (roles/editor). Para obtener más información, consulta Antes de comenzar.
  2. Escribe e implementa tu Cloud Function de 2ª gen..

    Por ejemplo, para implementar la muestra synthetics-sdk-nodejs en el repositorio Google Cloud/synthetics-sdk-nodejs, haz lo siguiente:

    1. Clona el repositorio y ve a la ubicación del código fuente:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Implementa la Cloud Function con el comando gcloud functions deploy:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      En el comando gcloud functions deploy, haz lo siguiente:

      • Asegúrate de que el valor del campo FUNCTION_NAME sea único en su región de implementación.

      • Incluye la marca --gen2 y establece la región de implementación.

      • Configura el campo --entry-point de la siguiente manera:

        • Moca: SyntheticMochaSuite
        • No Mocha: SyntheticFunction.
      • Configura el campo --runtime como nodejs18.

      • Incluye la marca --trigger-http.

      • Establece el campo --ingress-settings cuando no desees utilizar la configuración predeterminada, que permite todo el tráfico.

      Cloud Functions compila y, luego, implementa tu Cloud Function. Los resultados del comando de Google Cloud CLI incluyen información sobre la función, incluido su nombre completamente calificado:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      Para obtener más información sobre la implementación de una función, consulta Implementa una Cloud Function.

    Para mostrar una lista de Cloud Functions en tu proyecto de Google Cloud, usa el comando gcloud functions list:

    gcloud functions list
    

    La respuesta de esta llamada es una lista de entradas, cada entrada enumera una Cloud Function:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    Para encontrar el nombre completo de una Cloud Function específica, ejecuta el comando gcloud monitoring uptime describe.

  3. Para crear el monitor sintético, ejecuta el comando gcloud monitoring uptime create:

    gcloud monitoring uptime create DISPLAY_NAME --synthetic-target=TARGET
    

    Antes de ejecutar el comando anterior, haz lo siguiente:

    • Reemplaza DISPLAY_NAME por el nombre de tu monitor sintético.
    • Reemplaza TARGET por el nombre completo de tu Cloud Function.
  4. Crea una política de alertas.

    Debido a la complejidad de la configuración de la política de alertas, te recomendamos que vayas a la página Monitores sintéticos en la consola de Google Cloud y uses las opciones para crear una política de alertas. Con este enfoque, la mayoría de los campos de políticas de alertas se propagan automáticamente. Para crear la política de alertas con la consola de Google Cloud, haz clic en Crear política en la página Supervisión sintética.

    Si planeas usar Google Cloud CLI o la API de Cloud Monitoring, configura el filtro de la condición de la siguiente manera:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    La condición supervisa las series temporales uptime_check/check_passed que escribe tu monitor sintético. Asegúrate de reemplazar CHECK_ID por el identificador del monitor sintético, que se incluye en los datos de respuesta de un comando de creación.

    Para obtener información sobre cómo crear una política de alertas, consulta Crea políticas de alertas mediante la API.

API

Cuando creas un monitor sintético con Google Cloud CLI o la API de Cloud Monitoring, pasas el nombre de la función a la llamada a la API. Por lo tanto, solo puedes crear un monitor sintético que supervise una Cloud Function existente.

  1. Asegúrate de que habilitaste las APIs necesarias, que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y que a esta cuenta se le haya otorgado la función de editor (roles/editor). Para obtener más información, consulta Antes de comenzar.
  2. Escribe e implementa tu Cloud Function de 2ª gen..

    Por ejemplo, para implementar la muestra synthetics-sdk-nodejs en el repositorio Google Cloud/synthetics-sdk-nodejs, haz lo siguiente:

    1. Clona el repositorio y ve a la ubicación del código fuente:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Implementa la Cloud Function con el comando gcloud functions deploy:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      En el comando gcloud functions deploy, haz lo siguiente:

      • Asegúrate de que el valor del campo FUNCTION_NAME sea único en su región de implementación.

      • Incluye la marca --gen2 y establece la región de implementación.

      • Configura el campo --entry-point de la siguiente manera:

        • Moca: SyntheticMochaSuite
        • No Mocha: SyntheticFunction.
      • Configura el campo --runtime como nodejs18.

      • Incluye la marca --trigger-http.

      • Establece el campo --ingress-settings cuando no desees utilizar la configuración predeterminada, que permite todo el tráfico.

      Cloud Functions compila y, luego, implementa tu Cloud Function. Los resultados del comando de Google Cloud CLI incluyen información sobre la función, incluido su nombre completamente calificado:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      Para obtener más información sobre la implementación de una función, consulta Implementa una Cloud Function.

    Para mostrar una lista de Cloud Functions en tu proyecto de Google Cloud, usa el comando gcloud functions list:

    gcloud functions list
    

    La respuesta de esta llamada es una lista de entradas, cada entrada enumera una Cloud Function:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    Para encontrar el nombre completo de una Cloud Function específica, ejecuta el comando gcloud monitoring uptime describe.

  3. Para crear un monitor sintético, haz lo siguiente:

    1. Haz clic en projects.uptimeCheckConfigs.create para abrir la página de referencia de la API del método.
    2. Haz clic en Try it para abrir el Explorador de APIs.
    3. Configura los siguientes campos y, luego, ejecuta el comando.

      • Campo superior: projects/PROJECT_ID.
      • Especifica lo siguiente en el cuerpo de la solicitud:

        • displayName: Se establece como el nombre visible del monitor sintético.
        • syntheticMonitor: Se establece como el nombre completamente calificado de tu Cloud Function.

      Si se realiza de forma correcta, la respuesta de la llamada a la API es similar a la siguiente:

      {
      "name": "projects/myproject/uptimeCheckConfigs/17272586127463315332",
      "displayName": "MyMonitor",
      ...
      "syntheticMonitor": {
       "cloudFunctionV2": {
          "name": "projects/myproject/locations/us-west2/functions/function-1",
          "cloudRunRevision": {
          "type": "cloud_run_revision",
          "labels": {
             "project_id": "myproject",
             "configuration_name": "",
             "location": "us-west2",
             "revision_name": "",
             "service_name": "function-1"
          }
          }
       }
      }
      }
      
  4. Crea una política de alertas.

    Debido a la complejidad de la configuración de la política de alertas, te recomendamos que vayas a la página Monitores sintéticos en la consola de Google Cloud y uses las opciones para crear una política de alertas. Con este enfoque, la mayoría de los campos de políticas de alertas se propagan automáticamente. Para crear la política de alertas con la consola de Google Cloud, haz clic en Crear política en la página Supervisión sintética.

    Si planeas usar Google Cloud CLI o la API de Cloud Monitoring, configura el filtro de la condición de la siguiente manera:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    La condición supervisa las series temporales uptime_check/check_passed que escribe tu monitor sintético. Asegúrate de reemplazar CHECK_ID por el identificador del monitor sintético, que se incluye en los datos de respuesta de un comando de creación.

    Para obtener información sobre cómo crear una política de alertas, consulta Crea políticas de alertas mediante la API.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor de Terraform.

Si deseas crear un monitor sintético y una política de alertas para supervisar esa verificación, haz lo siguiente:

  1. Asegúrate de que habilitaste las APIs necesarias, que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y que a esta cuenta se le haya otorgado la función de editor (roles/editor). Para obtener más información, consulta Antes de comenzar.

  2. Edita el archivo de configuración de Terraform, agrega un recurso google_storage_bucket y, luego, aplica los cambios.

    Con el siguiente código, se define un bucket de Cloud Storage en la ubicación US:

    resource "google_storage_bucket" "gcf_source" {
       name = "gcf-v2-source-9948673986912-us"
       location = "US"
       uniform_bucket_level_access = true
    }
    
  3. Edita el archivo de configuración de Terraform y agrega un recurso google_storage_bucket_object. Luego, aplica los cambios.

    El recurso especifica el nombre del objeto en tu bucket y la ubicación del archivo ZIP en tu sistema local. Por ejemplo, cuando aplicas el siguiente código, se agrega un archivo con el nombre example-function.zip a tu bucket de almacenamiento:

    resource "google_storage_bucket_object" "object" {
       name = "example-function.zip"
       bucket = google_storage_bucket.gcf_source.name
       source = "generic-synthetic-node.js.zip"
    }
    
  4. Edita el archivo de configuración de Terraform y agrega un recurso google_cloudfunctions2_function. Luego, aplica los cambios.

    Asegúrate de que el recurso google_cloudfunctions2_function especifique un entorno de ejecución de Node.js y el punto de entrada que usan los monitores sintéticos. Por ejemplo, cuando aplicas el siguiente código, se implementa una función con el nombre sm-central1:

    resource "google_cloudfunctions2_function" "central1" {
       name = "sm-central1"
       location = "us-central1"
    
       build_config {
          runtime = "nodejs20"
          entry_point = "SyntheticFunction"
          source {
                storage_source {
                   bucket = google_storage_bucket.gcf_source.name
                   object = google_storage_bucket_object.object.name
                }
          }
       }
    
       service_config {
          max_instance_count = 1
          available_memory = "256Mi"
          timeout_seconds  = 60
       }
    }
    
  5. Para crear un monitor sintético, edita el archivo de configuración de Terraform, agrega un recurso google_monitoring_uptime_check_config y, luego, aplica los cambios.

    Para este recurso, especifica el bloque synthetic_monitor:

    resource "google_monitoring_uptime_check_config" "synthetic" {
       display_name = "sm-central1"
       timeout = "30s"
    
       synthetic_monitor {
          cloud_function_v2 {
                name = google_cloudfunctions2_function.central1.id
          }
       }
    }
    
  6. Opcional: Crea un canal de notificaciones y una política de alertas.

    En los siguientes pasos, se usa la consola de Google Cloud para crear el canal de notificaciones y la política de alertas. Este enfoque garantiza que la política de alertas solo supervise los datos que genera tu monitor sintético.

    1. Para crear un canal de notificaciones, haz lo siguiente:

      1. En la consola de Google Cloud, ve a la página  Alertas:

        Ir a las Alertas

        Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Monitoring.

      2. Selecciona Administrar canales de notificaciones.
      3. Ve al tipo de canal que deseas agregar, haz clic en Agregar y, luego, completa el cuadro de diálogo.
    2. Para crear una política de alertas, sigue estos pasos:

      1. En la consola de Google Cloud, ve a la página  Supervisión sintética:

        Ir a Supervisión sintética

        Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Monitoring.

      2. Localiza tu monitor sintético, selecciona Más y, luego, Agregar política de alertas.
      3. En el cuadro de diálogo, ve a la sección Notificaciones y nombre, expande Canales de notificaciones y realiza tus selecciones.
      4. Asigna un nombre a la política de alertas y, luego, haz clic en Crear política.

Precios

En general, las métricas del sistema de Cloud Monitoring son gratuitas y las métricas de sistemas, agentes o aplicaciones externos no lo son. Las métricas facturables se facturan según la cantidad de bytes o de muestras transferidas.

Para obtener más información sobre los precios de Cloud Monitoring, consulta los siguientes documentos:

Cómo solucionar problemas relacionados con monitores sintéticos

En esta sección, se proporciona información que puedes usar para solucionar problemas de monitores sintéticos.

Mensaje de error después de habilitar las APIs

Abres el flujo de creación de un monitor sintético y se te solicita que habilites al menos una API. Después de habilitar las APIs, se mostrará un mensaje similar al siguiente:

An error occurred during fetching available regions: Cloud Functions API has
not been used in project PROJECT_ID before or it is disabled.

En el mensaje de error, se recomienda que verifiques que la API esté habilitada y, luego, te aconseja que esperes y vuelvas a intentar la acción.

Para verificar que la API esté habilitada, ve a la página APIs y servicios de tu proyecto:

Ir a APIs y servicios.

Después de verificar que la API está habilitada, puedes continuar con el flujo de creación. La condición se resuelve automáticamente después de que la habilitación de la API se propaga a través del backend.

No se hace un seguimiento de las solicitudes HTTP salientes

Configura el monitor sintético para recopilar datos de seguimiento de las solicitudes HTTP de salida. En los datos de seguimiento, solo se muestra un intervalo, similar a la siguiente captura de pantalla:

Cloud Trace muestra solo un seguimiento.

Para resolver esta situación, asegúrate de que tu cuenta de servicio tenga la función de agente de Cloud Trace (roles/cloudtrace.agent). Una función de editor (roles/editor) también es suficiente.

Para ver los roles otorgados a tu cuenta de servicio, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página IAM:

    Ir a IAM

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administrador.

  2. Selecciona Incluir asignaciones de roles proporcionadas por Google.
  3. Si la cuenta de servicio que usa tu monitor sintético no aparece en la lista o si no se le otorgó una función que incluya los permisos en la función de agente de Cloud Trace (roles/cloudtrace.agent), otorga esta función a tu cuenta de servicio.

    Si no conoces el nombre de tu cuenta de servicio, en el menú de navegación, selecciona Cuentas de servicio.

Estado En curso

En la página Monitores sintéticos, se muestra un monitor sintético con el estado In progress. Un estado de In progress significa que el monitor sintético se creó recientemente y que no hay datos para mostrar, o que no se pudo implementar la función.

Para determinar si no se pudo implementar la función, prueba lo siguiente:

  • Asegúrate de que el nombre de tu Cloud Function no contenga un guion bajo. Si hay un guion bajo presente, quítalo y vuelve a implementar la Cloud Function.

  • Abre la página Detalles del monitor sintético.

    Si ves el siguiente mensaje, borra el monitor sintético.

    Cloud Function not found for this Synthetic monitor. Please confirm it exists or delete this monitor.
    

    El mensaje de error indica que se borró la función y, por lo tanto, el monitor sintético no puede ejecutarla.

  • Abre la página de Cloud Functions de la función. Para abrir esta página desde la página Detalles del monitor sintético, haz clic en Código y, luego, en el nombre de la función.

    Si ves un mensaje similar al siguiente, quiere decir que no se pudo implementar la función.

    This function has failed to deploy and will not work correctly. Please edit and redeploy
    

    Para resolver este error, revisa el código de la función y corrige los errores que impiden que la función se compile o se implemente.

Cuando creas un monitor sintético, es posible que la función tarde varios minutos en implementarse y ejecutarse.

Estado de advertencia

En Monitores sintéticos, se muestra un monitor sintético con un estado de Warning. Un estado de Warning significa que los resultados de la ejecución no son coherentes. Esto puede indicar un problema de diseño con tu prueba o que lo que se está probando tiene un comportamiento inconsistente.

Estado de error

En Monitores sintéticos, se muestra un monitor sintético con un estado de Failing. Para obtener más información sobre el motivo de la falla, consulta el historial de ejecuciones más reciente.

  • Si se muestra el mensaje de error Request failed with status code 429, significa que el destino de la solicitud HTTP rechazó el comando. Para resolver este error, debes cambiar el objetivo del monitor sintético.

    El extremo https://www.google.com rechaza las solicitudes que realizan los monitores sintéticos.

  • Si la falla muestra un tiempo de ejecución de 0ms, es posible que la Cloud Function se esté quedando sin memoria. Para resolver este error, edita tu Cloud Function, aumenta la memoria a al menos 2 GiB y establece el campo de CPU en 1.

La eliminación falla de un monitor sintético

Usas la API de Cloud Monitoring para borrar un monitor sintético, pero la llamada a la API falla con una respuesta similar a la siguiente:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "[ORIGINAL ERROR] generic::invalid_argument: Cannot delete check 1228258045726183344. One or more alerting policies is using it.Delete the alerting policy with id projects/myproject/alertPolicies/16594654141392976482 and any other policies using this uptime check and try again."
      }
    ]
  }
}

Para resolver la falla, borra las políticas de alertas que supervisan los resultados del monitor sintético y, luego, bórralo.

¿Qué sigue?