在 Stackdriver 中绘制用户定义指标标签的值

Plotting the value of a user define metric's label in Stackdriver

我正在输出以下日志语句:

[p~my-proect-name/dev.12345].<stdout>: 08:09:28.870 [RequestE671C95C] INFO  - Finished processing 27653 rows

我想要一个折线图,显示 Stackdriver 中每天处理的总行数。

我尝试在 GCP 界面中创建一个用户定义的指标,如下所示:

但这是我在 Stackdriver 中看到的:

如您所见,Stackdriver 没有绘制标签的实际 (已处理的行数),而是绘制标签出现的次数(即日志语句数)。

是否可以在 Stackdriver 中实现?

您需要将值捕获为基于分发日志的指标,而不是将值捕获为用户定义的标签。您可以在 https://cloud.google.com/logging/docs/logs-based-metrics/distribution-metrics.

中了解有关分布指标的更多信息

从日志中捕获的值的统计信息被记录为一个分布。您可以汇总 1 天内的分布值以计算值的总和。这在今天的图表中不直接支持,但您可以使用 ListTimeSeries API 来获取您想要的值。例如,查询如下所示:

export ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" 'https://monitoring.googleapis.com/v3/projects/[PROJECT_ID]/timeSeries?aggregation.alignmentPeriod=86400s&aggregation.crossSeriesReducer=REDUCE_SUM&aggregation.perSeriesAligner=ALIGN_SUM&filter=metric.type="logging.googleapis.com/user/ropo-metrics"&interval.endTime=2018-01-22T00:00:00Z'

您也可以在 https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list

中使用 Google API 资源管理器尝试 API

在生成的响应中,您将看到每一天的单个分布值,平均值 * 计数是当天的总和值。

目前无法在 Stackdriver 图表中执行这些高级查询操作,但很快就会支持此类功能(免责声明:我是一名在 Stackdriver 工作的工程师)。