Crea 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. Proporcionas pruebas para tu aplicación. El monitor sintético ejecuta ese código y registra los resultados de las pruebas y datos adicionales, como la latencia. Si quieres recibir una notificación cuando falle una prueba, puedes configurar una política de alertas para supervisar los resultados de la prueba.

Esta función solo se admite para proyectos de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.

Acerca de los monitores sintéticos

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

Para crear tu función de Cloud Run, puedes usar un editor intercalado o subir un archivo ZIP. Si eliges usar el editor integrado, 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 función de Cloud Run. Si bien especificas la región en la que existe tu función de Cloud Run, 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 Cómo enumerar las direcciones IP del servidor de 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 Google Cloud consola, 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 consecutivas en las pruebas.

  • 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 para el recurso de Cloud Run en el que se ejecuta la función de Cloud Run.

Consideraciones sobre la frecuencia de ejecución

Configuras la frecuencia con la que se ejecuta tu función de Cloud Run. 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 tasa de ejecuciones se traduce en carga en tu servicio y en tus costos. Cada ejecución genera carga en tu servicio, por lo que, cuanto más seguido ejecutes tu función de Cloud Run, más carga aplicarás a tu servicio. Como 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 la rapidez con la que puedes recibir notificaciones cuando falla la prueba. Monitoring abre un incidente y envía una notificación después del segundo error consecutivo de una prueba. Por ejemplo, si tu frecuencia de ejecución es de 5 minutos, pueden pasar 10 minutos antes de que haya dos pruebas fallidas. Recibirás una notificación después del segundo error de la prueba.

Código de muestra de la función de Cloud Run

Para ver plantillas y muestras, consulta Muestras para supervisores sintéticos. Puedes usar estas muestras como punto de partida para tu función de Cloud Run. Si eres un desarrollador con experiencia, considera usar Gemini para generar código para monitores sintéticos y, así, reducir el tiempo de desarrollo. El uso de Gemini para generar código se encuentra en versión preliminar pública.

La plantilla genérica, que puedes seleccionar cuando creas un monitor sintético con la consola de Google Cloud , está configurada para recopilar datos de registros y de seguimiento para 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 productos de código abierto, es posible que se produzcan cambios en la estructura de los datos de registro y seguimiento. 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 registros y de seguimiento de las solicitudes HTTP salientes. Para ver un ejemplo de un enfoque personalizado, consulta la clase SyntheticAutoInstrumentation.

Configuración de la función de Cloud Run

Cuando configures tu función de Cloud Run, debes especificar la configuración del entorno de ejecución, la compilación, las conexiones y la seguridad, o bien 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 entrantes de tu función de Cloud Run es permitir todo el tráfico. Puedes usar este parámetro de configuración o uno más restrictivo.

    Cuando permites todo el tráfico, siempre se supera la primera fase de validación que realiza Cloud Run Functions, que se lleva a cabo a nivel de la red. En la segunda fase de validación, se determina si se le otorgó permiso al usuario que originó la llamada para ejecutar la Cloud Run Function. La autorización depende del rol de Identity and Access Management (IAM) de la entidad llamadora. De forma predeterminada, Cloud Monitoring tiene permiso para ejecutar tu función de Cloud Run. Para obtener información sobre cómo ver o modificar la configuración de transferencia de datos entrantes, consulta Configuración de entrada.

Restricciones de las funciones de Cloud Run

  • El nombre de tu función de Cloud Run no debe contener un guion bajo.

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

  • Solo se admiten las funciones HTTP. Si usas la consola deGoogle Cloud para crear tu monitor sintético, se te proporcionará una función predeterminada que consulta una URL. El código 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 HTTP, consulta Escribe funciones HTTP.

  • Si usas la API, el comando de implementación debe especificar que la función de Cloud Run es de 2ª generación. Si usas la consola deGoogle Cloud , la implementación se controla por ti. Para obtener más información, consulta Cómo implementar una función de Cloud Run Functions.

  • El entorno de ejecución se limita 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 los monitores sintéticos

En esta sección, se describen los datos que se recopilan para tu monitor sintético. Para obtener información sobre cómo ver los resultados de la ejecución, consulta Explora los resultados de los monitores sintéticos.

Historial de ejecuciones

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

  • Es una serie temporal que registra el éxito o el fracaso de las ejecuciones a lo largo del tiempo.

  • Es una serie temporal que registra la duración de la ejecución del código. No se registra el tiempo de ejecución de la función. Los datos de latencia se escriben como una serie temporal de uptime_check/request_latency para el recurso de Cloud Run en el que se ejecuta la función de Cloud Run. 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 supervisores sintéticos, como información sobre la prueba y los detalles de las fallas. Los registros disponibles dependen de tu función de Cloud Run. 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. Cuando se incluye, el seguimiento de pila enumera la línea de código que falló, los tipos de error y los mensajes de error.

  • De manera opcional, registros y seguimientos de solicitudes HTTP salientes. Para obtener información sobre cómo recopilar estos datos, consulta Latencia de la solicitud.

