如何使用go-sdk将指标推送到Opentelemetry

wbgh16ku  于 2023-03-21  发布在  Go
关注(0)|答案(1)|浏览(125)

我尝试使用go-sdk将指标推送到opentelemetry,但我没有找到任何关于doc的信息。到目前为止,我尝试使用此代码,但不知道下一步是什么,老实说,我对提供程序和读取器有些困惑,我是监视方面的新手

func main() {
    ctx := context.Background()

    res, err := resource.New(ctx, resource.WithAttributes(semconv.ServiceName("my-service")))
    if err != nil {
        panic(err)
    }

    ctx, cancel := context.WithTimeout(ctx, time.Second)
    defer cancel()
    conn, err := grpc.DialContext(ctx, "localhost:4317", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithBlock())
    if err != nil {
        panic(err)
    }

    metricExporter, err := otlpmetricgrpc.New(ctx, otlpmetricgrpc.WithGRPCConn(conn))
    if err != nil {
        panic(err)
    }

    exporter, err := prometheus.New()
    if err != nil {
        panic(err)
    }

    provider := metric.NewMeterProvider(metric.WithReader(exporter))
    meter := provider.Meter("github.com/open-telemetry/opentelemetry-go/example/prometheus")

    counter, err := meter.Float64Counter("foo", instrument.WithDescription("a simple counter"))
    if err != nil {
        panic(err)
    }
    counter.Add(ctx, 5)

    reader := metric.NewPeriodicReader(metricExporter, metric.WithInterval(1*time.Second))

}

到目前为止,源信息I从这里X1 E0 F1 X到这里X1 E1 F1 X

yzxexxkh

yzxexxkh1#

首先,值得注意的是,OTelGo指标API和SDK目前并不稳定。我将尽量把我的答案集中在稳定的OpenTelemetry指标规范中包含的更高级别的项目上,以免它过时。以下任何与Go相关的内容都可能发生变化。
看起来您正在尝试设置两种不同类型的导出器。Prometheus导出器由Prometheus抓取,而otelmetricgrpc导出器创建一个连接,通过OTLP将指标推送到OpenTelemetry Collector等接收器。您可能只需要其中一个,而不是两个都需要。您链接的第一个样本实际上仅用于跟踪,而不是指标,但原理基本相同。
任何OpenTelemetry SDK中度量的入口点都是meter provider。度量提供程序处理与度量相关的配置以及数据的聚合和导出。这也是用户获取meters的方式。每个代码模块通常都有自己的度量。从该度量创建度量,并从这些度量记录数据点。所有度量点聚合在一起,并通过度量提供程序流回。
为了从计量提供商读取指标,您需要某种类型的metric reader。如果您尝试使用OTLP等协议推送指标,您将使用类似定期导出指标读取器的工具,定期从计量提供商收集指标并使用导出器导出它们。
如果你尝试使用像普罗米修斯那样的基于拉力的度量系统,导出器充当度量读取器,并在度量系统每次请求刮擦端点时读取度量。这是在您链接的第二个示例中完成的操作。serveMetrics函数打开一个侦听端口2223并处理对localhost:2223/metrics的请求的Web服务器。每次GET请求到达该端点时,度量将根据度量提供程序配置进行聚合,并在响应正文中返回,这允许像Prometheus这样的系统定期从应用程序请求度量。

相关问题