Supervisa Pub/Sub en Cloud Monitoring

Puedes usar la consola de Google Cloud o la API de Cloud Monitoring para supervisar Pub/Sub.

En este documento, se muestra cómo supervisar el uso de Pub/Sub en la consola de Google Cloud con Monitoring.

  • Si deseas ver las métricas de otros recursos de Google Cloud además de las métricas de Pub/Sub, usa Monitoring.

  • De lo contrario, puedes usar los paneles de supervisión que se proporcionan en Pub/Sub. Consulta Supervisa temas y Supervisa suscripciones.

Si deseas conocer las prácticas recomendadas para usar métricas en tu ajuste de escala automático, consulta Prácticas recomendadas para usar métricas de Pub/Sub como un indicador de ajuste de escala.

Antes de comenzar

Antes de usar Monitoring, asegúrate de haber preparado lo siguiente:

  • Una cuenta de Facturación de Cloud

  • Un proyecto de Pub/Sub con la facturación habilitada

Una forma de asegurarte de tener ambos elementos es completar la guía de inicio rápido con la consola de Cloud.

Cómo ver un panel existente

Un panel te permite ver y analizar datos de diferentes fuentes en el mismo contexto. Google Cloud proporciona paneles predefinidos y personalizados. Por ejemplo, puedes ver un panel de Pub/Sub predefinido o crear un panel personalizado que muestre datos de métricas, políticas de alertas y entradas de registro relacionadas con Pub/Sub.

Para supervisar tu proyecto de Pub/Sub con Cloud Monitoring, sigue estos pasos:

  1. En la consola de Google Cloud , dirígete a la página Monitoring.

    Ir a Monitoring

  2. Selecciona el nombre de tu proyecto si aún no está seleccionado en la parte superior de la página.

  3. Haz clic en Paneles en el menú de navegación.

  4. En la página Descripción general de los paneles, crea un panel nuevo o selecciona el panel existente de Pub/Sub.

    Para buscar el panel de Pub/Sub existente, en el filtro de Todos los paneles, selecciona la propiedad Nombre y, luego, ingresa Pub/Sub.

Para obtener más información sobre cómo crear, editar y administrar un panel personalizado, consulta Administra paneles personalizados.

Cómo ver una sola métrica de Pub/Sub

Para ver una sola métrica de Pub/Sub con la Google Cloud consola, sigue estos pasos:

  1. En la consola de Google Cloud , dirígete a la página Monitoring.

    Ir a Monitoring

  2. En el panel de navegación, selecciona el Explorador de métricas.

  3. En la sección Configuración, haz clic en Seleccionar una métrica.

  4. En el filtro, ingresa Pub/Sub.

  5. En Recursos activos, selecciona Suscripción a Pub/Sub o Tema de Pub/Sub.

  6. Desglosa una métrica específica y haz clic en Aplicar.

    Se abrirá la página de una métrica específica.

Puedes obtener más información sobre el panel de supervisión en la documentación de Cloud Monitoring.

Consulta las métricas y los tipos de recursos de Pub/Sub

Accede al editor de PromQL

El Explorador de métricas es una interfaz dentro de Cloud Monitoring diseñada para explorar y visualizar tus datos de métricas. En el Explorador de métricas, puedes usar el lenguaje de consulta de Prometheus (PromQL) para consultar y analizar tus métricas de Pub/Sub.

Para acceder al editor de código y consultar las métricas de Cloud Monitoring con PromQL en el Explorador de métricas, consulta Usa el editor de código para PromQL.

Por ejemplo, puedes ingresar una consulta de PromQL para supervisar la cantidad de mensajes enviados a una suscripción específica durante un período continuo de 1 hora:

sum(
  increase({
    "__name__"="pubsub.googleapis.com/subscription/sent_message_count",
    "monitored_resource"="pubsub_subscription",
    "project_id"="your-project-id",
    "subscription_id"="your-subscription-id"
  }[1h])
)

Supervisa el uso de la cuota

