Puedes usar la Google Cloud consola o la API Cloud Monitoring para monitorizar Pub/Sub.
En este documento se explica cómo monitorizar el uso de Pub/Sub en la consola de Google Cloud con Monitoring.
Si quieres ver métricas de otros recursos además de las de Pub/Sub, usa Monitoring. Google Cloud
De lo contrario, puedes usar los paneles de control de monitorización que se proporcionan en Pub/Sub. Consulta Monitorizar temas y Monitorizar suscripciones.
Para consultar las prácticas recomendadas sobre el uso de métricas en el escalado automático, consulte Prácticas recomendadas para usar métricas de Pub/Sub como señal de escalado.
Antes de empezar
Antes de usar Monitoring, asegúrate de que has 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 que tienes ambos es completar la guía de inicio rápido sobre cómo usar la consola de Cloud.
Ver un panel de control
Los paneles de control le permiten ver y analizar datos de diferentes fuentes en el mismo contexto. Google Cloud ofrece paneles de control predefinidos y personalizados. Por ejemplo, puede ver un panel de Pub/Sub predefinido o crear uno personalizado que muestre datos de métricas, políticas de alertas y entradas de registro relacionadas con Pub/Sub.
Para monitorizar tu proyecto de Pub/Sub con Cloud Monitoring, sigue estos pasos:
En la Google Cloud consola, ve a la página Monitorización.
Selecciona el nombre de tu proyecto si aún no lo has hecho en la parte superior de la página.
En el menú de navegación, haga clic en Paneles de control.
En la página Resumen de los paneles de control, cree un panel de control o seleccione el panel Pub/Sub.
Para buscar el panel de control Pub/Sub, en el filtro de Todos los paneles de control, selecciona la propiedad Nombre e introduce
Pub/Sub
.
Para obtener más información sobre cómo crear, editar y gestionar un panel de control personalizado, consulta el artículo Gestionar paneles de control personalizados.
Ver una sola métrica de Pub/Sub
Para ver una sola métrica de Pub/Sub con la consola, sigue estos pasos: Google Cloud
En la Google Cloud consola, ve a la página Monitorización.
En el panel de navegación, selecciona Explorador de métricas.
En la sección Configuración, haga clic en Seleccionar una métrica.
En el filtro, introduce
Pub/Sub
.En Recursos activos, selecciona Suscripción a Pub/Sub o Tema de Pub/Sub.
Desglosa la información de una métrica específica y haz clic en Aplicar.
Se abrirá la página de una métrica específica.
Para obtener más información sobre el panel de control de monitorización, consulta la documentación de Cloud Monitoring.
Ver métricas y tipos de recursos de Pub/Sub
Para ver qué métricas envía Pub/Sub a Cloud Monitoring, consulta la lista de métricas de Pub/Sub en la documentación de Cloud Monitoring.
Para ver los detalles de los tipos de recursos supervisados
pubsub_topic
,pubsub_subscription
opubsub_snapshot
, consulta el artículo Tipos de recursos supervisados en la documentación de Cloud Monitoring.
Acceder al editor de MQL
El explorador de métricas es una interfaz de Cloud Monitoring diseñada para explorar y visualizar los datos de métricas. En Explorador de métricas, puedes usar el lenguaje de consulta de Monitoring(MQL) para consultar y analizar tus métricas de Pub/Sub.
Para acceder al editor de MQL cuando uses el explorador de métricas, consulta Acceder al editor de código.
Crear una consulta de MQL
Estas son algunas reglas básicas para crear una consulta MQL para métricas de Pub/Sub.
Empieza por
fetch pubsub_topic
ofetch pubsub_subscription
. Esta línea de código indica al editor qué tipo de recurso de Pub/Sub quieres consultar, como temas o suscripciones.Selecciona la métrica. Use
| metric 'metric_name'
para especificar la métrica que quiera analizar. Un ejemplo de métrica de Pub/Sub espubsub.googleapis.com/subscription/ack_message_count
(para mensajes confirmados).Usa
| filter
para acotar los datos. Entre los filtros habituales se incluyen los siguientes:resource.project_id == 'your-project-id'
resource.topic_id == 'your-topic-id'
resource.subscription_id == 'your-subscription-id'
Usa
| align
y| group_by
para agregar tus datos en intervalos y agrupaciones significativos.Refina tus datos con otras cláusulas. MQL ofrece otras cláusulas, como
| every
(para definir la frecuencia de ejecución de las consultas) y| within
(para especificar un intervalo de tiempo), entre otras.
Aquí tienes un ejemplo de consulta para monitorizar el recuento por horas de los mensajes enviados a una suscripción específica:
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/sent_message_count'
| filter resource.project_id == 'your-project-id'
&& resource.subscription_id == 'your-subscription-id'
| align delta(1h)
| every 1h
| group_by [], [value_sent_message_count_aggregate: aggregate(value.sent_message_count)]
Monitorizar el uso de la cuota
En un proyecto determinado, puedes usar el panel de cuotas de gestión de identidades y accesos (IAM) y administración para ver las cuotas actuales y su uso.
Puede consultar su historial de uso de cuotas con las siguientes métricas:
Estas métricas usan el tipo de recurso monitorizado consumer_quota
. Para ver más métricas relacionadas con las cuotas, consulta la lista de métricas.
Por ejemplo, la siguiente consulta de MQL crea un gráfico con la fracción de cuota de editor que se está usando en cada región:
fetch consumer_quota
| filter resource.service == 'pubsub.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/rate/net_usage
| filter metric.quota_metric == 'pubsub.googleapis.com/regionalpublisher'
| align delta_gauge(1m)
| group_by [metric.quota_metric, resource.location],
sum(value.net_usage)
; metric serviceruntime.googleapis.com/quota/limit
| filter metric.quota_metric == 'pubsub.googleapis.com/regionalpublisher'
| group_by [metric.quota_metric, resource.location],
sliding(1m), max(val()) }
| ratio
Si prevés que tu uso superará los límites de cuota predeterminados, crea políticas de alertas para todas las cuotas pertinentes. Estas alertas se activan cuando tu uso alcanza una fracción del límite. Por ejemplo, la siguiente consulta de Monitoring Query Language activa una política de alertas cuando se supera el 80% de uso de cualquier cuota de Pub/Sub:
fetch consumer_quota
| filter resource.service == 'pubsub.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/rate/net_usage
| align delta_gauge(1m)
| group_by [metric.quota_metric, resource.location],
sum(value.net_usage)
; metric serviceruntime.googleapis.com/quota/limit
| group_by [metric.quota_metric, resource.location],
sliding(1m), max(val()) }
| ratio
| every 1m
| condition gt(val(), 0.8 '1')
Para obtener más información sobre cómo monitorizar y recibir alertas de forma personalizada sobre métricas de cuotas, consulta el artículo Usar métricas de cuotas.
Consulta Cuotas y límites para obtener más información sobre las cuotas.
Mantener una suscripción activa
Para mantener una suscripción en buen estado, puede monitorizar varias propiedades de la suscripción mediante las métricas proporcionadas por Pub/Sub. Por ejemplo, puedes monitorizar el volumen de mensajes sin confirmar, el vencimiento de los plazos de confirmación de mensajes, etc. También puedes comprobar si tu suscripción es lo suficientemente buena para conseguir una latencia de entrega de mensajes baja.
Consulta las siguientes secciones para obtener más información sobre las métricas específicas.
Monitorizar el backlog de mensajes
Para asegurarte de que tus suscriptores están al día de los mensajes, crea un panel de control. En el panel de control se pueden mostrar las siguientes métricas de la cartera de pedidos, agregadas por recurso, de todas sus suscripciones:
Mensajes no confirmados (
subscription/num_unacked_messages_by_region
): para ver el número de mensajes no confirmados.Antigüedad del mensaje no confirmado más antiguo (
subscription/oldest_unacked_message_age_by_region
) para ver la antigüedad del mensaje no confirmado más antiguo del registro de la suscripción.Puntuación de estado de la latencia de entrega (
subscription/delivery_latency_health_score
): comprueba el estado general de la suscripción en relación con la latencia de entrega. Para obtener más información sobre esta métrica, consulta la sección correspondiente de este documento.
Crea políticas de alertas que se activen cuando estos valores estén fuera del intervalo aceptable en el contexto de tu sistema. Por ejemplo, el número absoluto de mensajes no confirmados no tiene por qué ser significativo. Un backlog de un millón de mensajes puede ser aceptable para una suscripción de un millón de mensajes por segundo, pero no para una suscripción de un mensaje por segundo.
Problemas habituales con la cartera de pedidos
Síntomas | Problema | Soluciones |
---|---|---|
Tanto oldest_unacked_message_age_by_region como num_unacked_messages_by_region están creciendo al mismo ritmo. |
Los suscriptores no pueden seguir el ritmo del volumen de mensajes |
|
Si el tamaño de la cartera es pequeño y constante, pero el oldest_unacked_message_age_by_region aumenta de forma constante, es posible que haya algunos mensajes que no se puedan procesar. |
Mensajes bloqueados |
|
El oldest_unacked_message_age_by_region supera el periodo de retención de mensajes de la suscripción . |
Pérdida de datos permanente |
|
Monitorizar el estado de la latencia de entrega
En Pub/Sub, la latencia de entrega es el tiempo que tarda en entregarse un mensaje publicado a un suscriptor.
Si la acumulación de mensajes aumenta, puede usar la puntuación de estado de latencia de entrega (subscription/delivery_latency_health_score
) para comprobar qué factores contribuyen a que aumente la latencia.
Esta métrica mide el estado de una sola suscripción en un periodo de 10 minutos. La métrica proporciona información valiosa sobre los siguientes criterios, que son necesarios para que una suscripción consiga una latencia baja constante:
Solicitudes de búsqueda insignificantes.
Mensajes con confirmación negativa insignificante.
Plazos de confirmación de mensajes caducados insignificantes.
Latencia de confirmación constante inferior a 30 segundos.
Una utilización baja y constante, lo que significa que la suscripción tiene capacidad suficiente para procesar nuevos mensajes.
La métrica Puntuación de estado de la latencia de entrega indica una puntuación de 0 o 1 para cada uno de los criterios especificados. Una puntuación de 1 indica un estado correcto y una puntuación de 0 indica un estado incorrecto.
Solicitudes de búsqueda: si la suscripción ha tenido alguna solicitud de búsqueda en los últimos 10 minutos, la puntuación se establece en 0. Buscar una suscripción puede provocar que los mensajes antiguos se reproduzcan mucho tiempo después de que se hayan publicado por primera vez, lo que aumenta la latencia de entrega.
Mensajes con confirmación negativa (nack): si la suscripción ha tenido alguna solicitud de confirmación negativa (nack) en los últimos 10 minutos, la puntuación se establece en 0. Una confirmación negativa provoca que un mensaje se vuelva a enviar con una latencia de entrega mayor.
Plazos de confirmación caducados: si la suscripción ha tenido algún plazo de confirmación caducado en los últimos 10 minutos, la puntuación se establece en 0. Los mensajes cuyo plazo de confirmación ha caducado se vuelven a enviar 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 ha sido superior a 30 segundos, la puntuación se establece en 0. Una latencia de confirmación alta indica que un cliente de suscriptor tarda demasiado en procesar un mensaje. Esta puntuación podría implicar un error o algunas restricciones de recursos en el lado del cliente del suscriptor.
Bajo uso: el uso se calcula de forma diferente para cada tipo de suscripción.
StreamingPull si no tienes suficientes streams abiertos, la puntuación se establece en 0. Abre más flujos para asegurarte de que tienes capacidad suficiente para los mensajes nuevos.
Inserción: si tienes demasiados mensajes pendientes en tu endpoint de inserción, la puntuación se establece en 0. Añade más capacidad a tu endpoint de envío para que tengas capacidad para nuevos mensajes.
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 puedes recibir mensajes nuevos.
Para ver la métrica, en Explorador de métricas, selecciona la métrica Puntuación de estado de latencia de entrega del tipo de recurso de suscripción de Pub/Sub. Añade un filtro para seleccionar solo una suscripción a la vez. Selecciona el gráfico de áreas apiladas y apunta a un momento concreto para consultar 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 representada durante un periodo de una hora mediante un gráfico de áreas apiladas. La puntuación de salud combinada llega a 5 a las 4:15, con una puntuación de 1 en cada criterio. Más adelante, la puntuación combinada disminuye a 4 a las 4:20, cuando la puntuación de utilización baja a 0.
Monitoring Query Language proporciona una interfaz expresiva basada en texto para los datos de series temporales de Cloud Monitoring. La siguiente consulta de MQL crea un gráfico para medir la puntuación de estado de la latencia de entrega de una suscripción.
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/delivery_latency_health_score'
| filter (resource.subscription_id == '$SUBSCRIPTION')
| group_by 1m,
[value_delivery_latency_health_score_sum:
sum(if(value.delivery_latency_health_score, 1, 0))]
| every 1m
Monitorizar la caducidad del plazo de confirmación
Para reducir la latencia de entrega de mensajes, Pub/Sub permite a los clientes suscriptores un tiempo limitado para confirmar la recepción de un mensaje determinado. Este periodo se conoce como plazo de confirmación. Si tus suscriptores tardan demasiado en confirmar los mensajes, estos se volverán a enviar, lo que provocará que los suscriptores vean mensajes duplicados. Esta nueva entrega puede deberse a varios motivos:
Tus suscriptores no tienen suficientes recursos (necesitas más hilos o máquinas).
El tiempo necesario para procesar cada mensaje es superior al plazo de confirmación del mensaje. Las bibliotecas de cliente de Cloud suelen ampliar el plazo de los mensajes individuales hasta un máximo configurable. Sin embargo, también se aplica un plazo máximo de prórroga a las bibliotecas.
Algunos mensajes provocan que el cliente falle constantemente.
Puedes medir la frecuencia con la que los suscriptores no cumplen el plazo de confirmación. La métrica específica depende del tipo de suscripción:
Pull y StreamingPull:
subscription/expired_ack_deadlines_count
Inserción:
subscription/push_request_count
filtrado porresponse_code != "success"
Si las tasas de vencimiento del plazo de confirmación son excesivas, se pueden producir ineficiencias costosas en tu sistema. Pagas por cada reenvío y por intentar procesar cada mensaje repetidamente. Por el contrario, una tasa de caducidad baja (por ejemplo, del 0,1 al 1%) podría ser adecuada.
Monitorizar el rendimiento de los mensajes
Los suscriptores de extracción y extracción por streaming pueden recibir lotes de mensajes en cada respuesta de extracción, mientras que las suscripciones push reciben un solo mensaje en cada solicitud push. Puedes monitorizar el rendimiento de los mensajes por lotes que procesan tus suscriptores con estas métricas:
Extracción:
subscription/pull_request_count
(ten en cuenta que esta métrica también puede incluir solicitudes de extracción que no hayan devuelto ningún mensaje)StreamingPull:
subscription/streaming_pull_response_count
Puedes monitorizar el rendimiento de los mensajes individuales o sin agrupar que procesan tus suscriptores con la métrica subscription/sent_message_count
filtrada por la etiqueta delivery_type
.
La siguiente consulta de MQL muestra un gráfico de serie temporal con el número total de mensajes enviados a una suscripción de Pub/Sub específica cada 10 minutos. Sustituye los valores de los marcadores de posición $PROJECT_NAME
y $SUBSCRIPTION_NAME
por los identificadores del proyecto y del tema.
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/sent_message_count'
| filter resource.project_id == '$PROJECT_NAME'
&& resource.subscription_id == '$SUBSCRIPTION_NAME'
| align delta(10m)
| every 10m
| group_by [],
[value_sent_message_count_aggregate: aggregate(value.sent_message_count)]
Monitorizar las suscripciones push
En el caso de las suscripciones push, monitoriza estas métricas:
subscription/push_request_count
Agrupa la métrica por
response_code
ysubcription_id
. Como las suscripciones push de Pub/Sub usan códigos de respuesta como confirmaciones implícitas de mensajes, es importante monitorizar los códigos de respuesta de las solicitudes push. Como las suscripciones push se retiran exponencialmente cuando se producen errores o se agota el tiempo de espera, tu lista de pendientes puede crecer rápidamente en función de cómo responda tu endpoint.Te recomendamos que configures una alerta para las frecuencias de errores altas, ya que provocan que la entrega sea lenta y que se acumulen pedidos. 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 de la cartera de pedidos.
subscription/num_outstanding_messages
Por lo general, Pub/Sub limita el número de mensajes pendientes. En la mayoría de los casos,intenta que haya menos de 1000 mensajes pendientes. Una vez que el rendimiento alcanza una tasa del orden de 10.000 mensajes por segundo, el servicio ajusta el límite del número de mensajes pendientes. Esta limitación se aplica en incrementos de 1000. No se ofrecen garantías específicas más allá del valor máximo, por lo que 1000 mensajes pendientes es una buena referencia.
subscription/push_request_latencies
Esta métrica te ayuda a comprender la distribución de la latencia de respuesta del endpoint push. Debido al límite en el número de mensajes pendientes, la latencia del endpoint afecta al rendimiento de la suscripción. Si se tarda 100 milisegundos en procesar cada mensaje, es probable que tu límite de rendimiento sea de 10 mensajes por segundo.
Para acceder a límites de mensajes pendientes más altos, los suscriptores de notificaciones push deben confirmar más del 99% de los mensajes que reciban.
Puedes calcular la fracción de mensajes que confirman los suscriptores mediante el lenguaje de consulta de monitorización. La siguiente consulta de MQL crea un gráfico con la fracción de mensajes que los suscriptores confirman en una suscripción:
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/push_request_count'
| filter
(resource.subscription_id == '$SUBSCRIPTION')
| filter_ratio_by [], metric.response_class == 'ack'
| every 1m
Monitorizar 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 monitorizar esta confirmación automática.
Las métricas de la cartera de pedidos solo incluyen los mensajes que coinciden con el filtro.
Para monitorizar la tasa de mensajes confirmados automáticamente que no coinciden con el filtro, usa la métrica
subscription/ack_message_count
con la etiqueta delivery_type
definida como filter
.
Para monitorizar el rendimiento y el coste de los mensajes confirmados automáticamente que no coinciden con el filtro, usa la métrica subscription/byte_cost
con la etiqueta operation_type
definida como filter_drop
. Para obtener más información sobre las tarifas de estos mensajes, consulta la página de precios de Pub/Sub.
Monitorizar suscripciones con SMTs
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 cartera de pedidos puede parecer más grande y la antigüedad del mensaje más antiguo sin confirmar puede parecer mayor de lo que se enviará a tu suscriptor. Es especialmente importante tenerlo en cuenta si usas estas métricas para escalar automáticamente los suscriptores.
Monitorizar los mensajes no entregados reenviados
Para monitorizar los mensajes que no se pueden entregar y que Pub/Sub reenvía a un tema de mensajes fallidos, usa la métrica subscription/dead_letter_message_count
. Esta métrica muestra el número 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, puede comparar la métrica subscription/dead_letter_message_count
con la métrica topic/send_request_count
. Compara el tema de mensajes fallidos al que Pub/Sub reenvía estos mensajes.
También puede adjuntar una suscripción al tema de mensajes fallidos y, a continuación, monitorizar los mensajes no entregados reenviados en esta suscripción mediante las siguientes métricas:
subscription/num_unacked_messages_by_region
- El número de mensajes reenviados que se han acumulado en la suscripción
subscription/oldest_unacked_message_age_by_region
- la antigüedad del mensaje reenviado más antiguo de la suscripción
Mantener un editor en buen estado
El objetivo principal de un editor es conservar los datos de los mensajes rápidamente. Monitoriza este rendimiento con topic/send_request_count
agrupado por response_code
. Esta métrica te indica si Pub/Sub está en buen estado y 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 de cliente de Cloud vuelven a intentar enviar los mensajes que han fallado. Investigue las tasas de error superiores al 1%.
Como tu aplicación gestiona los códigos que no se pueden volver a intentar (en lugar de la biblioteca de cliente), debes examinar los códigos de respuesta. Si tu aplicación de editor no tiene una forma adecuada de indicar un estado incorrecto, considera la posibilidad de definir una alerta en la métrica topic/send_request_count
.
Es igual de importante registrar las solicitudes de publicación fallidas en tu cliente de publicación. Aunque las bibliotecas de cliente suelen reintentar las solicitudes fallidas, no garantizan la publicación. Consulta la sección Publicar mensajes para ver cómo detectar errores de publicación permanentes al usar las bibliotecas de cliente de Cloud. Como mínimo, tu aplicación de 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.
Monitorizar el rendimiento de los mensajes
Los editores pueden enviar mensajes en lotes. Puede monitorizar el volumen de mensajes enviados por sus editores con estas métricas:
topic/send_request_count
: el volumen de mensajes por lotes que envían los editores.Un recuento de
topic/message_sizes
: el volumen de mensajes individuales (sin agrupar) que envían los editores.
Para obtener un recuento preciso de los mensajes publicados, usa la siguiente consulta de MQL. Esta consulta de MQL obtiene el recuento de mensajes individuales publicados en un tema de Pub/Sub específico en intervalos de tiempo definidos.
Sustituye los valores de los marcadores de posición $PROJECT_NAME
y $TOPIC_ID
por los identificadores del proyecto y del tema.
fetch pubsub_topic
| metric 'pubsub.googleapis.com/topic/message_sizes'
| filter resource.project_id == '$PROJECT_NAME'
&& resource.topic_id == '$TOPIC_ID'
| align delta(60m)
| every 60m
| group_by [resource.topic_id],
[value_message_sizes_sum: count(value.message_sizes)]
Para que la visualización sea más cómoda, sobre todo en el caso de las métricas diarias, ten en cuenta lo siguiente:
Consulta tus datos durante un periodo más largo para obtener más contexto sobre las tendencias diarias.
Usa gráficos de barras para representar el número de mensajes diarios.
Siguientes pasos
Para crear una alerta de una métrica específica, consulta Gestionar políticas de alertas basadas en métricas.
Para obtener más información sobre cómo usar MQL para crear gráficos de monitorización, consulta el artículo Usar el editor de consultas.
Para obtener más información sobre los recursos de la API Monitoring, como las métricas, los recursos monitorizados, los grupos de recursos monitorizados y las políticas de alertas, consulta Recursos de la API.