Haz un seguimiento de tu API

Después de implementar el proxy de servicio extensible (ESP) y el código del backend de tu API, el ESP intercepta todas las solicitudes y realiza las verificaciones necesarias antes de reenviar la solicitud al backend de la API. Cuando el backend responde, el ESP informa y recopila la telemetría. Una parte de los datos de telemetría que captura el ESP es el seguimiento mediante Cloud Trace.

En esta página se explica cómo:

  • Ver seguimientos en Google Cloud Console
  • Calcular el costo para Trace
  • Configurar el ESP para inhabilitar el muestreo de seguimientos

Ver seguimientos para tu API

Para ver los seguimientos de tu API, sigue estos pasos:

  1. Ve a la página Endpoints > Servicios para tu proyecto:

    Ir a la página de servicios de Endpoints

  2. Si tienes más de una API, haz clic en la API de la cual deseas ver los seguimientos.

  3. Asegúrate de que te encuentres en la pestaña Descripción general.

  4. Desplázate hacia abajo y haz clic en Ver seguimientos. Se muestra la página Lista de seguimiento de Cloud Trace.

Un seguimiento rastrea una solicitud entrante a tu API y los diversos eventos que se producen, como llamadas RPC o secciones instrumentadas de código, junto con los tiempos precisos. Estos eventos se representan como intervalos en el seguimiento.

En la página Lista de seguimiento, puedes desglosar un seguimiento individual y ver los intervalos que crea el ESP en un seguimiento.

Seguimiento de ejemplo con intervalos

Para obtener más información sobre la página Lista de seguimientos, consulta la sección sobre cómo ver los seguimientos en Cloud Console.

Intervalos creados por ESP

Como mínimo, el ESP crea 4 intervalos por seguimiento:

  • Un intervalo para toda la solicitud y respuesta
  • Un intervalo CheckServiceControl para la llamada al método services.check del Control de servicios a fin de obtener la configuración de tu API.
  • Un intervalo QuotaControl para verificar si existe una cuota configurada en tu API.
  • Un intervalo Backend que realiza un seguimiento del tiempo que se emplea en el código de backend de tu API.

Según la configuración de tu API, el ESP crea intervalos adicionales:

  • Si tu API requiere autenticación, el ESP crea un intervalo CheckAuth en cada seguimiento. Si deseas autenticar una solicitud, el ESP almacena en caché la clave pública que necesita a fin de realizar la autenticación durante 5 minutos. Si la clave pública no está en la caché, el ESP recupera y almacena en caché la clave pública, y crea un intervalo HttpFetch.
  • Si tu API requiere una clave de API, el ESP crea un intervalo CheckServiceControlCache en cada seguimiento. El ESP almacena en caché la información que necesita para validar la clave de API. Si la información no está en la caché, el ESP llama al Control de servicios y crea un intervalo Call ServiceControl server.
  • Si tienes una cuota configurada en tu API, el ESP crea un intervalo QuotaServiceControlCache en cada seguimiento. El ESP almacena en caché la información que necesita para verificar la cuota. Si la información no está en la caché, el ESP llama al Control de servicios y crea un intervalo Call ServiceControl server.

Tasa de muestreo de seguimientos

El ESP envía muestras de una cantidad pequeña de solicitudes a tu API a fin de obtener los datos de seguimiento. Para controlar la tasa de muestreo, el ESP mantiene un recuento de solicitudes y un temporizador. La cantidad de solicitudes por segundo a tu API determina la tasa de muestreo. Si no hay solicitudes en un segundo, el ESP no envía un seguimiento.

Si el número de solicitudes en un segundo es:

  • Menor o igual que 999, el ESP envía 1 seguimiento.
  • Entre 1000 y 1999, el ESP envía 2 seguimientos.
  • Entre 2000 y 2999, el ESP envía 3 seguimientos.
  • Y así sucesivamente.

En resumen, puedes calcular la tasa de muestreo con la función ceiling: ceiling(requests per second/1000)

Cómo calcular el costo de Trace

Si quieres calcular el costo de Trace, debes computar la cantidad de intervalos que el ESP envía a Trace en un mes.

Para estimar el número de intervalos por mes, haz lo siguiente:

  1. Calcula la cantidad de solicitudes por segundo que se envían a tu API. Para obtener esta estimación, puedes usar el grafo Solicitudes en la página Servicios > Endpoints o Cloud Logging. Consulta Cómo supervisar tu API para obtener más información.
  2. Calcula la cantidad de seguimientos que ESP envía a Trace por segundo: ceiling(requests per second/1000)
  3. Estima el número de intervalos en un seguimiento. Para obtener el resultado, puedes usar la información que aparece en Intervalos creados por ESP o ver la página Lista de seguimiento si quieres ver los seguimientos de tu API.
  4. Estima la cantidad de segundos que tu API recibe tráfico en un mes. Por ejemplo, algunas API obtienen solicitudes solo durante ciertos momentos del día, mientras que otras API obtienen solicitudes de manera esporádica.
  5. Multiplica el número de segundos en el mes por el número de intervalos.