Para un proyecto determinado, puedes usar el panel de IAM y cuotas de administrador para ver las cuotas y el uso actuales.

Puedes ver tu uso histórico de la cuota con las siguientes métricas:

Estas métricas usan el tipo de recurso supervisado consumer_quota. Para obtener más métricas relacionadas con las cuotas, consulta la Lista de métricas.

Por ejemplo, la siguiente consulta de PromQL crea un gráfico con la fracción de la cuota de publicador que se usa en cada región:

sum by (quota_metric, location) (
  rate({
    "__name__"="serviceruntime.googleapis.com/quota/rate/net_usage",
    "monitored_resource"="consumer_quota",
    "service"="pubsub.googleapis.com",
    "quota_metric"="pubsub.googleapis.com/regionalpublisher"
  }[${__interval}])
)
/
(max by (quota_metric, location) (
  max_over_time({
    "__name__"="serviceruntime.googleapis.com/quota/limit",
    "monitored_resource"="consumer_quota",
    "service"="pubsub.googleapis.com",
    "quota_metric"="pubsub.googleapis.com/regionalpublisher"
  }[${__interval}])
) / 60 )

Si prevés que tu uso excederá los límites de cuota predeterminados, crea políticas de alertas para todas las cuotas relevantes. Estas alertas se activan cuando tu uso alcanza una fracción del límite. Por ejemplo, la siguiente consulta de PromQL activa una política de alertas cuando cualquier cuota de Pub/Sub supera el 80% de uso:

sum by (quota_metric, location) (
  increase({
    "__name__"="serviceruntime.googleapis.com/quota/rate/net_usage",
    "monitored_resource"="consumer_quota",
    "service"="pubsub.googleapis.com"
  }[1m])
)
/
max by (quota_metric, location) (
   max_over_time({
    "__name__"="serviceruntime.googleapis.com/quota/limit",
    "monitored_resource"="consumer_quota",
    "service"="pubsub.googleapis.com"
  }[1m])
)
> 0.8

Si deseas obtener más información sobre la supervisión y las alertas personalizadas en las métricas de cuota, consulta Usa métricas de cuota.

Consulta Cuotas y límites para obtener más información sobre las cuotas.

Mantén una suscripción activa

Para mantener una suscripción en buen estado, puedes supervisar varias propiedades de la suscripción con las métricas proporcionadas por Pub/Sub. Por ejemplo, puedes supervisar el volumen de mensajes no confirmados, el vencimiento de los plazos de confirmación de mensajes, etcétera. También puedes verificar si tu suscripción está en buen estado para lograr una latencia de entrega de mensajes baja.

Consulta las siguientes secciones para obtener más detalles sobre las métricas específicas.

Supervisa la acumulación de mensajes

Para asegurarte de que tus suscriptores sigan el flujo de mensajes, crea un panel. En el panel, se pueden mostrar las siguientes métricas de la lista de tareas pendientes, agregadas por recurso, para todas tus suscripciones:

Crea políticas de alertas que se activen cuando estos valores estén fuera del rango aceptable en el contexto de tu sistema. Por ejemplo, la cantidad absoluta de mensajes no confirmados no es necesariamente significativa. Un backlog de un millón de mensajes podría ser aceptable para una suscripción de un millón de mensajes por segundo, pero inaceptable para una suscripción de un mensaje por segundo.

Usa la versión regional de las métricas en lugar de las versiones globales

Pub/Sub ofrece versiones regionales y globales de las métricas que se usan para supervisar la acumulación de suscripciones. Asegúrate de usar las versiones regionales con el sufijo by_region:

No uses las versiones globales de estas métricas si deseas que tus paneles de supervisión y políticas de alertas sean resilientes a las interrupciones de una sola región. Las versiones globales de estas métricas requieren calcular el backlog en todas las regiones conocidas por tener mensajes, lo que significa que la falta de disponibilidad en una sola región genera una brecha de datos. En cambio, las versiones by_region de las métricas calculan y registran el backlog por región. Si no se puede calcular la acumulación para una sola región, la métrica seguirá informando valores para las demás regiones.