Métricas y registros de Cloud Run Functions

Métricas y registros de tu función de Cloud Run Estos datos, que recopilan las Cloud Run 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 realiza el monitor sintético.

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

Antes de comenzar

Completa los siguientes pasos en el proyecto de Google Cloud que almacenará el monitor sintético:

  1. Para obtener los permisos que necesitas para ver y modificar 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:

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

  2. Enable the Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API APIs.

    Enable the APIs

  3. Verifica que tu proyecto 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 Google Cloud consola, 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 no existe la cuenta de servicio predeterminada de Compute Engine, haz clic en Crear cuenta de servicio y completa el 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 le haya otorgado el rol de Editor (roles/editor).

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

    1. En la Google Cloud consola, 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 no aparece la cuenta de servicio que usa tu monitor sintético o si no se le otorgó un rol que incluya los permisos del rol de agente de Cloud Trace (roles/cloudtrace.agent), otorga este rol a tu cuenta de servicio.
  5. Configura los canales de notificación 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 con la API.
  6. Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      Terraform

      Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local en la Google Cloud documentación de autenticación.

      REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Si deseas obtener más información, consulta Autentica para usar REST en la Google Cloud documentación de autenticación.

      Crea un monitor sintético

      Console

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

      1. Asegúrate de haber habilitado las APIs requeridas, de que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y de que a esta cuenta se le haya otorgado el rol 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 Synthetic monitoring

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

      3. En la barra de herramientas de la consola de Google Cloud , selecciona tu proyecto Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.
      4. Selecciona Crear un monitor sintético.
      5. Selecciona la plantilla para tu Cloud Run Function:

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

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

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

      6. Ingresa un nombre para el monitor.

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

      8. Realiza una de las siguientes acciones:

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

        1. Ingresa un nombre visible y selecciona una región. Los nombres deben ser únicos dentro de 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 tiempo de ejecución, selecciona una cuenta de servicio.

        3. Edita el código generado o escribe o sube código para tu Cloud Run function:

          • Para editar el código generado, ingresar tu propio código o cargar la función de muestra predeterminada, selecciona Editor directo. La función de muestra, que depende de la plantilla que seleccionaste anteriormente, 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 from Cloud Storage, elige el bucket de almacenamiento y, luego, selecciona el archivo ZIP que deseas cargar.

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

        4. Haz clic en Aplicar función.

      10. 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.

      11. Haz clic en Crear.

        La función de Cloud Run que definiste se compila y se implementa como de 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 función de Cloud Run existente.

      1. Asegúrate de haber habilitado las APIs requeridas, de que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y de que a esta cuenta se le haya otorgado el rol de Editor (roles/editor). Para obtener más información, consulta Antes de comenzar.
      2. Configura Google Cloud CLI para establecer un proyecto predeterminado con el comando gcloud config set:

        gcloud config set project PROJECT_ID
        

        Antes de ejecutar el comando anterior, reemplaza lo siguiente:

        • PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.
      3. Escribe e implementa tu función de Cloud Run de 2ª gen.

        Por ejemplo, para implementar la muestra de 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 función de Cloud Run 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:

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

          • Incluye la marca --trigger-http.

          • Establece el campo --ingress-settings cuando no quieras usar el parámetro de configuración predeterminado, que permite todo el tráfico.

          Cloud Run Functions compila y, luego, implementa tu función de Cloud Run. 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 Cómo implementar una función de Cloud Run.

        Para enumerar las funciones de Cloud Run en tu proyecto Google Cloud , usa el comando gcloud functions list:

        gcloud functions list
        

        La respuesta de esta llamada es una lista de entradas, en la que cada entrada enumera una función de Cloud Run:

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

        Para encontrar el nombre completamente calificado de una función de Cloud Run específica, ejecuta el comando gcloud monitoring uptime describe.

      4. 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, reemplaza lo siguiente:

        • DISPLAY_NAME: Es el nombre de tu monitor sintético.
        • TARGET: Es el nombre completo de tu función de Cloud Run.
      5. 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 la política de alertas se propagan automáticamente. Para crear la política de alertas con la consola deGoogle Cloud , haz clic en Crear política en la página Monitores sintéticos.

        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 de 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 create.

        Para obtener información sobre cómo crear una política de alertas, consulta Crea políticas de alertas con 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.

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

      1. Instala y configura Terraform para tu proyecto. Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.

      2. Asegúrate de haber habilitado las APIs requeridas, de que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y de que a esta cuenta se le haya otorgado el rol de Editor (roles/editor). Para obtener más información, consulta Antes de comenzar.

      3. Edita tu archivo de configuración de Terraform y agrega un recurso google_storage_bucket. Luego, aplica los cambios.

        El siguiente código 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
        }
        
      4. Edita tu 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"
        }
        
      5. Edita tu archivo de configuración de Terraform y agrega un recurso google_cloudfunctions2_function. Luego, aplica los cambios.

        Asegúrate de que tu 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
           }
        }
        
      6. Para crear un monitor sintético, edita tu 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
              }
           }
        }
        
      7. 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 generados por 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 es Monitoring.

          2. Selecciona Administrar canales de notificaciones.
          3. Ve al tipo de canal que deseas agregar, haz clic en Agregar y, luego, completa el 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 Synthetic monitoring

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

          2. Busca tu monitor sintético, selecciona Más y, luego, Agregar política de alertas.
          3. En el 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.

      REST

      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 función de Cloud Run existente.

      1. Asegúrate de haber habilitado las APIs requeridas, de que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y de que a esta cuenta se le haya otorgado el rol de Editor (roles/editor). Para obtener más información, consulta Antes de comenzar.
      2. Configura Google Cloud CLI para establecer un proyecto predeterminado con el comando gcloud config set:

        gcloud config set project PROJECT_ID
        

        Antes de ejecutar el comando anterior, reemplaza lo siguiente:

        • PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.
      3. Escribe e implementa tu función de Cloud Run de 2ª gen.

        Por ejemplo, para implementar la muestra de 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 función de Cloud Run 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:

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

          • Incluye la marca --trigger-http.

          • Establece el campo --ingress-settings cuando no quieras usar el parámetro de configuración predeterminado, que permite todo el tráfico.

          Cloud Run Functions compila y, luego, implementa tu función de Cloud Run. 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 Cómo implementar una función de Cloud Run.

        Para enumerar las funciones de Cloud Run en tu proyecto Google Cloud , usa el comando gcloud functions list:

        gcloud functions list
        

        La respuesta de esta llamada es una lista de entradas, en la que cada entrada enumera una función de Cloud Run:

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

        Para encontrar el nombre completamente calificado de una función de Cloud Run específica, ejecuta el comando gcloud monitoring uptime describe.

      4. 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 Pruébalo para abrir el Explorador de APIs.
        3. Configura los siguientes campos y, luego, ejecuta el comando.

          • Campo principal: Es el proyecto en el que se creará el monitor sintético. Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps. Este campo tiene el siguiente formato:

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

            • displayName: Se establece en el nombre visible de tu monitor sintético.
            • syntheticMonitor: Se establece en el nombre completo de tu función de Cloud Run.

          Si se ejecuta correctamente, 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"
              }
              }
           }
          }
          }
          
      5. 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 la política de alertas se propagan automáticamente. Para crear la política de alertas con la consola deGoogle Cloud , haz clic en Crear política en la página Monitores sintéticos.

        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 de 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 create.

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

      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 cobran según la cantidad de bytes o la cantidad de muestras transferidas.

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

      Soluciona problemas de monitores sintéticos

      En esta sección, se proporciona información que puedes usar para solucionar problemas de tus 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 muestra 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.
      

      El mensaje de error 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 API 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 realiza el seguimiento de las solicitudes HTTP salientes

      Configuras tu monitor sintético para recopilar datos de seguimiento de las solicitudes HTTP de salida. Tus datos de seguimiento solo muestran un intervalo, similar a la siguiente captura de pantalla:

      Cloud Trace muestra solo un registro.

      Para resolver esta situación, asegúrate de que a tu cuenta de servicio se le haya otorgado el rol de agente de Cloud Trace (roles/cloudtrace.agent). También es suficiente con el rol de editor (roles/editor).

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

      1. En la Google Cloud consola, 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. En la barra de herramientas de la consola de Google Cloud , selecciona tu proyecto Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.
      3. Selecciona Incluir asignaciones de roles proporcionadas por Google.
      4. Si no aparece la cuenta de servicio que usa tu monitor sintético o si no se le otorgó un rol que incluya los permisos del rol de agente de Cloud Trace (roles/cloudtrace.agent), otorga este rol a tu cuenta de servicio.

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

      Estado En curso

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

      Para determinar si la función no se implementó, haz lo siguiente:

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

      • Abre la página Detalles del monitor sintético 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 Run Functions para 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, significa 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 esta falla, revisa el código de la función y corrige los errores que impiden que se compile o implemente.

      Cuando creas un monitor sintético, la función puede tardar varios minutos en implementarse y ejecutarse.

      Estado de advertencia

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

      Estado de falla

      En Monitores sintéticos, se muestra un monitor sintético con el estado Failing. Para obtener más información sobre el motivo del error, consulta el historial de ejecución 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 destino de tu monitor sintético.

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

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

      Falla la eliminación 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 el error, borra las políticas de alertas que supervisan los resultados del monitor sintético y, luego, borra el monitor sintético.

      ¿Qué sigue?