Stackdriver 上未显示自定义 OpenCensus 指标
Posted
技术标签:
【中文标题】Stackdriver 上未显示自定义 OpenCensus 指标【英文标题】:Custom OpenCensus metrics not appearing on Stackdriver 【发布时间】:2019-11-18 03:07:18 【问题描述】:我正在尝试使用 OpenCensus 从我的 Go 应用程序向 Stackdriver 发送自定义指标。
我已关注guide,因此已设置视图和导出器:
import (
"context"
"contrib.go.opencensus.io/exporter/stackdriver"
"github.com/pkg/errors"
"go.opencensus.io/stats"
"go.opencensus.io/stats/view"
"time"
)
var (
apiRequestDurationMs = stats.Int64("api_request_duration", "API request duration in milliseconds", stats.UnitMilliseconds)
)
func NewMetricsExporter() (*stackdriver.Exporter, error)
v := &view.View
Name: "api_request_durations",
Measure: apiRequestDurationMs,
Description: "The distribution of request durations",
Aggregation: view.Distribution(0, 100, 200, 400, 1000, 2000, 4000),
if registerError := view.Register(v); registerError != nil
return nil, errors.Wrapf(registerError, "failed to register request duration view")
exporter, exporterError := stackdriver.NewExporter(stackdriver.OptionsProjectID: "project-ID")
if exporterError != nil
return nil, errors.Wrapf(exporterError, "failed to create stackdriver exporter")
if startError := exporter.StartMetricsExporter(); startError != nil
return nil, errors.Wrapf(startError, "failed to create stackdriver exporter")
return exporter, nil
然后我使用以下方式发送我的指标:
func RequestDuration(d time.Duration)
stats.Record(context.Background(), apiRequestDurationMs.M(int64(d)))
但我发送的自定义指标没有出现在 Stackdriver 的 Metrics Explorer 中。
我错过了什么?
【问题讨论】:
您是否在 Google Cloud Platform 项目上启用了结算功能? APIs Explorer 是测试任何 Google REST API 的出色工具。请参阅此处以枚举 Stackdriver Monitoring 时间序列:developers.google.com/apis-explorer/#search/… OpenCensus 页面还建议使用view.SetReportingPeriod(60 * time.Second)
使用 Stackdriver (opencensus.io/exporters/supported-exporters/go/stackdriver/…)。你应该在退出之前sd.Flush()
,但我认为这不是你的问题。
谢谢,@DazWilkin。是的,计费已启用。我会查看开放的人口普查文档
【参考方案1】:
问题出在用户指南中。 实际上,您必须注册出口商并设置报告间隔:
view.RegisterExporter(exporter)
view.SetReportingPeriod(60 * time.Second)
【讨论】:
以上是关于Stackdriver 上未显示自定义 OpenCensus 指标的主要内容,如果未能解决你的问题,请参考以下文章
Stackdriver execution_id 和自定义标签
用于将自定义 OpenCensus 指标写入 GKE 上的 StackDriver 的简单 hello world 演示?