diff --git a/go.mod b/go.mod index 72a20f3aa..7f85850c1 100644 --- a/go.mod +++ b/go.mod @@ -89,9 +89,9 @@ require ( github.com/hashicorp/consul/api v1.15.2 github.com/hashicorp/go-uuid v1.0.3 github.com/influxdata/go-syslog/v3 v3.0.0 - github.com/influxdata/influxdb-observability/common v0.2.22 - github.com/influxdata/influxdb-observability/influx2otel v0.2.21 - github.com/influxdata/influxdb-observability/otel2influx v0.2.22 + github.com/influxdata/influxdb-observability/common v0.2.28 + github.com/influxdata/influxdb-observability/influx2otel v0.2.28 + github.com/influxdata/influxdb-observability/otel2influx v0.2.28 github.com/influxdata/line-protocol/v2 v2.2.1 github.com/influxdata/tail v1.0.1-0.20210707231403-b283181d1fa7 github.com/influxdata/toml v0.0.0-20190415235208-270119a8ce65 @@ -158,10 +158,9 @@ require ( github.com/xdg/scram v1.0.5 github.com/yuin/goldmark v1.4.13 go.mongodb.org/mongo-driver v1.10.2 - go.opentelemetry.io/collector/pdata v0.56.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.31.0 - go.opentelemetry.io/otel/metric v0.31.0 - go.opentelemetry.io/otel/sdk/metric v0.31.0 + go.opentelemetry.io/collector/pdata v0.61.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.1 + go.opentelemetry.io/otel/sdk/metric v0.32.1 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 golang.org/x/net v0.0.0-20220909164309-bea034e7d591 @@ -188,6 +187,7 @@ require ( require ( github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6 // indirect github.com/gabriel-vasile/mimetype v1.4.0 // indirect + go.opentelemetry.io/otel/metric v0.32.1 // indirect ) require ( @@ -388,12 +388,12 @@ require ( github.com/yusufpapurcu/wmi v1.2.2 // indirect go.etcd.io/etcd/api/v3 v3.5.1 // indirect go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/otel v1.8.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.8.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.31.0 // indirect - go.opentelemetry.io/otel/sdk v1.8.0 // indirect - go.opentelemetry.io/otel/trace v1.8.0 // indirect - go.opentelemetry.io/proto/otlp v0.18.0 // indirect + go.opentelemetry.io/otel v1.10.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.1 // indirect + go.opentelemetry.io/otel/sdk v1.10.0 // indirect + go.opentelemetry.io/otel/trace v1.10.0 // indirect + go.opentelemetry.io/proto/otlp v0.19.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.6.0 // indirect golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 // indirect diff --git a/go.sum b/go.sum index acdbfd84b..950b33c85 100644 --- a/go.sum +++ b/go.sum @@ -1363,12 +1363,12 @@ github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7m github.com/influxdata/go-syslog/v3 v3.0.0 h1:jichmjSZlYK0VMmlz+k4WeOQd7z745YLsvGMqwtYt4I= github.com/influxdata/go-syslog/v3 v3.0.0/go.mod h1:tulsOp+CecTAYC27u9miMgq21GqXRW6VdKbOG+QSP4Q= github.com/influxdata/influxdb v1.8.4/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= -github.com/influxdata/influxdb-observability/common v0.2.22 h1:QXVvuY/VgaTrC5gALrQntPC/eQ5txg1GJZ4OI4pScnc= -github.com/influxdata/influxdb-observability/common v0.2.22/go.mod h1:bW4ZANSxOnZu49ZhxiqKRyiFj+pePFII8+JGzvbtTTU= -github.com/influxdata/influxdb-observability/influx2otel v0.2.21 h1:tmmLtJBEOU04+CLc1WsPSWVVW+BTmdmAlpgROlY/zog= -github.com/influxdata/influxdb-observability/influx2otel v0.2.21/go.mod h1:Bg6Pi3swyEv3kvl/+3odBLG+LzPXS38IW5EkW3Qs3wg= -github.com/influxdata/influxdb-observability/otel2influx v0.2.22 h1:GbugqGRMSttCEzfJaQjh/QSY1g2q642aa/TCUo++GT8= -github.com/influxdata/influxdb-observability/otel2influx v0.2.22/go.mod h1:dlIflDYQNuDmEy0iuBE31VJnLJxj5SkEXZ0/2HDOeE0= +github.com/influxdata/influxdb-observability/common v0.2.28 h1:kn3i4AjqNe/WEMrcINeuWd5xJe8fyK6g5rCDxBw8CbY= +github.com/influxdata/influxdb-observability/common v0.2.28/go.mod h1:Zn0qergkR7OQZv+KPLLFThJvOXBoj45nvqMIYn8Sw5w= +github.com/influxdata/influxdb-observability/influx2otel v0.2.28 h1:EcmE4fAp6VjGUlRrW6csnIZTU+zWSXY3rBPu3RKnttI= +github.com/influxdata/influxdb-observability/influx2otel v0.2.28/go.mod h1:KN5pPyhZb027IBGoGNHVt6VqM7kZOcVnf6VudNGySSY= +github.com/influxdata/influxdb-observability/otel2influx v0.2.28 h1:XLclpFnXj2a2Rpe45VAB5R3x0swzxrYcz6ZVMbvOBXM= +github.com/influxdata/influxdb-observability/otel2influx v0.2.28/go.mod h1:tl5sHk8+kSl3QxbeIRDxODGG/bpw43gXE6FywDe7xTw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= @@ -2435,28 +2435,28 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector v0.28.0/go.mod h1:AP/BTXwo1eedoJO7V+HQ68CSvJU1lcdqOzJCgt1VsNs= -go.opentelemetry.io/collector/pdata v0.56.0 h1:JD8KjQ7dNZ441xMuVZVu5NRYmkA4vOYGV7w8tkCdyrE= -go.opentelemetry.io/collector/pdata v0.56.0/go.mod h1:mYcCREWiIJyHss0dbU+GSiz2tmGZ6u09vtfkKTciog4= +go.opentelemetry.io/collector/pdata v0.61.0 h1:jPUReUpR/D1xsigfRxyXA7cYMnXfnK+D7z61W6F9moo= +go.opentelemetry.io/collector/pdata v0.61.0/go.mod h1:0hqgNMRneVXaLNelv3q0XKJbyBW9aMDwyC15pKd30+E= go.opentelemetry.io/otel v0.7.0/go.mod h1:aZMyHG5TqDOXEgH2tyLiXSUKly1jT3yqE9PmrzIeCdo= -go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg= -go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.8.0 h1:ao8CJIShCaIbaMsGxy+jp2YHSudketpDgDRcbirov78= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.8.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.31.0 h1:H0+xwv4shKw0gfj/ZqR13qO2N/dBQogB1OcRjJjV39Y= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.31.0/go.mod h1:nkenGD8vcvs0uN6WhR90ZVHQlgDsRmXicnNadMnk+XQ= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.31.0 h1:BaQ2xM5cPmldVCMvbLoy5tcLUhXCtIhItDYBNw83B7Y= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.31.0/go.mod h1:VRr8tlXQEsTdesDCh0qBe2iKDWhpi3ZqDYw6VlZ8MhI= -go.opentelemetry.io/otel/metric v0.31.0 h1:6SiklT+gfWAwWUR0meEMxQBtihpiEs4c+vL9spDTqUs= -go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= -go.opentelemetry.io/otel/sdk v1.8.0 h1:xwu69/fNuwbSHWe/0PGS888RmjWY181OmcXDQKu7ZQk= -go.opentelemetry.io/otel/sdk v1.8.0/go.mod h1:uPSfc+yfDH2StDM/Rm35WE8gXSNdvCg023J6HeGNO0c= -go.opentelemetry.io/otel/sdk/metric v0.31.0 h1:2sZx4R43ZMhJdteKAlKoHvRgrMp53V1aRxvEf5lCq8Q= -go.opentelemetry.io/otel/sdk/metric v0.31.0/go.mod h1:fl0SmNnX9mN9xgU6OLYLMBMrNAsaZQi7qBwprwO3abk= -go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY= -go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= +go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= +go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 h1:TaB+1rQhddO1sF71MpZOZAuSPW1klK2M8XxfrBMfK7Y= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.1 h1:DQY4KNmy9Hu4SKAElPIp2DGmPZOgWmTurWhyd9yOAdM= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.1/go.mod h1:6FizIJscdUCUM5FP5JVh3FaB1Uku5Z7GapFvBOKERQg= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.1 h1:tpZ/DKQTUTIwDK6amyBYS4oudtO+swZW2zBUbkBTDNo= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.1/go.mod h1:A6awkKLPv8+5r7pSzwD21Qpt81i1mK1PK/7XwH/hHOk= +go.opentelemetry.io/otel/metric v0.32.1 h1:ftff5LSBCIDwL0UkhBuDg8j9NNxx2IusvJ18q9h6RC4= +go.opentelemetry.io/otel/metric v0.32.1/go.mod h1:iLPP7FaKMAD5BIxJ2VX7f2KTuz//0QK2hEUyti5psqQ= +go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY= +go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE= +go.opentelemetry.io/otel/sdk/metric v0.32.1 h1:S6AqzulzGQl+sTpYeAoVLw1SJbc2LYuKCMUmfEKG+zM= +go.opentelemetry.io/otel/sdk/metric v0.32.1/go.mod h1:Nn+Nt/7cKzm5ISmvLzNO5RLf0Xuv8/Qo8fkpr0JDOzs= +go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= +go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.18.0 h1:W5hyXNComRa23tGpKwG+FRAc4rfF6ZUg1JReK+QHS80= -go.opentelemetry.io/proto/otlp v0.18.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd h1:Uo/x0Ir5vQJ+683GXB9Ug+4fcjsbp7z7Ul8UaZbhsRM= go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/plugins/inputs/opentelemetry/grpc_services.go b/plugins/inputs/opentelemetry/grpc_services.go index ee75b6f3b..43f6ba2dd 100644 --- a/plugins/inputs/opentelemetry/grpc_services.go +++ b/plugins/inputs/opentelemetry/grpc_services.go @@ -3,6 +3,7 @@ package opentelemetry import ( "context" "fmt" + "go.opentelemetry.io/collector/pdata/plog/plogotlp" "go.opentelemetry.io/collector/pdata/pmetric/pmetricotlp" "go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp" @@ -16,7 +17,7 @@ type traceService struct { writer *writeToAccumulator } -var _ ptraceotlp.Server = (*traceService)(nil) +var _ ptraceotlp.GRPCServer = (*traceService)(nil) func newTraceService(logger common.Logger, writer *writeToAccumulator) *traceService { converter := otel2influx.NewOtelTracesToLineProtocol(logger) @@ -36,7 +37,7 @@ type metricsService struct { writer *writeToAccumulator } -var _ pmetricotlp.Server = (*metricsService)(nil) +var _ pmetricotlp.GRPCServer = (*metricsService)(nil) var metricsSchemata = map[string]common.MetricsSchema{ "prometheus-v1": common.MetricsSchemaTelegrafPrometheusV1, @@ -69,7 +70,7 @@ type logsService struct { writer *writeToAccumulator } -var _ plogotlp.Server = (*logsService)(nil) +var _ plogotlp.GRPCServer = (*logsService)(nil) func newLogsService(logger common.Logger, writer *writeToAccumulator) *logsService { converter := otel2influx.NewOtelLogsToLineProtocol(logger) diff --git a/plugins/inputs/opentelemetry/opentelemetry_test.go b/plugins/inputs/opentelemetry/opentelemetry_test.go index 7f608bbfe..017855d20 100644 --- a/plugins/inputs/opentelemetry/opentelemetry_test.go +++ b/plugins/inputs/opentelemetry/opentelemetry_test.go @@ -4,13 +4,11 @@ import ( "context" "net" "testing" + "time" "github.com/stretchr/testify/require" "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc" - "go.opentelemetry.io/otel/metric/global" - controller "go.opentelemetry.io/otel/sdk/metric/controller/basic" - processor "go.opentelemetry.io/otel/sdk/metric/processor/basic" - "go.opentelemetry.io/otel/sdk/metric/selector/simple" + "go.opentelemetry.io/otel/sdk/metric" "google.golang.org/grpc" "google.golang.org/grpc/test/bufconn" @@ -20,60 +18,55 @@ import ( ) func TestOpenTelemetry(t *testing.T) { + // create mock OpenTelemetry client + mockListener := bufconn.Listen(1024 * 1024) + t.Cleanup(func() { _ = mockListener.Close() }) plugin := inputs.Inputs["opentelemetry"]().(*OpenTelemetry) plugin.listener = mockListener accumulator := new(testutil.Accumulator) - err := plugin.Start(accumulator) - require.NoError(t, err) + require.NoError(t, plugin.Start(accumulator)) t.Cleanup(plugin.Stop) - metricExporter, err := otlpmetricgrpc.New(context.Background(), + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + t.Cleanup(cancel) + + metricExporter, err := otlpmetricgrpc.New(ctx, otlpmetricgrpc.WithInsecure(), otlpmetricgrpc.WithDialOption( grpc.WithBlock(), - grpc.WithContextDialer(func(_ context.Context, _ string) (net.Conn, error) { - return mockListener.Dial() + grpc.WithContextDialer(func(ctx context.Context, _ string) (net.Conn, error) { + return mockListener.DialContext(ctx) })), ) require.NoError(t, err) - t.Cleanup(func() { _ = metricExporter.Shutdown(context.Background()) }) + t.Cleanup(func() { _ = metricExporter.Shutdown(ctx) }) - pusher := controller.New( - processor.NewFactory( - simple.NewWithHistogramDistribution(), - metricExporter, - ), - controller.WithExporter(metricExporter), - ) + reader := metric.NewManualReader() + mp := metric.NewMeterProvider(metric.WithReader(reader)) - err = pusher.Start(context.Background()) - require.NoError(t, err) - t.Cleanup(func() { _ = pusher.Stop(context.Background()) }) + // set a metric value - global.SetMeterProvider(pusher) - - // write metrics - meter := global.MeterProvider().Meter("library-name") + meter := mp.Meter("library-name") counter, err := meter.SyncInt64().Counter("measurement-counter") - require.NoError(t, err) - counter.Add(context.Background(), 7) + counter.Add(ctx, 7) - err = pusher.Stop(context.Background()) + // write metrics through the telegraf OpenTelemetry input plugin + + rm, err := reader.Collect(ctx) require.NoError(t, err) + require.NoError(t, metricExporter.Export(ctx, rm)) // Shutdown + require.NoError(t, reader.Shutdown(ctx)) + require.NoError(t, metricExporter.Shutdown(ctx)) plugin.Stop() - err = metricExporter.Shutdown(context.Background()) - require.NoError(t, err) - // Check require.Empty(t, accumulator.Errors) - require.Len(t, accumulator.Metrics, 1) got := accumulator.Metrics[0] require.Equal(t, "measurement-counter", got.Measurement) diff --git a/plugins/inputs/opentelemetry/writer.go b/plugins/inputs/opentelemetry/writer.go index 58906e62a..ee8e9a256 100644 --- a/plugins/inputs/opentelemetry/writer.go +++ b/plugins/inputs/opentelemetry/writer.go @@ -6,6 +6,7 @@ import ( "time" "github.com/influxdata/influxdb-observability/common" + "github.com/influxdata/telegraf" ) diff --git a/plugins/outputs/opentelemetry/opentelemetry.go b/plugins/outputs/opentelemetry/opentelemetry.go index 2d97b5147..5df4cbe1d 100644 --- a/plugins/outputs/opentelemetry/opentelemetry.go +++ b/plugins/outputs/opentelemetry/opentelemetry.go @@ -3,11 +3,10 @@ package opentelemetry import ( "context" + ntls "crypto/tls" _ "embed" "time" - ntls "crypto/tls" - "github.com/influxdata/influxdb-observability/common" "github.com/influxdata/influxdb-observability/influx2otel" "go.opentelemetry.io/collector/pdata/pmetric/pmetricotlp" @@ -45,7 +44,7 @@ type OpenTelemetry struct { metricsConverter *influx2otel.LineProtocolToOtelMetrics grpcClientConn *grpc.ClientConn - metricsServiceClient pmetricotlp.Client + metricsServiceClient pmetricotlp.GRPCClient callOptions []grpc.CallOption } @@ -158,7 +157,7 @@ func (o *OpenTelemetry) Write(metrics []telegraf.Metric) error { if len(o.Attributes) > 0 { for i := 0; i < md.Metrics().ResourceMetrics().Len(); i++ { for k, v := range o.Attributes { - md.Metrics().ResourceMetrics().At(i).Resource().Attributes().UpsertString(k, v) + md.Metrics().ResourceMetrics().At(i).Resource().Attributes().PutString(k, v) } } } diff --git a/plugins/outputs/opentelemetry/opentelemetry_test.go b/plugins/outputs/opentelemetry/opentelemetry_test.go index 16d90bce5..a16b3ddc9 100644 --- a/plugins/outputs/opentelemetry/opentelemetry_test.go +++ b/plugins/outputs/opentelemetry/opentelemetry_test.go @@ -13,30 +13,31 @@ import ( "github.com/influxdata/influxdb-observability/common" "github.com/influxdata/influxdb-observability/influx2otel" - "github.com/influxdata/telegraf" - "github.com/influxdata/telegraf/config" - "github.com/influxdata/telegraf/testutil" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + + "github.com/influxdata/telegraf" + "github.com/influxdata/telegraf/config" + "github.com/influxdata/telegraf/testutil" ) func TestOpenTelemetry(t *testing.T) { expect := pmetric.NewMetrics() { rm := expect.ResourceMetrics().AppendEmpty() - rm.Resource().Attributes().InsertString("host.name", "potato") - rm.Resource().Attributes().InsertString("attr-key", "attr-val") + rm.Resource().Attributes().PutString("host.name", "potato") + rm.Resource().Attributes().PutString("attr-key", "attr-val") ilm := rm.ScopeMetrics().AppendEmpty() ilm.Scope().SetName("My Library Name") m := ilm.Metrics().AppendEmpty() m.SetName("cpu_temp") - m.SetDataType(pmetric.MetricDataTypeGauge) + m.SetEmptyGauge() dp := m.Gauge().DataPoints().AppendEmpty() - dp.Attributes().InsertString("foo", "bar") + dp.Attributes().PutString("foo", "bar") dp.SetTimestamp(pcommon.Timestamp(1622848686000000000)) - dp.SetDoubleVal(87.332) + dp.SetDoubleValue(87.332) } m := newMockOtelService(t) t.Cleanup(m.Cleanup) @@ -79,7 +80,7 @@ func TestOpenTelemetry(t *testing.T) { assert.JSONEq(t, string(expectJSON), string(gotJSON)) } -var _ pmetricotlp.Server = (*mockOtelService)(nil) +var _ pmetricotlp.GRPCServer = (*mockOtelService)(nil) type mockOtelService struct { t *testing.T @@ -129,7 +130,8 @@ func (m *mockOtelService) Address() string { } func (m *mockOtelService) Export(ctx context.Context, request pmetricotlp.Request) (pmetricotlp.Response, error) { - m.metrics = request.Metrics().Clone() + m.metrics = pmetric.NewMetrics() + request.Metrics().CopyTo(m.metrics) ctxMetadata, ok := metadata.FromIncomingContext(ctx) assert.Equal(m.t, []string{"header1"}, ctxMetadata.Get("test")) assert.True(m.t, ok)