Google Cloud Metrics - 获取按 subscription_id 过滤的发布/订阅指标

问题描述

使用 GCP 并在 Metrics Explorer 中获得以下数据:

enter image description here

我需要使用 Java 客户端来获取特定订阅 ID 中当前数量的 undelivered_messages。

找到以下示例: https://cloud.google.com/monitoring/custom-metrics/reading-metrics

ListTimeSeriesRequest.Builder requestBuilder =
          ListTimeSeriesRequest.newBuilder()
              .setName(name.toString())
              .setFilter(
                  "metric.type=\"pubsub.googleapis.com/subscription/num_undelivered_messages\" AND metric.label.subscription_id = \"myexporter\"")
              .setInterval(interval)
              .setView(ListTimeSeriesRequest.TimeSeriesView.HEADERS);

导致错误的原因:

Caused by: io.grpc.StatusRuntimeException: NOT_FOUND: The metric referenced by the provided filter is unkNown. Check the metric name and labels.

但不清楚:

  • 如何通过 subscription_id 过滤数据
  • 如何获取当前值而不是 TimeSeries 数据

解决方法

  1. 对于您的第一个问题,将 metric.label.subscription_id 中的 resource.label.\"subscription_id\" 替换为 setFilter

  2. 对于第二个问题,您可以使用文档示例 here :确保时间间隔至少为 60 秒(61 秒对我有用)。以任何方式获取按结束时间排序的最后一个值