Problemas comunes en la lista de tareas pendientes

Síntomas Problema Soluciones
oldest_unacked_message_age_by_region y num_unacked_messages_by_region están creciendo en conjunto. Los suscriptores no siguen el ritmo del volumen de mensajes
  • Agrega más subprocesos o procesos de suscriptor.
  • Agrega más máquinas o contenedores de suscriptor.
  • Busca signos de errores en tu código que impidan que este confirme la recepción de los mensajes o los procese de manera oportuna. Consulta Supervisa el vencimiento del plazo de confirmación.
Si hay una cantidad constante y pequeña de mensajes pendientes combinada con un oldest_unacked_message_age_by_region en constante aumento, es posible que haya algunos mensajes que no se puedan procesar. Los mensajes están atascados.
  • Examina los registros de tu aplicación para comprender si algunos mensajes provocan fallas en tu código. Es poco probable, pero posible, que los mensajes infractores estén atascados en Pub/Sub en lugar de en tu cliente. Crea un caso de asistencia después de que te asegures de que tu código procesa correctamente cada mensaje.
  • Si algunos mensajes provocan que tu código falle, considera reenviarlos a un tema de mensajes no entregados.
El oldest_unacked_message_age_by_region supera la duración de retención de mensajes de la suscripción. Existe una pérdida permanente de datos.
  • Configura una alerta que se active antes de que venza el período de retención de mensajes.

Supervisa el estado de la latencia de entrega

En Pub/Sub, la latencia de entrega es el tiempo que tarda un mensaje publicado en llegar a un suscriptor. Si la cantidad de mensajes pendientes aumenta, puedes usar la puntuación de estado de la latencia de entrega (subscription/delivery_latency_health_score) para verificar qué factores contribuyen a un aumento de la latencia.

Esta métrica mide el estado de una sola suscripción en un período continuo de 10 minutos. La métrica proporciona estadísticas sobre los siguientes criterios, que son necesarios para que una suscripción logre una latencia baja constante:

  • Solicitudes de búsqueda insignificantes.

  • Mensajes con confirmación negativa (nacked) insignificantes.

  • Plazos de confirmación de mensajes vencidos insignificantes.

  • Latencia de confirmación constante de menos de 30 segundos

  • Utilización baja constante, lo que significa que la suscripción tiene capacidad adecuada de forma constante para procesar mensajes nuevos.

La métrica Puntuación del estado de la latencia de entrega informa una puntuación de 0 o 1 para cada uno de los criterios especificados. Una puntuación de 1 indica un buen estado y una puntuación de 0 indica un mal estado.

  • Solicitudes de búsqueda: Si la suscripción tuvo solicitudes de búsqueda en los últimos 10 minutos, la puntuación se establece en 0. Buscar una suscripción puede hacer que se vuelvan a reproducir mensajes antiguos mucho después de que se publicaron por primera vez, lo que les da una mayor latencia de entrega.

  • Mensajes con confirmación negativa (nack): Si la suscripción tuvo alguna solicitud de confirmación negativa (nack) en los últimos 10 minutos, la puntuación se establece en 0. Una confirmación negativa hace que se vuelva a enviar un mensaje con una latencia de entrega mayor.

  • Plazos de confirmación vencidos: Si la suscripción tuvo plazos de confirmación vencidos en los últimos 10 minutos, la puntuación se establece en 0. Los mensajes cuyo plazo de confirmación venció se vuelven a entregar con una latencia de entrega mayor.

  • Latencias de confirmación: Si el percentil 99.9 de todas las latencias de confirmación de los últimos 10 minutos alguna vez fue superior a 30 segundos, la puntuación se establece en 0. Una latencia de confirmación alta es un signo de que un cliente suscriptor tarda demasiado en procesar un mensaje. Esta puntuación podría implicar un error o algunas restricciones de recursos en el cliente del suscriptor.

  • Uso bajo: El uso se calcula de manera diferente para cada tipo de suscripción.

    • StreamingPull: Si no tienes suficientes transmisiones abiertas, la puntuación se establece en 0. Abre más transmisiones para asegurarte de tener la capacidad adecuada para los mensajes nuevos.

    • Envío: Si tienes demasiados mensajes pendientes para tu extremo de envío, la puntuación se establece en 0. Agrega más capacidad a tu extremo de envío para que tengas capacidad para mensajes nuevos.

    • Pull: Si no tienes suficientes solicitudes de extracción pendientes, la puntuación se establece en 0. Abre más solicitudes de extracción simultáneas para asegurarte de que estás listo para recibir mensajes nuevos.