Por ejemplo:

  1. Supongamos que el número máximo de solicitudes por segundo para una API es de 5.
  2. La tasa de muestreo de seguimientos es techo (5/1000) = 1.
  3. La API no tiene una cuota configurada, no requiere una clave de API ni autenticación. Por lo tanto, la cantidad de intervalos que el ESP crea por seguimiento es 4.
  4. Esta API solo recibe solicitudes de lunes a viernes durante el horario de atención. La cantidad de segundos en un mes en la que la API obtiene tráfico es aproximadamente: 3,600 X 8 X 20 = 576,000.
  5. La cantidad de intervalos por mes es de alrededor de 576,000 x 4 = 2,304,000.

Después de conocer la cantidad aproximada de intervalos en un mes, consulta la página de precios de Trace para obtener información detallada sobre los precios.

Inhabilitar el muestreo de seguimientos

Si quieres que el ESP deje de realizar el muestreo de solicitudes y de enviar seguimientos, puedes configurar una opción de inicio del ESP y reiniciar el ESP. Los seguimientos que el ESP envía a Cloud Trace son independientes de los grafos que se muestran en la página Endpoints > Servicios. Los grafos seguirán estando disponibles si inhabilitas el muestreo de seguimiento.

En la sección siguiente, se supone que ya implementaste tu API y el ESP, o que estás familiarizado con el proceso de implementación. Para obtener más información, consulta Cómo implementar el backend de la API.

App Engine

Si quieres inhabilitar el muestreo de seguimiento del ESP en el entorno flexible de App Engine, haz lo siguiente:

  1. Edita el archivo app.yaml. En la sección endpoints_api_service, agrega la opción trace_samplingy establece su valor en false. Por ejemplo:
        endpoints_api_service:
          name: example-project-12345.appspot.com
          rollout_strategy: managed
          trace_sampling: false
        

    Si tu aplicación se basa en microservicios, debes incluir trace_sampling: false en cada archivo app.yaml.

  2. Si hace mucho que actualizas el SDK de Cloud, ejecuta el comando siguiente:
        gcloud components update
        
  3. Guarda el o los archivos app.yaml.
  4. Implementa tu código de backend y el ESP en App Engine:
        gcloud app deploy
        

Para volver a habilitar el muestreo de seguimientos:

  1. Quita la opción trace_sampling de app.yaml.
  2. Implementa tu código de backend y el ESP en App Engine:
        gcloud app deploy
        

Compute Engine

Si quieres inhabilitar el muestreo de seguimiento del ESP en Compute Engine con Docker, haz lo siguiente:

  1. Conéctate a tu instancia de VM:
        gcloud compute ssh [INSTANCE_NAME]
  2. En las marcas del ESP para el comando docker run, agrega la opción --disable_cloud_trace_auto_sampling:
        sudo docker run \
            --name=esp \
            --detach \
            --publish=80:8080 \
            --net=esp_net \
            gcr.io/endpoints-release/endpoints-runtime:1 \
            --service=[SERVICE_NAME] \
            --rollout_strategy=managed \
            --backend=[YOUR_API_CONTAINER_NAME]:8080 \
            --disable_cloud_trace_auto_sampling
  3. Emite el comando docker run para reiniciar el ESP.

Para volver a habilitar el muestreo de seguimientos, sigue estos pasos:

  1. Quita el --disable_cloud_trace_auto_sampling.
  2. Emite el comando docker run para reiniciar el ESP.

GKE

Si quieres inhabilitar el muestreo de seguimiento del ESP en GKE, sigue estos pasos:

  1. Abre tu archivo de manifiesto de la implementación, denominado deployment.yaml y agrega lo siguiente a la sección containers:
        containers:
        - name: esp
          image: gcr.io/endpoints-release/endpoints-runtime:1
          args: [
            "--http_port=8081",
            "--backend=127.0.0.1:8080",
            "--service=[SERVICE_NAME]",
            "--rollout_strategy=managed",
            "--disable_cloud_trace_auto_sampling"
          ]
  2. Inicia el servicio de Kubernetes con el comando kubectl create:
        kubectl create -f deployment.yaml

Para volver a habilitar el muestreo de seguimientos:

  1. Quita la opción --disable_cloud_trace_auto_sampling.
  2. Inicia el servicio de Kubernetes:
        kubectl create -f deployment.yaml

Si ejecutas el ESP en una instancia de VM de Compute Engine sin un contenedor de Docker, no habrá un par clave-valor de metadatos de instancia de VM equivalente para la opción --disable_cloud_trace_auto_sampling. Si quieres inhabilitar el muestreo de seguimientos, debes ejecutar el ESP en un contenedor.

Un cliente puede forzar el seguimiento de una solicitud si agrega el encabezado X-Cloud-Trace-Context a la solicitud, como se describe en Solución de problemas de Trace. Si una solicitud contiene el encabezado X-Cloud-Trace-Context, el ESP envía los datos de seguimiento a Trace, incluso si inhabilitaste el muestreo de seguimientos.