如何通过 Google 云监控 JAVA 客户端库获取 Pub/Sub 订阅中未确认消息的数量

问题描述 投票:0回答:3

我创建了一些 Pub/Sub 订阅,该订阅没有附加消费者,并且可以存储消息长达 7 天。这是因为理想情况下,这些 Pub/Sub 中的消息数量不应超过某个阈值。我想从我的应用程序定期监控这些发布/订阅,然后在数量超过阈值的极少数情况下处理消息。如果没有,即使设置相同的警报也会有所帮助。

我知道我可以从 Google Cloud Console 为订阅设置 Cloud Monitoring 并创建仪表板/提醒。有没有办法通过 JAVA 客户端库(Google Cloud Monitoring 链接到文档)以编程方式执行此操作?由于没有很多可用的代码示例,我发现这很困难。

TLDR:如何在我的代码中使用 google-cloud-monitoring JAVA 客户端库获取 Pub/Sub 订阅中未确认消息的数量

java google-cloud-platform google-cloud-pubsub google-cloud-monitoring
3个回答
0
投票

您可以使用

listTimeSeries
方法获取数据。


0
投票

您可以使用 MetricServiceClient.ListTimeSeriesRequest 以编程方式读取这些指标(例如 subscription/num_undelivered_messages)。 Cloud Monitoring 文档页面包含一般如何初始化客户端库的示例:https://cloud.google.com/monitoring/docs/reference/libraries#using_the_client_library


0
投票

我一直在尝试做同样的事情。其他答案是正确的,您需要使用 listTieSeries。您需要执行以下操作:

  1. 转到 GCP 中监控页面下的 Metrics Explorer。
  2. 创建一个显示 pubsub.googleapis.com/subscription/num_undelivered_messages 的仪表板 2a) 按 subscription_id 过滤
  3. 找到仪表板名称。格式为projects/123456789/dashboards/123abc45-678d-9efg-0123-4hi56j7k8910 您可以使用 https://cloud.google.com/monitoring/api/ref_v3/rest/v1/projects.dashboards/list 上的 api 查看所有仪表板并找到您创建的仪表板及其名称。
  4. 使用 DashboardName,您可以访问 https://cloud.google.com/monitoring/api/ref_v3/rest/v1/projects.dashboards/get 从 ResponseOjbect.mosaicLayout.tiles[0] 获取值。 widget.xyChart.dataSets[0].timeSeriesQuery.timeSeriesFilter.filter ;您可能需要删除连字符。
  5. https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list 上,您可以使用格式“projects/1234567890”提供名称值,并提供interval.startTime和interval .endTime 格式为“2024-07-25T10:57:23Z”,间隔一秒以限制响应大小,并提供步骤 4 中的过滤器值。确保删除转义反斜杠。

您将能够在 ResponseObject.timeSeries[0].points[0].value.int64Value 下看到未确认消息的数量

请注意,这不会是实时的,会有大约 2 分钟的刷新延迟。

您可以参考https://github.com/googleapis/google-cloud-java/tree/main/java-monitoring/samples/snippets/ generated/com/google/cloud/monitoring/v3/metricservice/listtimeseries查看 Java 代码示例

© www.soinside.com 2019 - 2024. All rights reserved.