问题描述
使用 GCP 并在 Metrics Explorer 中获得以下数据:
我需要使用 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 数据
解决方法
-
对于您的第一个问题,将
metric.label.subscription_id
中的resource.label.\"subscription_id\"
替换为setFilter
-
对于第二个问题,您可以使用文档示例 here :确保时间间隔至少为 60 秒(61 秒对我有用)。以任何方式获取按结束时间排序的最后一个值