我输出以下日志语句:
[p~my-proect-name/dev.12345].<stdout>: 08:09:28.870 [RequestE671C95C] INFO - Finished processing 27653 rows
我希望有一个折线图,显示Stackdriver中每天处理的总行数。
我尝试在GCP界面中创建用户定义的指标,如下所示:
但这是我在Stackdriver中看到的:
正如您所看到的,Stackdriver只是绘制标签出现的次数(即日志语句的数量),而不是绘制标签的实际值(处理的行数)。
是否可以在Stackdriver中实现这一目标?
答案 0 :(得分:2)
您需要将值捕获为基于分发日志的度量标准,而不是将值捕获为用户定义的标签。您可以在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 Explorer尝试API在结果响应中,您将看到每天的单个分布值,平均值*计数是当天的总和值。
目前无法在Stackdriver图表中执行这些高级查询操作,但很快就会支持这样的功能(免责声明:我是一名在Stackdriver工作的工程师)。