Para ver la métrica, en el Explorador de métricas, selecciona la métrica Puntuación de estado de la latencia de entrega para el tipo de recurso de suscripción de Pub/Sub. Agrega un filtro para seleccionar solo una suscripción a la vez. Selecciona el gráfico de área apilada y apunta a un momento específico para verificar las puntuaciones de los criterios de la suscripción en ese momento.

A continuación, se muestra una captura de pantalla de la métrica trazada para un período de una hora con un gráfico de áreas apiladas. La puntuación de salud combinada aumenta a 5 a las 4:15 a.m., con una puntuación de 1 para cada criterio. Más tarde, la puntuación combinada disminuye a 4 a las 4:20 a.m., cuando la puntuación de utilización cae a 0.

Captura de pantalla de la métrica de latencia de entrega

PromQL proporciona una interfaz expresiva basada en texto para los datos de series temporales de Cloud Monitoring. La siguiente consulta de PromQL crea un gráfico para medir la puntuación del estado de la latencia de entrega de una suscripción.

sum_over_time(
  {
    "__name__"="pubsub.googleapis.com/subscription/delivery_latency_health_score",
    "monitored_resource"="pubsub_subscription",
    "subscription_id"="$SUBSCRIPTION"
  }[${__interval}]
)

Supervisa el vencimiento del plazo de confirmación

Para reducir la latencia de entrega de mensajes, Pub/Sub permite que los clientes suscriptores tengan una cantidad limitada de tiempo para confirmar (ack) un mensaje determinado. Este período se conoce como fecha límite de ACK. Si tus suscriptores tardan demasiado en confirmar la recepción de los mensajes, estos se volverán a enviar, lo que hará que los suscriptores vean mensajes duplicados. Esta reentrega puede ocurrir por varios motivos:

  • Tus suscriptores no cuentan con el aprovisionamiento suficiente (necesitas más subprocesos o máquinas).

  • Cada mensaje tarda más en procesarse que la fecha límite de confirmación de recepción del mensaje. En general, las bibliotecas cliente de Cloud extienden el plazo para los mensajes individuales hasta un máximo configurable. Sin embargo, un plazo de extensión máxima también está vigente para las bibliotecas.

  • Algunos mensajes generan fallas en el cliente todo el tiempo.

Puedes medir la tasa a la que los suscriptores no cumplen con la fecha límite de ACK. La métrica específica depende del tipo de suscripción:

Si la frecuencia con la que no se cumplen los plazos de confirmación es demasiado alta, se pueden generar ineficiencias costosas en tu sistema. Se te cobra por cada entrega nueva y por intento de procesar cada mensaje repetidas veces. Por el contrario, una tasa de vencimiento baja (por ejemplo, del 0.1% al 1%) podría ser saludable.

Supervisa la capacidad de procesamiento de mensajes

Los suscriptores de extracción y StreamingPull pueden recibir lotes de mensajes en cada respuesta de extracción; las suscripciones push reciben un solo mensaje en cada solicitud push. Puedes supervisar la capacidad de procesamiento de los mensajes por lotes que procesan tus suscriptores con estas métricas:

Puedes supervisar la capacidad de procesamiento de mensajes individuales o no agrupados que procesan tus suscriptores con la métrica subscription/sent_message_count filtrada por la etiqueta delivery_type.

