web-dev-qa-db-fra.com

Google PubSub - Compter les messages dans le sujet

J'ai examiné la documentation de PubSub de Google et j'ai également essayé de rechercher dans Google Cloud Monitoring, mais je n'ai trouvé aucun moyen de déterminer la taille de la file d'attente dans mes sujets.

Étant donné que je prévois d'utiliser PubSub pour l'analyse, il est important pour moi de surveiller le nombre de files d'attente, afin de pouvoir augmenter/réduire le nombre d'abonnés.

Qu'est-ce que je rate?

18
Gil Adirim

La métrique que vous souhaitez consulter est "messages non livrés". Vous devriez pouvoir configurer des alertes ou des graphiques qui surveillent cette statistique dans Google Cloud Monitoring sous le type de ressource "Pub/Sub Subscription". Le nombre de messages qui n'ont pas encore été reconnus par les abonnés, c'est-à-dire la taille de la file d'attente, est une métrique par abonnement par opposition à une métrique par sujet. Pour plus d'informations sur la métrique, voir pubsub.googleapis.com/subscription/num_undelivered_messages dans GCP Metrics List (et autres pour toutes les métriques Pub/Sub disponibles).

20
Kamal Aboul-Hosn

La réponse à votre question est "non", il n'y a pas de fonctionnalité pour PubSub qui affiche ces chiffres. La façon dont vous devez le faire est via la surveillance des événements de journal à l'aide de Stackdriver (il m'a fallu un certain temps pour le découvrir également).

La réponse familière à cela est la suivante, étape par étape:

  1. Accédez à partir de la console d'administration GCloud pour: Monitoring

navigate from gcloud admin console

  1. Cela ouvre une nouvelle fenêtre avec une console Stackdriver séparée
  2. Naviguez dans Stackdriver: Dashboards> Create Dashboard

create new dashboard within stackdriver

  1. Clique le Add Chart bouton en haut à droite de l'écran du tableau de bord

enter image description here

  1. Dans la zone de saisie, saisissez num_undelivered_messages puis SAVE

auto suggested metrics to add chart

8
Mike S.

Cela pourrait être utile si vous cherchez un moyen programmatique pour y parvenir:

from google.cloud import monitoring_v3
from google.cloud.monitoring_v3 import query

project = "my-project"
client = monitoring_v3.MetricServiceClient()
result = query.Query(
         client,
         project,
         'pubsub.googleapis.com/subscription/num_undelivered_messages', 
         minutes=60).as_dataframe()

print(result['pubsub_subscription'][project]['subscription_name'][0])
0
Steeve