#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 минут?