La siguiente consulta de PromQL te proporciona un gráfico de series temporales que muestra la cantidad total de mensajes enviados a una suscripción específica de Pub/Sub durante un período continuo de 10 minutos. Reemplaza los valores de marcador de posición de $PROJECT_NAME y $SUBSCRIPTION_NAME por los identificadores reales de tu proyecto y tema.

sum(
  increase({
    "__name__"="pubsub.googleapis.com/subscription/sent_message_count",
    "monitored_resource"="pubsub_subscription",
    "project_id"="$PROJECT_NAME",
    "subscription_id"="$SUBSCRIPTION_NAME"
  }[10m])
)

Supervisa las suscripciones a notificaciones push

En el caso de las suscripciones push, supervisa estas métricas:

  • subscription/push_request_count

    Agrupa la métrica por response_code y subscription_id. Dado que las suscripciones push de Pub/Sub usan códigos de respuesta como confirmaciones implícitas de mensajes, es importante supervisar los códigos de respuesta de las solicitudes push. Debido a que las suscripciones de envío se interrumpen de manera exponencial cuando se les presentan tiempos de espera o errores, tu conjunto de tareas pendientes puede crecer con rapidez en función de cómo responde tu extremo.

    Considera establecer una alerta para las tasas de errores altas, ya que estas tasas generan una entrega lenta y una creciente acumulación de trabajo pendiente. Puedes crear una métrica filtrada por clase de respuesta. Sin embargo, es probable que los recuentos de solicitudes push sean más útiles como herramienta para investigar el tamaño y la antigüedad crecientes del trabajo pendiente.

  • subscription/num_outstanding_messages

    Por lo general, Pub/Sub limita la cantidad de mensajes pendientes. En la mayoría de los casos, intenta tener menos de 1,000 mensajes pendientes. Después de que la capacidad de procesamiento alcanza una tasa del orden de 10,000 mensajes por segundo, el servicio ajusta el límite para la cantidad de mensajes pendientes. Esta limitación se realiza en incrementos de 1,000. No se ofrecen garantías específicas más allá del valor máximo, por lo que 1,000 mensajes pendientes es una buena guía.

  • subscription/push_request_latencies

    Esta métrica te ayuda a comprender la distribución de la latencia de respuesta del endpoint de envío. Debido al límite en la cantidad de mensajes pendientes, la latencia del extremo afecta la capacidad de procesamiento de la suscripción. Si se necesitan 100 milisegundos para procesar cada mensaje, tu límite de capacidad de procesamiento es de 10 mensajes por segundo.

Para acceder a límites más altos de mensajes pendientes, los suscriptores push deben confirmar la recepción de más del 99% de los mensajes que reciben.

Puedes calcular la fracción de mensajes que confirman los suscriptores con PromQL. La siguiente consulta de PromQL crea un gráfico con la fracción de mensajes que los suscriptores confirman en una suscripción:

rate({
  "__name__"="pubsub.googleapis.com/subscription/push_request_count",
  "monitored_resource"="pubsub_subscription",
  "subscription_id"="$SUBSCRIPTION",
  "response_class"="ack"
}[${__interval}])
/
rate({
  "__name__"="pubsub.googleapis.com/subscription/push_request_count",
  "monitored_resource"="pubsub_subscription",
  "subscription_id"="$SUBSCRIPTION"
}[${__interval}])

Supervisa las suscripciones con filtros

Si configuras un filtro en una suscripción, Pub/Sub confirma automáticamente los mensajes que no coinciden con el filtro. Puedes supervisar esta confirmación automática.

Las métricas de backlog solo incluyen los mensajes que coinciden con el filtro.

Para supervisar la tasa de mensajes con confirmación automática que no coinciden con el filtro, usa la métrica subscription/ack_message_count con la etiqueta delivery_type establecida en filter.

Para supervisar la capacidad de procesamiento y el costo de los mensajes con confirmación automática que no coinciden con el filtro, usa la métrica subscription/byte_cost con la etiqueta operation_type establecida en filter_drop. Para obtener más información sobre las tarifas de estos mensajes, consulta la página de precios de Pub/Sub.

