Как я могу получить количество недоставленных сообщений (metric api), присутствующих в Pubsub, используя клиентскую библиотеку python?

#python #google-cloud-platform #stackdriver #google-cloud-stackdriver

#python #google-cloud-platform #stackdriver #google-cloud-stackdriver

Вопрос:

Я использую Pubsub в качестве инструмента механизма очередей и хочу узнать количество сообщений, находящихся в теме Pubsub. С той же целью я решил использовать метрику Google API pubsub.googleapis.com/subscription/num_undelivered_messages , но я не могу понять, как этого можно достичь с помощью клиентской библиотеки python monitoring_v3.

 from google.cloud import monitoring_v3
import time,os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/key.json"

client = monitoring_v3.MetricServiceClient()
project = 'project_name'
project_name = client.project_path(project)
metric_type = "pubsub.googleapis.com/subscription/num_undelivered_messages"
  

Не могли бы вы подсказать мне, как действовать дальше и запросить эту метрику Google api с именем num_undelivered_messages?

Комментарии:

1. Я использую клиентскую библиотеку Google Cloud, которая была упомянута в следующей ссылке для мониторинга Stackdriver cloud.google.com/monitoring/docs/reference/libraries

Ответ №1:

Это работает для меня, но я не уверен, что это намерение создателя.

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

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

Комментарии:

1. Можете ли вы предложить, как отфильтровать его для конкретной подписки?

2. позже вы можете выполнить фильтрацию, как result в словаре с ключом для имени подписки

Ответ №2:

Возможно, вам потребуется запустить свой код таким образом для конкретной подписки:

 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])
  

Комментарии:

1. Спасибо 🙂 так будет ли это выдавать сообщения, которым 60 минут?