Supervisa las suscripciones con SMT

Si tu suscripción contiene un SMT que filtra mensajes, las métricas de backlog incluyen los mensajes filtrados hasta que el SMT se ejecute en ellos. Esto significa que la cantidad de tareas pendientes puede parecer mayor y la antigüedad del mensaje no confirmado más antiguo puede parecer mayor de lo que se entregará a tu suscriptor. Esto es especialmente importante si utilizas estas métricas para ajustar automáticamente la escala de los suscriptores.

Supervisa los mensajes reenviados que no se pueden entregar

Para supervisar los mensajes que no se pueden entregar y que Pub/Sub reenvía a un tema de mensajes no entregados, usa la métrica subscription/dead_letter_message_count. Esta métrica muestra la cantidad de mensajes que no se pueden entregar que Pub/Sub reenvía desde una suscripción.

Para verificar que Pub/Sub reenvía los mensajes que no se pueden entregar, puedes comparar la métrica subscription/dead_letter_message_count con la métrica topic/send_request_count. Realiza la comparación para el tema de mensajes no entregados al que Pub/Sub reenvía estos mensajes.

También puedes adjuntar una suscripción al tema de mensajes no entregados y, luego, supervisar los mensajes reenviados que no se pueden entregar en esta suscripción con las siguientes métricas:

Mantener un publicador saludable

El objetivo principal de un publicador es conservar los datos de los mensajes con rapidez. Supervisa este rendimiento con topic/send_request_count, agrupado por response_code. Esta métrica te indica si Pub/Sub está en buen estado y si acepta solicitudes.

Una tasa de errores reintentables en segundo plano (inferior al 1%) no es motivo de preocupación, ya que la mayoría de las bibliotecas cliente de Cloud reintentan los errores de mensajes. Investiga las tasas de error superiores al 1%. Como tu aplicación administra los códigos que no se pueden reintentar (en lugar de la biblioteca cliente), debes examinar los códigos de respuesta. Si tu aplicación de publicador no cuenta con una forma adecuada de indicar si un publicador está en mal estado, considera establecer una alerta en la métrica topic/send_request_count.

También es importante hacer un seguimiento de las solicitudes de publicación fallidas en tu cliente de publicación. Si bien, por lo general, las bibliotecas cliente vuelven a intentar realizar las solicitudes con errores, no garantizan su publicación. Consulta Publicación de mensajes para conocer las formas de detectar fallas permanentes en la publicación cuando se usan las bibliotecas cliente de Cloud. Como mínimo, tu aplicación del editor debe registrar errores de publicación permanentes. Si registras esos errores en Cloud Logging, puedes configurar una métrica basada en registros con una política de alertas.

Supervisa la capacidad de procesamiento de mensajes

Es posible que los publicadores envíen mensajes en lotes. Puedes supervisar la capacidad de procesamiento de los mensajes enviados por tus publicadores con estas métricas:

Para obtener un recuento preciso de los mensajes publicados, usa la siguiente consulta en PromQL. Esta consulta de PromQL recupera de manera eficaz el recuento de mensajes individuales publicados en un tema de Pub/Sub específico dentro de intervalos de tiempo definidos. Reemplaza los valores de marcador de posición de $PROJECT_NAME y $TOPIC_ID por los identificadores reales de tu proyecto y tema.

sum by (topic_id) (
  increase({
    "__name__"="pubsub.googleapis.com/topic/message_sizes_count",
    "monitored_resource"="pubsub_topic",
    "project_id"="$PROJECT_NAME",
    "topic_id"="$TOPIC_ID"
  }[${__interval}])
)

Para una mejor visualización, especialmente en el caso de las métricas diarias, considera lo siguiente:

  • Consulta tus datos durante un período más largo para proporcionar más contexto sobre las tendencias diarias.

  • Usa gráficos de barras para representar los recuentos de mensajes diarios.

¿Qué sigue?