diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml index 8bf5f1d1..59210c0c 100644 --- a/.github/workflows/codeql-analysis.yaml +++ b/.github/workflows/codeql-analysis.yaml @@ -8,7 +8,7 @@ on: branches: - main schedule: - - cron: '0 22 * * 6' + - cron: "0 22 * * 6" jobs: analyze: @@ -20,24 +20,30 @@ jobs: security-events: write steps: - - name: Checkout repository - uses: actions/checkout@v3 + - name: Checkout repository + uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: 1.19 + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.19 - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: go + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: go - - name: Autobuild - uses: github/codeql-action/autobuild@v2 + - name: Autobuild + uses: github/codeql-action/autobuild@v2 - - name: Build Artifact - run: make build + - name: Install cross-compilation tools + run: | + set -ex + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu musl-tools - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + - name: Build Artifacts + run: make build-all + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/lint-and-test.yaml b/.github/workflows/lint-and-test.yaml index 79e1c21e..f1b2e90a 100644 --- a/.github/workflows/lint-and-test.yaml +++ b/.github/workflows/lint-and-test.yaml @@ -3,17 +3,19 @@ name: test-pipeline on: pull_request: branches: - - '**' + - "**" jobs: lint-and-test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2.4.0 + - name: Checkout code + uses: actions/checkout@v3 - - uses: actions/setup-go@v2 + - name: Set up Go + uses: actions/setup-go@v2 with: - go-version: 1.18 + go-version: 1.19 - name: Install tools run: make install-ci diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index 1049a7be..58a826ef 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -13,19 +13,19 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 with: version: latest - name: Login to DockerHub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - uses: benjlevesque/short-sha@v1.2 + - uses: benjlevesque/short-sha@v2.2 id: short-sha - name: Get branch name id: branch-name @@ -39,5 +39,12 @@ jobs: else echo "DOCKER_TAG=${{ steps.branch-name.outputs.current_branch }}" >> $GITHUB_ENV fi + - name: Install cross-compilation tools + run: | + set -ex + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu musl-tools + - name: Build artifacts for arm64/amd64 + run: make build-all - name: Build and push docker image run: make build-and-push-signoz-collector diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..84ef5bbd --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,39 @@ +name: release + +on: + push: + tags: + - v[0].[0-9]+.[0-9]+ + +jobs: + upload-release-assets: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Install cross-compilation tools + run: | + set -ex + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu musl-tools + - name: Build artifacts for arm64/amd64 + run: make build-all + - name: Create checksums and tarballs + run: | + set -ex + echo "Creating checksums and tarballs" + cd .build/linux-amd64 + sha256sum signoz-collector > signoz-collector-linux-amd64.sha256 + tar -czvf signoz-collector-linux-amd64.tar.gz signoz-collector + cd ../linux-arm64 + sha256sum signoz-collector > signoz-collector-linux-arm64.sha256 + tar -czvf signoz-collector-linux-arm64.tar.gz signoz-collector + - name: Create release and upload assets + uses: softprops/action-gh-release@v1 + with: + files: | + .build/linux-amd64/signoz-collector-linux-amd64.sha256 + .build/linux-amd64/signoz-collector-linux-amd64.tar.gz + .build/linux-arm64/signoz-collector-linux-arm64.sha256 + .build/linux-arm64/signoz-collector-linux-arm64.tar.gz + generate_release_notes: true diff --git a/.gitignore b/.gitignore index f5f929c0..03575084 100644 --- a/.gitignore +++ b/.gitignore @@ -18,5 +18,8 @@ .DS_Store .idea ./config/default-config.yaml + +# build folder +.build *.rollback -signoz-collector \ No newline at end of file +signoz-collector diff --git a/Makefile b/Makefile index b78d1294..a9f0022b 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ COMMIT_SHA ?= $(shell git rev-parse HEAD) REPONAME ?= signoz -IMAGE_NAME ?= "signoz-otel-collector" +IMAGE_NAME ?= signoz-otel-collector CONFIG_FILE ?= ./config/default-config.yaml DOCKER_TAG ?= latest @@ -15,6 +15,8 @@ IMPORT_LOG=.import.log CLICKHOUSE_HOST ?= localhost CLICKHOUSE_PORT ?= 9000 +LD_FLAGS ?= + .PHONY: install-tools install-tools: @@ -31,7 +33,18 @@ test: .PHONY: build build: - GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o signoz-collector ./cmd/signozcollector + CGO_ENABLED=1 go build -tags timetzdata -o .build/${GOOS}-${GOARCH}/signoz-collector -ldflags "-linkmode external -extldflags '-static' -s -w ${LD_FLAGS}" ./cmd/signozcollector + +.PHONY: amd64 +amd64: + make GOARCH=amd64 build + +.PHONY: arm64 +arm64: + make CC=aarch64-linux-gnu-gcc GOARCH=arm64 build + +.PHONY: build-all +build-all: amd64 arm64 .PHONY: run run: @@ -47,7 +60,7 @@ build-and-push-signoz-collector: @echo "------------------" @echo "--> Build and push signoz collector docker image" @echo "------------------" - docker buildx build --platform linux/amd64,linux/arm64 --progress plane \ + docker buildx build --platform linux/amd64,linux/arm64 --progress plain \ --no-cache --push -f cmd/signozcollector/Dockerfile \ --tag $(REPONAME)/$(IMAGE_NAME):$(DOCKER_TAG) . @@ -57,7 +70,7 @@ build-signoz-collector: @echo "--> Build signoz collector docker image" @echo "------------------" docker build --build-arg TARGETPLATFORM="linux/amd64" \ - --no-cache -f cmd/signozcollector/Dockerfile --progress plane \ + --no-cache -f cmd/signozcollector/Dockerfile --progress plain \ --tag $(REPONAME)/$(IMAGE_NAME):$(DOCKER_TAG) . .PHONY: lint diff --git a/cmd/signozcollector/Dockerfile b/cmd/signozcollector/Dockerfile index 9601c66b..2dcd3d53 100644 --- a/cmd/signozcollector/Dockerfile +++ b/cmd/signozcollector/Dockerfile @@ -1,34 +1,30 @@ -# Builder stage -FROM golang:1.18-alpine as build -RUN apk --update add ca-certificates +# use a minimal alpine image +FROM alpine:3.17 -WORKDIR /src -COPY . . - -ARG TARGETPLATFORM - -RUN export GOOS=$(echo ${TARGETPLATFORM} | cut -d / -f1) && \ - export GOARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) - -ENV OS111MODULE=on -ENV CGO_ENABLED=0 - -RUN cd cmd/signozcollector && go build -tags timetzdata -o /out/signoz-collector - -# Final stage -FROM alpine:3.15 +# add ca-certificates in case you need them +RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* +# define arguments and default values +ARG TARGETOS=linux +ARG TARGETARCH=amd64 ARG USER_UID=10001 +# create a non-root user for running the collector USER ${USER_UID} -COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=build /out/signoz-collector / -COPY --from=build /src/exporter/clickhousetracesexporter/migrations /migrations -COPY --from=build /src/exporter/clickhouselogsexporter/migrations /logsmigrations +# copy the binaries from the multi-stage build +COPY .build/${TARGETOS}-${TARGETARCH}/signoz-collector /signoz-collector + +# copy the config and migration files +COPY config/default-config.yaml /etc/otel/config.yaml +COPY exporter/clickhousetracesexporter/migrations /migrations +COPY exporter/clickhouselogsexporter/migrations /logsmigrations ENV LOG_MIGRATIONS_FOLDER="/logsmigrations" +# expose OTLP ports for the collector EXPOSE 4317 4318 -ENTRYPOINT ["/signoz-collector"] + +# run the binary as the entrypoint and pass the default config file as a flag +ENTRYPOINT [ "/signoz-collector" ] CMD ["--config", "/etc/otel/config.yaml"] diff --git a/components/components.go b/components/components.go index 7412fcb0..b2e9e1e3 100644 --- a/components/components.go +++ b/components/components.go @@ -15,7 +15,6 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension" - "github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling" @@ -50,6 +49,10 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscloudwatchreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver" @@ -94,14 +97,18 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver" - "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/loggingexporter" "go.opentelemetry.io/collector/exporter/otlpexporter" "go.opentelemetry.io/collector/exporter/otlphttpexporter" + "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/extension/ballastextension" "go.opentelemetry.io/collector/extension/zpagesextension" + "go.opentelemetry.io/collector/otelcol" + "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/processor/memorylimiterprocessor" + "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/otlpreceiver" "go.uber.org/multierr" @@ -110,26 +117,31 @@ import ( "github.com/SigNoz/signoz-otel-collector/exporter/clickhousetracesexporter" _ "github.com/SigNoz/signoz-otel-collector/pkg/parser/grok" "github.com/SigNoz/signoz-otel-collector/processor/signozspanmetricsprocessor" + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler" ) -func Components() (component.Factories, error) { +func Components() (otelcol.Factories, error) { var errs []error factories, err := CoreComponents() if err != nil { - return component.Factories{}, err + return otelcol.Factories{}, err } - var extensions []component.ExtensionFactory + var extensions []extension.Factory for _, ext := range factories.Extensions { extensions = append(extensions, ext) } - factories.Extensions, err = component.MakeExtensionFactoryMap(extensions...) + factories.Extensions, err = extension.MakeFactoryMap(extensions...) if err != nil { errs = append(errs, err) } - receivers := []component.ReceiverFactory{ + receivers := []receiver.Factory{ apachereceiver.NewFactory(), + awscloudwatchreceiver.NewFactory(), + awscontainerinsightreceiver.NewFactory(), + awsecscontainermetricsreceiver.NewFactory(), + awsxrayreceiver.NewFactory(), carbonreceiver.NewFactory(), collectdreceiver.NewFactory(), couchdbreceiver.NewFactory(), @@ -178,12 +190,12 @@ func Components() (component.Factories, error) { for _, rcv := range factories.Receivers { receivers = append(receivers, rcv) } - factories.Receivers, err = component.MakeReceiverFactoryMap(receivers...) + factories.Receivers, err = receiver.MakeFactoryMap(receivers...) if err != nil { errs = append(errs, err) } - exporters := []component.ExporterFactory{ + exporters := []exporter.Factory{ carbonexporter.NewFactory(), clickhousemetricsexporter.NewFactory(), clickhousetracesexporter.NewFactory(), @@ -203,12 +215,12 @@ func Components() (component.Factories, error) { for _, exp := range factories.Exporters { exporters = append(exporters, exp) } - factories.Exporters, err = component.MakeExporterFactoryMap(exporters...) + factories.Exporters, err = exporter.MakeFactoryMap(exporters...) if err != nil { errs = append(errs, err) } - processors := []component.ProcessorFactory{ + processors := []processor.Factory{ attributesprocessor.NewFactory(), cumulativetodeltaprocessor.NewFactory(), deltatorateprocessor.NewFactory(), @@ -231,11 +243,12 @@ func Components() (component.Factories, error) { tailsamplingprocessor.NewFactory(), transformprocessor.NewFactory(), logstransformprocessor.NewFactory(), + signoztailsampler.NewFactory(), } for _, pr := range factories.Processors { processors = append(processors, pr) } - factories.Processors, err = component.MakeProcessorFactoryMap(processors...) + factories.Processors, err = processor.MakeFactoryMap(processors...) if err != nil { errs = append(errs, err) } @@ -244,12 +257,12 @@ func Components() (component.Factories, error) { } func CoreComponents() ( - component.Factories, + otelcol.Factories, error, ) { var errs error - extensions, err := component.MakeExtensionFactoryMap( + extensions, err := extension.MakeFactoryMap( ballastextension.NewFactory(), basicauthextension.NewFactory(), bearertokenauthextension.NewFactory(), @@ -257,7 +270,6 @@ func CoreComponents() ( ecsobserver.NewFactory(), ecstaskobserver.NewFactory(), filestorage.NewFactory(), - fluentbitextension.NewFactory(), hostobserver.NewFactory(), httpforwarder.NewFactory(), jaegerremotesampling.NewFactory(), @@ -270,25 +282,25 @@ func CoreComponents() ( ) errs = multierr.Append(errs, err) - receivers, err := component.MakeReceiverFactoryMap( + receivers, err := receiver.MakeFactoryMap( otlpreceiver.NewFactory(), ) errs = multierr.Append(errs, err) - exporters, err := component.MakeExporterFactoryMap( + exporters, err := exporter.MakeFactoryMap( loggingexporter.NewFactory(), otlpexporter.NewFactory(), otlphttpexporter.NewFactory(), ) errs = multierr.Append(errs, err) - processors, err := component.MakeProcessorFactoryMap( + processors, err := processor.MakeFactoryMap( batchprocessor.NewFactory(), memorylimiterprocessor.NewFactory(), ) errs = multierr.Append(errs, err) - factories := component.Factories{ + factories := otelcol.Factories{ Extensions: extensions, Receivers: receivers, Processors: processors, diff --git a/exporter/clickhouselogsexporter/config.go b/exporter/clickhouselogsexporter/config.go index fede4911..6d4823c9 100644 --- a/exporter/clickhouselogsexporter/config.go +++ b/exporter/clickhouselogsexporter/config.go @@ -17,14 +17,12 @@ package clickhouselogsexporter import ( "errors" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/exporter/exporterhelper" "go.uber.org/multierr" ) // Config defines configuration for ClickHouse exporter. type Config struct { - config.ExporterSettings `mapstructure:",squash"` exporterhelper.TimeoutSettings `mapstructure:",squash"` exporterhelper.RetrySettings `mapstructure:"retry_on_failure"` // QueueSettings is a subset of exporterhelper.QueueSettings, diff --git a/exporter/clickhouselogsexporter/config_test.go b/exporter/clickhouselogsexporter/config_test.go index 9b7de0d5..3ecd53b6 100644 --- a/exporter/clickhouselogsexporter/config_test.go +++ b/exporter/clickhouselogsexporter/config_test.go @@ -22,19 +22,17 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/exporter/exporterhelper" - "go.opentelemetry.io/collector/service/servicetest" + "go.opentelemetry.io/collector/otelcol/otelcoltest" ) func TestLoadConfig(t *testing.T) { - factories, err := componenttest.NopFactories() + factories, err := otelcoltest.NopFactories() require.NoError(t, err) factory := NewFactory() factories.Exporters[typeStr] = factory - cfg, err := servicetest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) + cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) require.NoError(t, err) require.NotNil(t, cfg) @@ -47,16 +45,17 @@ func TestLoadConfig(t *testing.T) { r1 := cfg.Exporters[component.NewIDWithName(typeStr, "full")].(*Config) assert.Equal(t, r1, &Config{ - ExporterSettings: config.NewExporterSettings(component.NewIDWithName(typeStr, "full")), - DSN: "tcp://127.0.0.1:9000", + DSN: "tcp://127.0.0.1:9000", TimeoutSettings: exporterhelper.TimeoutSettings{ Timeout: 5 * time.Second, }, RetrySettings: exporterhelper.RetrySettings{ - Enabled: true, - InitialInterval: 5 * time.Second, - MaxInterval: 30 * time.Second, - MaxElapsedTime: 300 * time.Second, + Enabled: true, + InitialInterval: 5 * time.Second, + MaxInterval: 30 * time.Second, + MaxElapsedTime: 300 * time.Second, + RandomizationFactor: 0.7, + Multiplier: 1.3, }, QueueSettings: QueueSettings{ QueueSize: 100, diff --git a/exporter/clickhouselogsexporter/exporter.go b/exporter/clickhouselogsexporter/exporter.go index 954648b6..8f39c028 100644 --- a/exporter/clickhouselogsexporter/exporter.go +++ b/exporter/clickhouselogsexporter/exporter.go @@ -27,7 +27,9 @@ import ( "time" "github.com/ClickHouse/clickhouse-go/v2" + driver "github.com/ClickHouse/clickhouse-go/v2/lib/driver" "github.com/SigNoz/signoz-otel-collector/usage" + "github.com/SigNoz/signoz-otel-collector/utils" "github.com/golang-migrate/migrate/v4" _ "github.com/golang-migrate/migrate/v4/database/clickhouse" _ "github.com/golang-migrate/migrate/v4/source/file" @@ -42,8 +44,9 @@ import ( ) const ( - CLUSTER = "cluster" - DISTRIBUTED_LOGS_TABLE = "distributed_logs" + CLUSTER = "cluster" + DISTRIBUTED_LOGS_TABLE = "distributed_logs" + DISTRIBUTED_TAG_ATTRIBUTES = "distributed_tag_attributes" ) type clickhouseLogsExporter struct { @@ -132,8 +135,15 @@ func (e *clickhouseLogsExporter) pushLogsData(ctx context.Context, ld plog.Logs) if err != nil { return fmt.Errorf("PrepareBatch:%w", err) } + + tagStatement, err := e.db.PrepareBatch(ctx, fmt.Sprintf("INSERT INTO %s.%s", databaseName, DISTRIBUTED_TAG_ATTRIBUTES)) + if err != nil { + return fmt.Errorf("PrepareTagBatch:%w", err) + } + defer func() { _ = statement.Abort() + _ = tagStatement.Abort() }() metrics := map[string]usage.Metric{} @@ -144,6 +154,11 @@ func (e *clickhouseLogsExporter) pushLogsData(ctx context.Context, ld plog.Logs) resBytes, _ := json.Marshal(res.Attributes().AsRaw()) resources := attributesToSlice(res.Attributes(), true) + + err := addAttrsToTagStatement(tagStatement, "resource", resources) + if err != nil { + return err + } for j := 0; j < logs.ScopeLogs().Len(); j++ { rs := logs.ScopeLogs().At(j).LogRecords() for k := 0; k < rs.Len(); k++ { @@ -154,7 +169,7 @@ func (e *clickhouseLogsExporter) pushLogsData(ctx context.Context, ld plog.Logs) attrBytes, _ := json.Marshal(r.Attributes().AsRaw()) usage.AddMetric(metrics, tenant, 1, int64(len([]byte(r.Body().AsString()))+len(attrBytes)+len(resBytes))) - // set observedtimestamp as the default timestamp if timestamp is empty. + // set observedTimestamp as the default timestamp if timestamp is empty. ts := uint64(r.Timestamp()) ots := uint64(r.ObservedTimestamp()) if ots == 0 { @@ -165,12 +180,17 @@ func (e *clickhouseLogsExporter) pushLogsData(ctx context.Context, ld plog.Logs) } attributes := attributesToSlice(r.Attributes(), false) + + err := addAttrsToTagStatement(tagStatement, "tag", attributes) + if err != nil { + return err + } err = statement.Append( ts, ots, e.ksuid.String(), - r.TraceID().HexString(), - r.SpanID().HexString(), + utils.TraceIDToHexOrEmptyString(r.TraceID()), + utils.SpanIDToHexOrEmptyString(r.SpanID()), uint32(r.Flags()), r.SeverityText(), uint8(r.SeverityNumber()), @@ -210,6 +230,21 @@ func (e *clickhouseLogsExporter) pushLogsData(ctx context.Context, ld plog.Logs) for k, v := range metrics { stats.RecordWithTags(ctx, []tag.Mutator{tag.Upsert(usage.TagTenantKey, k)}, ExporterSigNozSentLogRecords.M(int64(v.Count)), ExporterSigNozSentLogRecordsBytes.M(int64(v.Size))) } + + // push tag attributes + tagWriteStart := time.Now() + err = tagStatement.Send() + stats.RecordWithTags(ctx, + []tag.Mutator{ + tag.Upsert(exporterKey, string(component.DataTypeLogs)), + tag.Upsert(tableKey, DISTRIBUTED_TAG_ATTRIBUTES), + }, + writeLatencyMillis.M(int64(time.Since(tagWriteStart).Milliseconds())), + ) + if err != nil { + return err + } + return err } } @@ -221,6 +256,7 @@ type attributesToSliceResponse struct { IntValues []int64 FloatKeys []string FloatValues []float64 + BoolKeys []string } func getStringifiedBody(body pcommon.Value) string { @@ -234,6 +270,66 @@ func getStringifiedBody(body pcommon.Value) string { return strBody } +func addAttrsToTagStatement(statement driver.Batch, tagType string, attrs attributesToSliceResponse) error { + for i, v := range attrs.StringKeys { + err := statement.Append( + time.Now(), + v, + tagType, + "string", + attrs.StringValues[i], + nil, + nil, + ) + if err != nil { + return fmt.Errorf("could not append string attribute to batch, err: %s", err) + } + } + for i, v := range attrs.IntKeys { + err := statement.Append( + time.Now(), + v, + tagType, + "int64", + nil, + attrs.IntValues[i], + nil, + ) + if err != nil { + return fmt.Errorf("could not append number attribute to batch, err: %s", err) + } + } + for i, v := range attrs.FloatKeys { + err := statement.Append( + time.Now(), + v, + tagType, + "float64", + nil, + nil, + attrs.FloatValues[i], + ) + if err != nil { + return fmt.Errorf("could not append number attribute to batch, err: %s", err) + } + } + for _, v := range attrs.BoolKeys { + err := statement.Append( + time.Now(), + v, + tagType, + "bool", + nil, + nil, + nil, + ) + if err != nil { + return fmt.Errorf("could not append bool attribute to batch, err: %s", err) + } + } + return nil +} + func attributesToSlice(attributes pcommon.Map, forceStringValues bool) (response attributesToSliceResponse) { attributes.Range(func(k string, v pcommon.Value) bool { if forceStringValues { @@ -248,6 +344,9 @@ func attributesToSlice(attributes pcommon.Map, forceStringValues bool) (response case pcommon.ValueTypeDouble: response.FloatKeys = append(response.FloatKeys, formatKey(k)) response.FloatValues = append(response.FloatValues, v.Double()) + case pcommon.ValueTypeBool: + // add boolValues in future if it is required + response.BoolKeys = append(response.BoolKeys, formatKey(k)) default: // store it as string response.StringKeys = append(response.StringKeys, formatKey(k)) response.StringValues = append(response.StringValues, v.AsString()) diff --git a/exporter/clickhouselogsexporter/factory.go b/exporter/clickhouselogsexporter/factory.go index fea93ff5..5e8e7e34 100644 --- a/exporter/clickhouselogsexporter/factory.go +++ b/exporter/clickhouselogsexporter/factory.go @@ -22,7 +22,7 @@ import ( "go.opencensus.io/stats/view" "go.opencensus.io/tag" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" ) @@ -43,7 +43,7 @@ var ( ) // NewFactory creates a factory for Elastic exporter. -func NewFactory() component.ExporterFactory { +func NewFactory() exporter.Factory { writeLatencyDistribution := view.Distribution(100, 250, 500, 750, 1000, 2000, 4000, 8000, 16000, 32000, 64000, 128000, 256000, 512000) writeLatencyView := &view.View{ @@ -56,19 +56,18 @@ func NewFactory() component.ExporterFactory { view.Register(writeLatencyView) - return component.NewExporterFactory( + return exporter.NewFactory( typeStr, createDefaultConfig, - component.WithLogsExporter(createLogsExporter, component.StabilityLevelBeta), + exporter.WithLogs(createLogsExporter, component.StabilityLevelBeta), ) } -func createDefaultConfig() component.ExporterConfig { +func createDefaultConfig() component.Config { return &Config{ - ExporterSettings: config.NewExporterSettings(component.NewID(typeStr)), - TimeoutSettings: exporterhelper.NewDefaultTimeoutSettings(), - QueueSettings: QueueSettings{QueueSize: exporterhelper.NewDefaultQueueSettings().QueueSize}, - RetrySettings: exporterhelper.NewDefaultRetrySettings(), + TimeoutSettings: exporterhelper.NewDefaultTimeoutSettings(), + QueueSettings: QueueSettings{QueueSize: exporterhelper.NewDefaultQueueSettings().QueueSize}, + RetrySettings: exporterhelper.NewDefaultRetrySettings(), } } @@ -76,9 +75,9 @@ func createDefaultConfig() component.ExporterConfig { // Logs are directly insert into clickhouse. func createLogsExporter( ctx context.Context, - set component.ExporterCreateSettings, - cfg component.ExporterConfig, -) (component.LogsExporter, error) { + set exporter.CreateSettings, + cfg component.Config, +) (exporter.Logs, error) { c := cfg.(*Config) exporter, err := newExporter(set.Logger, c) if err != nil { diff --git a/exporter/clickhouselogsexporter/factory_test.go b/exporter/clickhouselogsexporter/factory_test.go index 84dfc7b0..81acd2e4 100644 --- a/exporter/clickhouselogsexporter/factory_test.go +++ b/exporter/clickhouselogsexporter/factory_test.go @@ -21,6 +21,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/exporter/exportertest" ) func TestCreateDefaultConfig(t *testing.T) { @@ -47,7 +48,7 @@ func TestCreateDefaultConfig(t *testing.T) { func TestFactory_CreateLogsExporter_Fail(t *testing.T) { factory := NewFactory() cfg := factory.CreateDefaultConfig() - params := componenttest.NewNopExporterCreateSettings() + params := exportertest.NewNopCreateSettings() _, err := factory.CreateLogsExporter(context.Background(), params, cfg) require.Error(t, err, "expected an error when creating a logs exporter") } diff --git a/exporter/clickhouselogsexporter/migrations/000006_tag_attributes.down.sql b/exporter/clickhouselogsexporter/migrations/000006_tag_attributes.down.sql new file mode 100644 index 00000000..42982835 --- /dev/null +++ b/exporter/clickhouselogsexporter/migrations/000006_tag_attributes.down.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS signoz_logs.distributed_tag_attributes ON CLUSTER cluster; +DROP TABLE IF EXISTS signoz_logs.tag_attributes ON CLUSTER cluster; \ No newline at end of file diff --git a/exporter/clickhouselogsexporter/migrations/000006_tag_attributes.up.sql b/exporter/clickhouselogsexporter/migrations/000006_tag_attributes.up.sql new file mode 100644 index 00000000..8fd94c38 --- /dev/null +++ b/exporter/clickhouselogsexporter/migrations/000006_tag_attributes.up.sql @@ -0,0 +1,15 @@ +CREATE TABLE IF NOT EXISTS signoz_logs.tag_attributes ON CLUSTER cluster ( + timestamp DateTime CODEC(ZSTD(1)), + tagKey LowCardinality(String) CODEC(ZSTD(1)), + tagType Enum('tag', 'resource') CODEC(ZSTD(1)), + tagDataType Enum('string', 'bool', 'int64', 'float64') CODEC(ZSTD(1)), + stringTagValue String CODEC(ZSTD(1)), + int64TagValue Nullable(Int64) CODEC(ZSTD(1)), + float64TagValue Nullable(Float64) CODEC(ZSTD(1)) +) ENGINE ReplacingMergeTree +ORDER BY (tagKey, tagType, tagDataType, stringTagValue, int64TagValue, float64TagValue) +TTL toDateTime(timestamp) + INTERVAL 172800 SECOND DELETE +SETTINGS ttl_only_drop_parts = 1, allow_nullable_key = 1; + +CREATE TABLE IF NOT EXISTS signoz_logs.distributed_tag_attributes ON CLUSTER cluster AS signoz_logs.tag_attributes +ENGINE = Distributed("cluster", "signoz_logs", tag_attributes, rand()); diff --git a/exporter/clickhouselogsexporter/testdata/config.yaml b/exporter/clickhouselogsexporter/testdata/config.yaml index dd20ceee..1e1a9e82 100644 --- a/exporter/clickhouselogsexporter/testdata/config.yaml +++ b/exporter/clickhouselogsexporter/testdata/config.yaml @@ -15,6 +15,8 @@ exporters: initial_interval: 5s max_interval: 30s max_elapsed_time: 300s + randomization_factor: 0.7 + multiplier: 1.3 sending_queue: queue_size: 100 diff --git a/exporter/clickhousemetricsexporter/base/base.go b/exporter/clickhousemetricsexporter/base/base.go index 0a3cd2f1..693dd44a 100644 --- a/exporter/clickhousemetricsexporter/base/base.go +++ b/exporter/clickhousemetricsexporter/base/base.go @@ -23,6 +23,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/model" + "go.opentelemetry.io/collector/pdata/pmetric" "github.com/prometheus/prometheus/prompb" ) @@ -34,7 +35,7 @@ type Storage interface { // Read(context.Context, []Query) (*prompb.ReadResponse, error) // Write puts data into storage. - Write(context.Context, *prompb.WriteRequest) error + Write(context.Context, *prompb.WriteRequest, map[string]pmetric.AggregationTemporality) error // Returns the DB conn. GetDBConn() interface{} diff --git a/exporter/clickhousemetricsexporter/clickhouse.go b/exporter/clickhousemetricsexporter/clickhouse.go index f2cc9097..6a1de323 100644 --- a/exporter/clickhousemetricsexporter/clickhouse.go +++ b/exporter/clickhousemetricsexporter/clickhouse.go @@ -31,6 +31,8 @@ import ( "go.opencensus.io/stats" "go.opencensus.io/tag" "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/pdata/pmetric" + semconv "go.opentelemetry.io/collector/semconv/v1.13.0" "github.com/SigNoz/signoz-otel-collector/exporter/clickhousemetricsexporter/base" "github.com/SigNoz/signoz-otel-collector/exporter/clickhousemetricsexporter/utils/timeseries" @@ -39,14 +41,18 @@ import ( ) const ( - namespace = "promhouse" - subsystem = "clickhouse" - nameLabel = "__name__" - CLUSTER = "cluster" - DISTRIBUTED_TIME_SERIES_TABLE = "distributed_time_series_v2" - DISTRIBUTED_SAMPLES_TABLE = "distributed_samples_v2" - TIME_SERIES_TABLE = "time_series_v2" - SAMPLES_TABLE = "samples_v2" + namespace = "promhouse" + subsystem = "clickhouse" + nameLabel = "__name__" + CLUSTER = "cluster" + DISTRIBUTED_TIME_SERIES_TABLE = "distributed_time_series_v2" + DISTRIBUTED_TIME_SERIES_TABLE_V3 = "distributed_time_series_v3" + DISTRIBUTED_SAMPLES_TABLE = "distributed_samples_v2" + TIME_SERIES_TABLE = "time_series_v2" + TIME_SERIES_TABLE_V3 = "time_series_v3" + SAMPLES_TABLE = "samples_v2" + temporalityLabel = "__temporality__" + envLabel = "env" ) // clickHouse implements storage interface for the ClickHouse. @@ -60,7 +66,9 @@ type clickHouse struct { // Maintains the lookup map for fingerprints that are // written to time series table. This map is used to eliminate the // unnecessary writes to table for the records that already exist. - timeSeries map[uint64]struct{} + timeSeries map[uint64]struct{} + prevShardCount uint64 + watcherInterval time.Duration mWrittenTimeSeries prometheus.Counter } @@ -70,6 +78,7 @@ type ClickHouseParams struct { DropDatabase bool MaxOpenConns int MaxTimeSeriesInQuery int + WatcherInterval time.Duration } func NewClickHouse(params *ClickHouseParams) (base.Storage, error) { @@ -135,6 +144,35 @@ func NewClickHouse(params *ClickHouseParams) (base.Storage, error) { queries = append(queries, fmt.Sprintf(` ALTER TABLE %s.%s ON CLUSTER %s MODIFY SETTING ttl_only_drop_parts = 1;`, database, TIME_SERIES_TABLE, CLUSTER)) + // Add temporality column to time_series table + queries = append(queries, fmt.Sprintf(` + ALTER TABLE %s.%s ON CLUSTER %s ADD COLUMN IF NOT EXISTS temporality LowCardinality(String) DEFAULT 'Unspecified' CODEC(ZSTD(5))`, database, TIME_SERIES_TABLE, CLUSTER)) + + queries = append(queries, fmt.Sprintf(` + ALTER TABLE %s.%s ON CLUSTER %s ADD COLUMN IF NOT EXISTS temporality LowCardinality(String) DEFAULT 'Unspecified' CODEC(ZSTD(5))`, database, DISTRIBUTED_TIME_SERIES_TABLE, CLUSTER)) + + // Add set index on temporality column + queries = append(queries, fmt.Sprintf(` + ALTER TABLE %s.%s ON CLUSTER %s ADD INDEX IF NOT EXISTS temporality_index temporality TYPE SET(3) GRANULARITY 1`, database, TIME_SERIES_TABLE, CLUSTER)) + + // Create a new table + queries = append(queries, fmt.Sprintf(` + CREATE TABLE IF NOT EXISTS %s.%s ON CLUSTER %s ( + env LowCardinality(String) DEFAULT 'default', + temporality LowCardinality(String) DEFAULT 'Unspecified', + metric_name LowCardinality(String), + fingerprint UInt64 CODEC(Delta, ZSTD), + timestamp_ms Int64 CODEC(Delta, ZSTD), + labels String CODEC(ZSTD(5)) + ) + ENGINE = ReplacingMergeTree + PARTITION BY toDate(timestamp_ms / 1000) + ORDER BY (env, temporality, metric_name, fingerprint);`, database, TIME_SERIES_TABLE_V3, CLUSTER)) + + // Create a new distributed table + queries = append(queries, fmt.Sprintf(` + CREATE TABLE IF NOT EXISTS %s.%s ON CLUSTER %s AS %s.%s ENGINE = Distributed("%s", %s, %s, cityHash64(env, temporality, metric_name, fingerprint));`, database, DISTRIBUTED_TIME_SERIES_TABLE_V3, CLUSTER, database, TIME_SERIES_TABLE_V3, CLUSTER, database, TIME_SERIES_TABLE_V3)) + options := &clickhouse.Options{ Addr: []string{dsnURL.Host}, } @@ -161,6 +199,15 @@ func NewClickHouse(params *ClickHouseParams) (base.Storage, error) { } } + // TODO(srikanthccv): Remove this once we have a better way to handle data and last write + removeTTL := fmt.Sprintf(` + ALTER TABLE %s.%s ON CLUSTER %s REMOVE TTL;`, database, TIME_SERIES_TABLE, CLUSTER) + if err = conn.Exec(context.Background(), removeTTL); err != nil { + if !strings.Contains(err.Error(), "Table doesn't have any table TTL expression, cannot remove.") { + return nil, err + } + } + ch := &clickHouse{ conn: conn, l: l, @@ -175,60 +222,48 @@ func NewClickHouse(params *ClickHouseParams) (base.Storage, error) { Name: "written_time_series", Help: "Number of written time series.", }), + watcherInterval: params.WatcherInterval, } go func() { ctx := pprof.WithLabels(context.TODO(), pprof.Labels("component", "clickhouse_reloader")) pprof.SetGoroutineLabels(ctx) - ch.runTimeSeriesReloader(ctx) + ch.shardCountWatcher(ctx) }() return ch, nil } -// runTimeSeriesReloader periodically queries the time series table -// and updates the timeSeries lookup map with new fingerprints. -// One might wonder why is there a need to reload the data from clickhouse -// when it just suffices to keep track of the fingerprint for the incoming -// write requests. This is because there could be multiple instance of -// metric exporters and they would only contain partial info with latter -// approach. -func (ch *clickHouse) runTimeSeriesReloader(ctx context.Context) { - ticker := time.NewTicker(5 * time.Second) +func (ch *clickHouse) shardCountWatcher(ctx context.Context) { + ticker := time.NewTicker(ch.watcherInterval) defer ticker.Stop() - q := fmt.Sprintf(`SELECT DISTINCT fingerprint FROM %s.%s`, ch.database, DISTRIBUTED_TIME_SERIES_TABLE) + q := `SELECT count() FROM system.clusters WHERE cluster='cluster'` for { - ch.timeSeriesRW.RLock() - timeSeries := make(map[uint64]struct{}, len(ch.timeSeries)) - ch.timeSeriesRW.RUnlock() err := func() error { ch.l.Debug(q) - rows, err := ch.conn.Query(ctx, q) + row := ch.conn.QueryRow(ctx, q) + if row.Err() != nil { + return row.Err() + } + + var shardCount uint64 + err := row.Scan(&shardCount) if err != nil { return err } - defer rows.Close() - var f uint64 - for rows.Next() { - if err = rows.Scan(&f); err != nil { - return err - } - timeSeries[f] = struct{}{} - } - return rows.Err() - }() - if err == nil { ch.timeSeriesRW.Lock() - n := len(timeSeries) - len(ch.timeSeries) - for f, m := range timeSeries { - ch.timeSeries[f] = m + if ch.prevShardCount != shardCount { + ch.l.Infof("Shard count changed from %d to %d. Resetting time series map.", ch.prevShardCount, shardCount) + ch.timeSeries = make(map[uint64]struct{}) } + ch.prevShardCount = shardCount ch.timeSeriesRW.Unlock() - ch.l.Debugf("Loaded %d existing time series, %d were unknown to this instance.", len(timeSeries), n) - } else { + return nil + }() + if err != nil { ch.l.Error(err) } @@ -253,14 +288,15 @@ func (ch *clickHouse) GetDBConn() interface{} { return ch.conn } -func (ch *clickHouse) Write(ctx context.Context, data *prompb.WriteRequest) error { +func (ch *clickHouse) Write(ctx context.Context, data *prompb.WriteRequest, metricNameToTemporality map[string]pmetric.AggregationTemporality) error { // calculate fingerprints, map them to time series fingerprints := make([]uint64, len(data.Timeseries)) timeSeries := make(map[uint64][]*prompb.Label, len(data.Timeseries)) - fingerprintToName := make(map[uint64]string) + fingerprintToName := make(map[uint64]map[string]string) for i, ts := range data.Timeseries { var metricName string + var env string = "default" labelsOverridden := make(map[string]*prompb.Label) for _, label := range ts.Labels { labelsOverridden[label.Name] = &prompb.Label{ @@ -270,16 +306,32 @@ func (ch *clickHouse) Write(ctx context.Context, data *prompb.WriteRequest) erro if label.Name == nameLabel { metricName = label.Value } + if label.Name == semconv.AttributeDeploymentEnvironment || label.Name == sanitize(semconv.AttributeDeploymentEnvironment) { + env = label.Value + } } var labels []*prompb.Label for _, l := range labelsOverridden { labels = append(labels, l) } + // add temporality label + if metricName != "" { + if t, ok := metricNameToTemporality[metricName]; ok { + labels = append(labels, &prompb.Label{ + Name: temporalityLabel, + Value: t.String(), + }) + } + } timeseries.SortLabels(labels) f := timeseries.Fingerprint(labels) fingerprints[i] = f timeSeries[f] = labels - fingerprintToName[f] = metricName + if _, ok := fingerprintToName[f]; !ok { + fingerprintToName[f] = make(map[string]string) + } + fingerprintToName[f][nameLabel] = metricName + fingerprintToName[f][env] = env } if len(fingerprints) != len(timeSeries) { ch.l.Debugf("got %d fingerprints, but only %d of them were unique time series", len(fingerprints), len(timeSeries)) @@ -304,7 +356,7 @@ func (ch *clickHouse) Write(ctx context.Context, data *prompb.WriteRequest) erro return err } - statement, err := ch.conn.PrepareBatch(ctx, fmt.Sprintf("INSERT INTO %s.%s (metric_name, timestamp_ms, fingerprint, labels) VALUES (?, ?, ?, ?)", ch.database, DISTRIBUTED_TIME_SERIES_TABLE)) + statement, err := ch.conn.PrepareBatch(ctx, fmt.Sprintf("INSERT INTO %s.%s (metric_name, temporality, timestamp_ms, fingerprint, labels) VALUES (?, ?, ?, ?)", ch.database, DISTRIBUTED_TIME_SERIES_TABLE)) if err != nil { return err } @@ -312,7 +364,8 @@ func (ch *clickHouse) Write(ctx context.Context, data *prompb.WriteRequest) erro for fingerprint, labels := range newTimeSeries { encodedLabels := string(marshalLabels(labels, make([]byte, 0, 128))) err = statement.Append( - fingerprintToName[fingerprint], + fingerprintToName[fingerprint][nameLabel], + metricNameToTemporality[fingerprintToName[fingerprint][nameLabel]].String(), timestamp, fingerprint, encodedLabels, @@ -336,6 +389,48 @@ func (ch *clickHouse) Write(ctx context.Context, data *prompb.WriteRequest) erro return err } + // Write to time_series_v3 table + err = func() error { + ctx := context.Background() + err := ch.conn.Exec(ctx, `SET allow_experimental_object_type = 1`) + if err != nil { + return err + } + + statement, err := ch.conn.PrepareBatch(ctx, fmt.Sprintf("INSERT INTO %s.%s (env, temporality, metric_name, fingerprint, timestamp_ms, labels) VALUES (?, ?, ?, ?, ?, ?)", ch.database, TIME_SERIES_TABLE_V3)) + if err != nil { + return err + } + timestamp := model.Now().Time().UnixMilli() + for fingerprint, labels := range newTimeSeries { + encodedLabels := string(marshalLabels(labels, make([]byte, 0, 128))) + err = statement.Append( + fingerprintToName[fingerprint][envLabel], + metricNameToTemporality[fingerprintToName[fingerprint][nameLabel]].String(), + fingerprintToName[fingerprint][nameLabel], + fingerprint, + timestamp, + encodedLabels, + ) + if err != nil { + return err + } + } + + start := time.Now() + err = statement.Send() + ctx, _ = tag.New(ctx, + tag.Upsert(exporterKey, string(component.DataTypeMetrics)), + tag.Upsert(tableKey, TIME_SERIES_TABLE_V3), + ) + stats.Record(ctx, writeLatencyMillis.M(int64(time.Since(start).Milliseconds()))) + return err + }() + + if err != nil { + return err + } + metrics := map[string]usage.Metric{} err = func() error { ctx := context.Background() @@ -367,7 +462,7 @@ func (ch *clickHouse) Write(ctx context.Context, data *prompb.WriteRequest) erro } err = statement.Append( - fingerprintToName[fingerprint], + fingerprintToName[fingerprint][nameLabel], fingerprint, s.Timestamp, s.Value, diff --git a/exporter/clickhousemetricsexporter/config.go b/exporter/clickhousemetricsexporter/config.go index 3460021d..75d5f6e1 100644 --- a/exporter/clickhousemetricsexporter/config.go +++ b/exporter/clickhousemetricsexporter/config.go @@ -16,17 +16,16 @@ package clickhousemetricsexporter import ( "fmt" + "time" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/exporter/exporterhelper" ) // Config defines configuration for Remote Write exporter. type Config struct { - config.ExporterSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct exporterhelper.TimeoutSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct. exporterhelper.RetrySettings `mapstructure:"retry_on_failure"` // QueueConfig allows users to fine tune the queues @@ -45,6 +44,8 @@ type Config struct { // "Enabled" - A boolean field to enable/disable this option. Default is `false`. // If enabled, all the resource attributes will be converted to metric labels by default. ResourceToTelemetrySettings resourcetotelemetry.Settings `mapstructure:"resource_to_telemetry_conversion"` + + WatcherInterval time.Duration `mapstructure:"watcher_interval"` } // RemoteWriteQueue allows to configure the remote write queue. @@ -62,7 +63,7 @@ type RemoteWriteQueue struct { NumConsumers int `mapstructure:"num_consumers"` } -var _ component.ExporterConfig = (*Config)(nil) +var _ component.Config = (*Config)(nil) // Validate checks if the exporter configuration is valid func (cfg *Config) Validate() error { diff --git a/exporter/clickhousemetricsexporter/config_test.go b/exporter/clickhousemetricsexporter/config_test.go index 49b00951..c88305d4 100644 --- a/exporter/clickhousemetricsexporter/config_test.go +++ b/exporter/clickhousemetricsexporter/config_test.go @@ -22,24 +22,23 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/configopaque" "go.opentelemetry.io/collector/config/configtls" "go.opentelemetry.io/collector/exporter/exporterhelper" - "go.opentelemetry.io/collector/service/servicetest" + "go.opentelemetry.io/collector/otelcol/otelcoltest" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry" ) // TestLoadConfig checks whether yaml configuration can be loaded correctly func Test_loadConfig(t *testing.T) { - factories, err := componenttest.NopFactories() + factories, err := otelcoltest.NopFactories() assert.NoError(t, err) factory := NewFactory() factories.Exporters[typeStr] = factory - cfg, err := servicetest.LoadConfigAndValidate(path.Join(".", "testdata", "config.yaml"), factories) + cfg, err := otelcoltest.LoadConfigAndValidate(path.Join(".", "testdata", "config.yaml"), factories) require.NoError(t, err) require.NotNil(t, cfg) @@ -52,8 +51,7 @@ func Test_loadConfig(t *testing.T) { e1 := cfg.Exporters[component.NewIDWithName(typeStr, "2")] assert.Equal(t, e1, &Config{ - ExporterSettings: config.NewExporterSettings(component.NewIDWithName(typeStr, "2")), - TimeoutSettings: exporterhelper.NewDefaultTimeoutSettings(), + TimeoutSettings: exporterhelper.NewDefaultTimeoutSettings(), RetrySettings: exporterhelper.RetrySettings{ Enabled: true, InitialInterval: 10 * time.Second, @@ -78,41 +76,43 @@ func Test_loadConfig(t *testing.T) { ReadBufferSize: 0, WriteBufferSize: 512 * 1024, Timeout: 5 * time.Second, - Headers: map[string]string{ + Headers: map[string]configopaque.String{ "Prometheus-Remote-Write-Version": "0.1.0", - "X-Scope-OrgID": "234"}, + "X-Scope-OrgID": "234", + }, }, ResourceToTelemetrySettings: resourcetotelemetry.Settings{Enabled: true}, + WatcherInterval: 30 * time.Second, }) } func TestNegativeQueueSize(t *testing.T) { - factories, err := componenttest.NopFactories() + factories, err := otelcoltest.NopFactories() assert.NoError(t, err) factory := NewFactory() factories.Exporters[typeStr] = factory - _, err = servicetest.LoadConfigAndValidate(path.Join(".", "testdata", "negative_queue_size.yaml"), factories) + _, err = otelcoltest.LoadConfigAndValidate(path.Join(".", "testdata", "negative_queue_size.yaml"), factories) assert.Error(t, err) } func TestNegativeNumConsumers(t *testing.T) { - factories, err := componenttest.NopFactories() + factories, err := otelcoltest.NopFactories() assert.NoError(t, err) factory := NewFactory() factories.Exporters[typeStr] = factory - _, err = servicetest.LoadConfigAndValidate(path.Join(".", "testdata", "negative_num_consumers.yaml"), factories) + _, err = otelcoltest.LoadConfigAndValidate(path.Join(".", "testdata", "negative_num_consumers.yaml"), factories) assert.Error(t, err) } func TestDisabledQueue(t *testing.T) { - factories, err := componenttest.NopFactories() + factories, err := otelcoltest.NopFactories() assert.NoError(t, err) factory := NewFactory() factories.Exporters[typeStr] = factory - cfg, err := servicetest.LoadConfigAndValidate(path.Join(".", "testdata", "disabled_queue.yaml"), factories) + cfg, err := otelcoltest.LoadConfigAndValidate(path.Join(".", "testdata", "disabled_queue.yaml"), factories) assert.NoError(t, err) assert.False(t, cfg.Exporters[component.NewID(typeStr)].(*Config).RemoteWriteQueue.Enabled) } diff --git a/exporter/clickhousemetricsexporter/exporter.go b/exporter/clickhousemetricsexporter/exporter.go index c78b12d9..45039c0f 100644 --- a/exporter/clickhousemetricsexporter/exporter.go +++ b/exporter/clickhousemetricsexporter/exporter.go @@ -29,7 +29,6 @@ import ( "github.com/pkg/errors" "go.opencensus.io/stats/view" "go.uber.org/multierr" - "go.uber.org/zap" "github.com/prometheus/prometheus/prompb" @@ -38,6 +37,7 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/consumer/consumererror" + "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" ) @@ -46,23 +46,25 @@ const maxBatchByteSize = 3000000 // PrwExporter converts OTLP metrics to Prometheus remote write TimeSeries and sends them to a remote endpoint. type PrwExporter struct { - namespace string - externalLabels map[string]string - endpointURL *url.URL - client *http.Client - wg *sync.WaitGroup - closeChan chan struct{} - concurrency int - userAgentHeader string - clientSettings *confighttp.HTTPClientSettings - settings component.TelemetrySettings - ch base.Storage - usageCollector *usage.UsageCollector + namespace string + externalLabels map[string]string + endpointURL *url.URL + client *http.Client + wg *sync.WaitGroup + closeChan chan struct{} + concurrency int + userAgentHeader string + clientSettings *confighttp.HTTPClientSettings + settings component.TelemetrySettings + ch base.Storage + usageCollector *usage.UsageCollector + metricNameToTemporality map[string]pmetric.AggregationTemporality + mux *sync.Mutex } // NewPrwExporter initializes a new PrwExporter instance and sets fields accordingly. // client parameter cannot be nil. -func NewPrwExporter(cfg *Config, set component.ExporterCreateSettings) (*PrwExporter, error) { +func NewPrwExporter(cfg *Config, set exporter.CreateSettings) (*PrwExporter, error) { sanitizedLabels, err := validateAndSanitizeExternalLabels(cfg.ExternalLabels) if err != nil { @@ -81,6 +83,7 @@ func NewPrwExporter(cfg *Config, set component.ExporterCreateSettings) (*PrwExpo DropDatabase: false, MaxOpenConns: 75, MaxTimeSeriesInQuery: 50, + WatcherInterval: cfg.WatcherInterval, } ch, err := NewClickHouse(params) if err != nil { @@ -105,17 +108,19 @@ func NewPrwExporter(cfg *Config, set component.ExporterCreateSettings) (*PrwExpo } return &PrwExporter{ - namespace: cfg.Namespace, - externalLabels: sanitizedLabels, - endpointURL: endpointURL, - wg: new(sync.WaitGroup), - closeChan: make(chan struct{}), - userAgentHeader: userAgentHeader, - concurrency: cfg.RemoteWriteQueue.NumConsumers, - clientSettings: &cfg.HTTPClientSettings, - settings: set.TelemetrySettings, - ch: ch, - usageCollector: collector, + namespace: cfg.Namespace, + externalLabels: sanitizedLabels, + endpointURL: endpointURL, + wg: new(sync.WaitGroup), + closeChan: make(chan struct{}), + userAgentHeader: userAgentHeader, + concurrency: cfg.RemoteWriteQueue.NumConsumers, + clientSettings: &cfg.HTTPClientSettings, + settings: set.TelemetrySettings, + ch: ch, + usageCollector: collector, + metricNameToTemporality: make(map[string]pmetric.AggregationTemporality), + mux: new(sync.Mutex), }, nil } @@ -165,37 +170,31 @@ func (prwe *PrwExporter) PushMetrics(ctx context.Context, md pmetric.Metrics) er // TODO: decide if scope information should be exported as labels for k := 0; k < metricSlice.Len(); k++ { metric := metricSlice.At(k) + var temporality pmetric.AggregationTemporality - // check for valid type and temporality combination and for matching data field and type - if ok := validateMetrics(metric); !ok { - dropped++ - errs = multierr.Append(errs, consumererror.NewPermanent(errors.New("invalid temporality and type combination"))) - serviceName, found := resource.Attributes().Get("service.name") - if !found { - serviceName = pcommon.NewValueStr("") - } - metricType := metric.Type() - var numDataPoints int - var temporality pmetric.AggregationTemporality - switch metricType { - case pmetric.MetricTypeGauge: - numDataPoints = metric.Gauge().DataPoints().Len() - case pmetric.MetricTypeSum: - numDataPoints = metric.Sum().DataPoints().Len() - temporality = metric.Sum().AggregationTemporality() - case pmetric.MetricTypeHistogram: - numDataPoints = metric.Histogram().DataPoints().Len() - temporality = metric.Histogram().AggregationTemporality() - case pmetric.MetricTypeSummary: - numDataPoints = metric.Summary().DataPoints().Len() - default: - } - zap.S().Errorf("dropped %d number of metric data points of type %d with temporality %d for a service %s", numDataPoints, metricType, temporality, serviceName.AsString()) - continue + metricType := metric.Type() + + switch metricType { + case pmetric.MetricTypeGauge: + temporality = pmetric.AggregationTemporalityUnspecified + case pmetric.MetricTypeSum: + temporality = metric.Sum().AggregationTemporality() + case pmetric.MetricTypeHistogram: + temporality = metric.Histogram().AggregationTemporality() + case pmetric.MetricTypeSummary: + temporality = pmetric.AggregationTemporalityUnspecified + default: + } + prwe.metricNameToTemporality[getPromMetricName(metric, prwe.namespace)] = temporality + + if metricType == pmetric.MetricTypeHistogram || metricType == pmetric.MetricTypeSummary { + prwe.metricNameToTemporality[getPromMetricName(metric, prwe.namespace)+bucketStr] = temporality + prwe.metricNameToTemporality[getPromMetricName(metric, prwe.namespace)+countStr] = temporality + prwe.metricNameToTemporality[getPromMetricName(metric, prwe.namespace)+sumStr] = temporality } // handle individual metric based on type - switch metric.Type() { + switch metricType { case pmetric.MetricTypeGauge: dataPoints := metric.Gauge().DataPoints() if err := prwe.addNumberDataPointSlice(dataPoints, tsMap, resource, metric); err != nil { @@ -278,6 +277,13 @@ func (prwe *PrwExporter) addNumberDataPointSlice(dataPoints pmetric.NumberDataPo // export sends a Snappy-compressed WriteRequest containing TimeSeries to a remote write endpoint in order func (prwe *PrwExporter) export(ctx context.Context, tsMap map[string]*prompb.TimeSeries) []error { + prwe.mux.Lock() + // make a copy of metricNameToTemporality + metricNameToTemporality := make(map[string]pmetric.AggregationTemporality) + for k, v := range prwe.metricNameToTemporality { + metricNameToTemporality[k] = v + } + prwe.mux.Unlock() var errs []error // Calls the helper function to convert and batch the TsMap to the desired format requests, err := batchTimeSeries(tsMap, maxBatchByteSize) @@ -305,7 +311,7 @@ func (prwe *PrwExporter) export(ctx context.Context, tsMap map[string]*prompb.Ti defer wg.Done() for request := range input { - err := prwe.ch.Write(ctx, request) + err := prwe.ch.Write(ctx, request, metricNameToTemporality) if err != nil { mu.Lock() errs = append(errs, err) diff --git a/exporter/clickhousemetricsexporter/exporter_test.go b/exporter/clickhousemetricsexporter/exporter_test.go index a53a2bc0..71790249 100644 --- a/exporter/clickhousemetricsexporter/exporter_test.go +++ b/exporter/clickhousemetricsexporter/exporter_test.go @@ -31,10 +31,11 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/config/configtls" + "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" + "go.opentelemetry.io/collector/exporter/exportertest" "go.opentelemetry.io/collector/pdata/pmetric" "github.com/SigNoz/signoz-otel-collector/exporter/clickhousemetricsexporter/testdata" @@ -44,7 +45,6 @@ import ( // FIXME(srikanthccv): Enable the tests once this issue is fixed: https://github.com/SigNoz/signoz-otel-collector/issues/65 func skip_Test_NewPRWExporter(t *testing.T) { cfg := &Config{ - ExporterSettings: config.NewExporterSettings(component.NewID(typeStr)), TimeoutSettings: exporterhelper.TimeoutSettings{}, RetrySettings: exporterhelper.RetrySettings{}, Namespace: "", @@ -55,7 +55,7 @@ func skip_Test_NewPRWExporter(t *testing.T) { Description: "OpenTelemetry Collector", Version: "1.0", } - set := componenttest.NewNopExporterCreateSettings() + set := exportertest.NewNopCreateSettings() set.BuildInfo = buildInfo tests := []struct { @@ -66,7 +66,7 @@ func skip_Test_NewPRWExporter(t *testing.T) { concurrency int externalLabels map[string]string returnErrorOnCreate bool - set component.ExporterCreateSettings + set exporter.CreateSettings }{ { name: "invalid_URL", @@ -137,17 +137,16 @@ func skip_Test_NewPRWExporter(t *testing.T) { // FIXME(srikanthccv): Enable the tests once this issue is fixed: https://github.com/SigNoz/signoz-otel-collector/issues/65 func skip_Test_Start(t *testing.T) { cfg := &Config{ - ExporterSettings: config.NewExporterSettings(component.NewID(typeStr)), - TimeoutSettings: exporterhelper.TimeoutSettings{}, - RetrySettings: exporterhelper.RetrySettings{}, - Namespace: "", - ExternalLabels: map[string]string{}, + TimeoutSettings: exporterhelper.TimeoutSettings{}, + RetrySettings: exporterhelper.RetrySettings{}, + Namespace: "", + ExternalLabels: map[string]string{}, } buildInfo := component.BuildInfo{ Description: "OpenTelemetry Collector", Version: "1.0", } - set := componenttest.NewNopExporterCreateSettings() + set := exportertest.NewNopCreateSettings() set.BuildInfo = buildInfo tests := []struct { name string @@ -156,7 +155,7 @@ func skip_Test_Start(t *testing.T) { concurrency int externalLabels map[string]string returnErrorOnStartUp bool - set component.ExporterCreateSettings + set exporter.CreateSettings endpoint string clientSettings confighttp.HTTPClientSettings }{ @@ -340,7 +339,7 @@ func runExportPipeline(ts *prompb.TimeSeries, endpoint *url.URL) []error { Description: "OpenTelemetry Collector", Version: "1.0", } - set := componenttest.NewNopExporterCreateSettings() + set := exportertest.NewNopCreateSettings() set.BuildInfo = buildInfo // after this, instantiate a CortexExporter with the current HTTP client and endpoint set to passed in endpoint prwe, err := NewPrwExporter(cfg, set) @@ -618,8 +617,7 @@ func temp_dis_Test_PushMetrics(t *testing.T) { defer server.Close() cfg := &Config{ - ExporterSettings: config.NewExporterSettings(component.NewID(typeStr)), - Namespace: "", + Namespace: "", HTTPClientSettings: confighttp.HTTPClientSettings{ Endpoint: server.URL, // We almost read 0 bytes, so no need to tune ReadBufferSize. @@ -635,7 +633,7 @@ func temp_dis_Test_PushMetrics(t *testing.T) { Description: "OpenTelemetry Collector", Version: "1.0", } - set := componenttest.NewNopExporterCreateSettings() + set := exportertest.NewNopCreateSettings() set.BuildInfo = buildInfo prwe, nErr := NewPrwExporter(cfg, set) require.NoError(t, nErr) diff --git a/exporter/clickhousemetricsexporter/factory.go b/exporter/clickhousemetricsexporter/factory.go index cbfdd101..ce6a7f40 100644 --- a/exporter/clickhousemetricsexporter/factory.go +++ b/exporter/clickhousemetricsexporter/factory.go @@ -24,8 +24,9 @@ import ( "go.opencensus.io/stats/view" "go.opencensus.io/tag" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/configopaque" + "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" ) @@ -41,7 +42,7 @@ var ( ) // NewFactory creates a new Prometheus Remote Write exporter. -func NewFactory() component.ExporterFactory { +func NewFactory() exporter.Factory { writeLatencyDistribution := view.Distribution(100, 250, 500, 750, 1000, 2000, 4000, 8000, 16000, 32000, 64000, 128000, 256000, 512000) @@ -54,14 +55,14 @@ func NewFactory() component.ExporterFactory { } view.Register(writeLatencyView) - return component.NewExporterFactory( + return exporter.NewFactory( typeStr, createDefaultConfig, - component.WithMetricsExporter(createMetricsExporter, component.StabilityLevelUndefined)) + exporter.WithMetrics(createMetricsExporter, component.StabilityLevelUndefined)) } -func createMetricsExporter(ctx context.Context, set component.ExporterCreateSettings, - cfg component.ExporterConfig) (component.MetricsExporter, error) { +func createMetricsExporter(ctx context.Context, set exporter.CreateSettings, + cfg component.Config) (exporter.Metrics, error) { prwCfg, ok := cfg.(*Config) if !ok { @@ -102,12 +103,11 @@ func createMetricsExporter(ctx context.Context, set component.ExporterCreateSett return resourcetotelemetry.WrapMetricsExporter(prwCfg.ResourceToTelemetrySettings, exporter), nil } -func createDefaultConfig() component.ExporterConfig { +func createDefaultConfig() component.Config { return &Config{ - ExporterSettings: config.NewExporterSettings(component.NewID(typeStr)), - Namespace: "", - ExternalLabels: map[string]string{}, - TimeoutSettings: exporterhelper.NewDefaultTimeoutSettings(), + Namespace: "", + ExternalLabels: map[string]string{}, + TimeoutSettings: exporterhelper.NewDefaultTimeoutSettings(), RetrySettings: exporterhelper.RetrySettings{ Enabled: true, InitialInterval: 50 * time.Millisecond, @@ -120,7 +120,7 @@ func createDefaultConfig() component.ExporterConfig { ReadBufferSize: 0, WriteBufferSize: 512 * 1024, Timeout: exporterhelper.NewDefaultTimeoutSettings().Timeout, - Headers: map[string]string{}, + Headers: map[string]configopaque.String{}, }, // TODO(jbd): Adjust the default queue size. RemoteWriteQueue: RemoteWriteQueue{ @@ -128,5 +128,6 @@ func createDefaultConfig() component.ExporterConfig { QueueSize: 10000, NumConsumers: 5, }, + WatcherInterval: 30 * time.Second, } } diff --git a/exporter/clickhousemetricsexporter/factory_test.go b/exporter/clickhousemetricsexporter/factory_test.go index 5b7068ca..87c6024d 100644 --- a/exporter/clickhousemetricsexporter/factory_test.go +++ b/exporter/clickhousemetricsexporter/factory_test.go @@ -23,6 +23,8 @@ import ( "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/config/configtls" + "go.opentelemetry.io/collector/exporter" + "go.opentelemetry.io/collector/exporter/exportertest" ) // Tests whether or not the default Exporter factory can instantiate a properly interfaced Exporter with default conditions @@ -50,32 +52,32 @@ func skip_Test_createMetricsExporter(t *testing.T) { } tests := []struct { name string - cfg component.ExporterConfig - set component.ExporterCreateSettings + cfg component.Config + set exporter.CreateSettings returnErrorOnCreate bool returnErrorOnStart bool }{ {"success_case", createDefaultConfig(), - componenttest.NewNopExporterCreateSettings(), + exportertest.NewNopCreateSettings(), false, false, }, {"fail_case", nil, - componenttest.NewNopExporterCreateSettings(), + exportertest.NewNopCreateSettings(), true, false, }, {"invalid_config_case", invalidConfig, - componenttest.NewNopExporterCreateSettings(), + exportertest.NewNopCreateSettings(), true, false, }, {"invalid_tls_config_case", invalidTLSConfig, - componenttest.NewNopExporterCreateSettings(), + exportertest.NewNopCreateSettings(), false, true, }, diff --git a/exporter/clickhousemetricsexporter/helper.go b/exporter/clickhousemetricsexporter/helper.go index fe5bdbf7..8b9c1649 100644 --- a/exporter/clickhousemetricsexporter/helper.go +++ b/exporter/clickhousemetricsexporter/helper.go @@ -69,9 +69,9 @@ func validateMetrics(metric pmetric.Metric) bool { case pmetric.MetricTypeGauge: return metric.Gauge().DataPoints().Len() != 0 case pmetric.MetricTypeSum: - return metric.Sum().DataPoints().Len() != 0 && metric.Sum().AggregationTemporality() == pmetric.AggregationTemporalityCumulative + return metric.Sum().DataPoints().Len() != 0 case pmetric.MetricTypeHistogram: - return metric.Histogram().DataPoints().Len() != 0 && metric.Histogram().AggregationTemporality() == pmetric.AggregationTemporalityCumulative + return metric.Histogram().DataPoints().Len() != 0 case pmetric.MetricTypeSummary: return metric.Summary().DataPoints().Len() != 0 } diff --git a/exporter/clickhousemetricsexporter/testdata/common.go b/exporter/clickhousemetricsexporter/testdata/common.go index 32c39b81..7f753799 100644 --- a/exporter/clickhousemetricsexporter/testdata/common.go +++ b/exporter/clickhousemetricsexporter/testdata/common.go @@ -78,13 +78,11 @@ func initMetricAttributes1(dest pcommon.Map) { func initMetricAttributes12(dest pcommon.Map) { dest.PutStr(TestLabelKey1, TestLabelValue1) dest.PutStr(TestLabelKey2, TestLabelValue2) - dest.Sort() } func initMetricAttributes13(dest pcommon.Map) { dest.PutStr(TestLabelKey1, TestLabelValue1) dest.PutStr(TestLabelKey3, TestLabelValue3) - dest.Sort() } func initMetricAttributes2(dest pcommon.Map) { diff --git a/exporter/clickhousetracesexporter/clickhouse_exporter.go b/exporter/clickhousetracesexporter/clickhouse_exporter.go index 2babca19..2f46a20e 100644 --- a/exporter/clickhousetracesexporter/clickhouse_exporter.go +++ b/exporter/clickhousetracesexporter/clickhouse_exporter.go @@ -26,17 +26,18 @@ import ( "strings" "github.com/SigNoz/signoz-otel-collector/usage" + "github.com/SigNoz/signoz-otel-collector/utils" "github.com/google/uuid" "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/component" - conventions "go.opentelemetry.io/collector/model/semconv/v1.5.0" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/ptrace" + conventions "go.opentelemetry.io/collector/semconv/v1.5.0" "go.uber.org/zap" ) // Crete new exporter. -func newExporter(cfg component.ExporterConfig, logger *zap.Logger) (*storage, error) { +func newExporter(cfg component.Config, logger *zap.Logger) (*storage, error) { configClickHouse := cfg.(*Config) @@ -108,8 +109,8 @@ func makeJaegerProtoReferences( if parentSpanIDSet { refs = append(refs, OtelSpanRef{ - TraceId: traceID.HexString(), - SpanId: parentSpanID.HexString(), + TraceId: utils.TraceIDToHexOrEmptyString(traceID), + SpanId: utils.SpanIDToHexOrEmptyString(parentSpanID), RefType: "CHILD_OF", }) } @@ -118,8 +119,8 @@ func makeJaegerProtoReferences( link := links.At(i) refs = append(refs, OtelSpanRef{ - TraceId: link.TraceID().HexString(), - SpanId: link.SpanID().HexString(), + TraceId: utils.TraceIDToHexOrEmptyString(link.TraceID()), + SpanId: utils.SpanIDToHexOrEmptyString(link.SpanID()), // Since Jaeger RefType is not captured in internal data, // use SpanRefType_FOLLOWS_FROM by default. @@ -150,10 +151,16 @@ func populateOtherDimensions(attributes pcommon.Map, span *Span) { attributes.Range(func(k string, v pcommon.Value) bool { if k == "http.status_code" { - if v.Int() >= 400 { + // Handle both string/int http status codes. + statusString, err := strconv.Atoi(v.Str()) + statusInt := v.Int() + if err == nil && statusString != 0 { + statusInt = int64(statusString) + } + if statusInt >= 400 { span.HasError = true } - span.HttpCode = strconv.FormatInt(v.Int(), 10) + span.HttpCode = strconv.FormatInt(statusInt, 10) span.ResponseStatusCode = span.HttpCode } else if k == "http.url" && span.Kind == 3 { value := v.Str() @@ -162,6 +169,7 @@ func populateOtherDimensions(attributes pcommon.Map, span *Span) { value = valueUrl.Hostname() } span.ExternalHttpUrl = value + span.HttpUrl = v.Str() } else if k == "http.method" && span.Kind == 3 { span.ExternalHttpMethod = v.Str() span.HttpMethod = v.Str() @@ -263,33 +271,63 @@ func newStructuredSpan(otelSpan ptrace.Span, ServiceName string, resource pcommo stringTagMap := map[string]string{} numberTagMap := map[string]float64{} boolTagMap := map[string]bool{} + spanAttributes := []SpanAttribute{} + + resourceAttrs := map[string]string{} attributes.Range(func(k string, v pcommon.Value) bool { tagMap[k] = v.AsString() + spanAttribute := SpanAttribute{ + Key: k, + TagType: "tag", + IsColumn: false, + } if v.Type() == pcommon.ValueTypeDouble { numberTagMap[k] = v.Double() + spanAttribute.NumberValue = v.Double() + spanAttribute.DataType = "float64" } else if v.Type() == pcommon.ValueTypeInt { numberTagMap[k] = float64(v.Int()) + spanAttribute.NumberValue = float64(v.Int()) + spanAttribute.DataType = "float64" } else if v.Type() == pcommon.ValueTypeBool { boolTagMap[k] = v.Bool() + spanAttribute.DataType = "bool" } else { stringTagMap[k] = v.AsString() + spanAttribute.StringValue = v.AsString() + spanAttribute.DataType = "string" } + spanAttributes = append(spanAttributes, spanAttribute) return true }) resourceAttributes.Range(func(k string, v pcommon.Value) bool { tagMap[k] = v.AsString() + spanAttribute := SpanAttribute{ + Key: k, + TagType: "resource", + IsColumn: false, + } + resourceAttrs[k] = v.AsString() if v.Type() == pcommon.ValueTypeDouble { numberTagMap[k] = v.Double() + spanAttribute.NumberValue = v.Double() + spanAttribute.DataType = "float64" } else if v.Type() == pcommon.ValueTypeInt { numberTagMap[k] = float64(v.Int()) + spanAttribute.NumberValue = float64(v.Int()) + spanAttribute.DataType = "float64" } else if v.Type() == pcommon.ValueTypeBool { boolTagMap[k] = v.Bool() + spanAttribute.DataType = "bool" } else { stringTagMap[k] = v.AsString() + spanAttribute.StringValue = v.AsString() + spanAttribute.DataType = "string" } + spanAttributes = append(spanAttributes, spanAttribute) return true }) @@ -299,9 +337,9 @@ func newStructuredSpan(otelSpan ptrace.Span, ServiceName string, resource pcommo tenant := usage.GetTenantNameFromResource(resource) var span *Span = &Span{ - TraceId: otelSpan.TraceID().HexString(), - SpanId: otelSpan.SpanID().HexString(), - ParentSpanId: otelSpan.ParentSpanID().HexString(), + TraceId: utils.TraceIDToHexOrEmptyString(otelSpan.TraceID()), + SpanId: utils.SpanIDToHexOrEmptyString(otelSpan.SpanID()), + ParentSpanId: utils.SpanIDToHexOrEmptyString(otelSpan.ParentSpanID()), Name: otelSpan.Name(), StartTimeUnixNano: uint64(otelSpan.StartTimestamp()), DurationNano: durationNano, @@ -312,10 +350,11 @@ func newStructuredSpan(otelSpan ptrace.Span, ServiceName string, resource pcommo StringTagMap: stringTagMap, NumberTagMap: numberTagMap, BoolTagMap: boolTagMap, + ResourceTagsMap: resourceAttrs, HasError: false, TraceModel: TraceModel{ - TraceId: otelSpan.TraceID().HexString(), - SpanId: otelSpan.SpanID().HexString(), + TraceId: utils.TraceIDToHexOrEmptyString(otelSpan.TraceID()), + SpanId: utils.SpanIDToHexOrEmptyString(otelSpan.SpanID()), Name: otelSpan.Name(), DurationNano: durationNano, StartTimeUnixNano: uint64(otelSpan.StartTimestamp()), @@ -337,7 +376,8 @@ func newStructuredSpan(otelSpan ptrace.Span, ServiceName string, resource pcommo populateOtherDimensions(attributes, span) populateEvents(otelSpan.Events(), span, config.lowCardinalExceptionGrouping) populateTraceModel(span) - + spanAttributes = append(spanAttributes, extractSpanAttributesFromSpanIndex(span)...) + span.SpanAttributes = spanAttributes return span } @@ -384,3 +424,189 @@ func (s *storage) Shutdown(_ context.Context) error { } return nil } + +func extractSpanAttributesFromSpanIndex(span *Span) []SpanAttribute { + spanAttributes := []SpanAttribute{} + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "traceID", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.TraceId, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "spanID", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.SpanId, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "parentSpanID", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.ParentSpanId, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "name", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.Name, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "serviceName", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.ServiceName, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "kind", + TagType: "tag", + IsColumn: true, + DataType: "float64", + NumberValue: float64(span.Kind), + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "durationNano", + TagType: "tag", + IsColumn: true, + DataType: "float64", + NumberValue: float64(span.DurationNano), + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "statusCode", + TagType: "tag", + IsColumn: true, + DataType: "float64", + NumberValue: float64(span.StatusCode), + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "hasError", + TagType: "tag", + IsColumn: true, + DataType: "bool", + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "externalHttpMethod", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.ExternalHttpMethod, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "externalHttpUrl", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.ExternalHttpUrl, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "component", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.Component, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "dbSystem", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.DBSystem, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "dbName", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.DBName, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "dbOperation", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.DBOperation, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "peerService", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.PeerService, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "httpMethod", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.HttpMethod, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "httpUrl", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.HttpUrl, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "httpRoute", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.HttpRoute, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "httpHost", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.HttpHost, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "msgSystem", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.MsgSystem, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "msgOperation", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.MsgOperation, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "rpcSystem", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.RPCSystem, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "rpcService", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.RPCService, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "rpcMethod", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.RPCMethod, + }) + spanAttributes = append(spanAttributes, SpanAttribute{ + Key: "responseStatusCode", + TagType: "tag", + IsColumn: true, + DataType: "string", + StringValue: span.ResponseStatusCode, + }) + return spanAttributes +} diff --git a/exporter/clickhousetracesexporter/clickhouse_factory.go b/exporter/clickhousetracesexporter/clickhouse_factory.go index f2fb81df..aa957301 100644 --- a/exporter/clickhousetracesexporter/clickhouse_factory.go +++ b/exporter/clickhousetracesexporter/clickhouse_factory.go @@ -19,7 +19,6 @@ import ( "flag" "fmt" "net/url" - "time" "github.com/ClickHouse/clickhouse-go/v2" "github.com/golang-migrate/migrate/v4" @@ -47,7 +46,7 @@ type Writer interface { WriteSpan(span *Span) error } -type writerMaker func(logger *zap.Logger, db clickhouse.Conn, traceDatabase string, spansTable string, indexTable string, errorTable string, encoding Encoding, delay time.Duration, size int) (Writer, error) +type writerMaker func(WriterOptions) (Writer, error) var ( writeLatencyMillis = stats.Int64("exporter_db_write_latency", "Time taken (in millis) for exporter to write batch", "ms") @@ -73,8 +72,8 @@ func ClickHouseNewFactory(migrations string, datasource string, dockerMultiNodeC // makeReader: func(db *clickhouse.Conn, operationsTable, indexTable, spansTable string) (spanstore.Reader, error) { // return store.NewTraceReader(db, operationsTable, indexTable, spansTable), nil // }, - makeWriter: func(logger *zap.Logger, db clickhouse.Conn, traceDatabase string, spansTable string, indexTable string, errorTable string, encoding Encoding, delay time.Duration, size int) (Writer, error) { - return NewSpanWriter(logger, db, traceDatabase, spansTable, indexTable, errorTable, encoding, delay, size), nil + makeWriter: func(options WriterOptions) (Writer, error) { + return NewSpanWriter(options), nil }, } } @@ -272,7 +271,19 @@ func (f *Factory) InitFromViper(v *viper.Viper) { // CreateSpanWriter implements storage.Factory func (f *Factory) CreateSpanWriter() (Writer, error) { cfg := f.Options.getPrimary() - return f.makeWriter(f.logger, f.db, cfg.TraceDatabase, cfg.SpansTable, cfg.IndexTable, cfg.ErrorTable, cfg.Encoding, cfg.WriteBatchDelay, cfg.WriteBatchSize) + return f.makeWriter(WriterOptions{ + logger: f.logger, + db: f.db, + traceDatabase: cfg.TraceDatabase, + spansTable: cfg.SpansTable, + indexTable: cfg.IndexTable, + errorTable: cfg.ErrorTable, + attributeTable: cfg.AttributeTable, + attributeKeyTable: cfg.AttributeKeyTable, + encoding: cfg.Encoding, + delay: cfg.WriteBatchDelay, + size: cfg.WriteBatchSize, + }) } // CreateArchiveSpanWriter implements storage.ArchiveFactory @@ -281,7 +292,19 @@ func (f *Factory) CreateArchiveSpanWriter() (Writer, error) { return nil, nil } cfg := f.Options.others[archiveNamespace] - return f.makeWriter(f.logger, f.archive, "", cfg.TraceDatabase, cfg.SpansTable, cfg.ErrorTable, cfg.Encoding, cfg.WriteBatchDelay, cfg.WriteBatchSize) + return f.makeWriter(WriterOptions{ + logger: f.logger, + db: f.archive, + traceDatabase: cfg.TraceDatabase, + spansTable: cfg.SpansTable, + indexTable: cfg.IndexTable, + errorTable: cfg.ErrorTable, + attributeTable: cfg.AttributeTable, + attributeKeyTable: cfg.AttributeKeyTable, + encoding: cfg.Encoding, + delay: cfg.WriteBatchDelay, + size: cfg.WriteBatchSize, + }) } // Close Implements io.Closer and closes the underlying storage diff --git a/exporter/clickhousetracesexporter/config.go b/exporter/clickhousetracesexporter/config.go index 39b3056e..bd523b69 100644 --- a/exporter/clickhousetracesexporter/config.go +++ b/exporter/clickhousetracesexporter/config.go @@ -16,13 +16,10 @@ package clickhousetracesexporter import ( "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" ) // Config defines configuration for tracing exporter. type Config struct { - config.ExporterSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct - Options `mapstructure:",squash"` Datasource string `mapstructure:"datasource"` Migrations string `mapstructure:"migrations"` @@ -32,7 +29,7 @@ type Config struct { LowCardinalExceptionGrouping bool `mapstructure:"low_cardinal_exception_grouping"` } -var _ component.ExporterConfig = (*Config)(nil) +var _ component.Config = (*Config)(nil) // Validate checks if the exporter configuration is valid func (cfg *Config) Validate() error { diff --git a/exporter/clickhousetracesexporter/factory.go b/exporter/clickhousetracesexporter/factory.go index c65952e1..93c19496 100644 --- a/exporter/clickhousetracesexporter/factory.go +++ b/exporter/clickhousetracesexporter/factory.go @@ -18,7 +18,7 @@ import ( "context" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" ) @@ -29,28 +29,27 @@ const ( archiveNamespace = "clickhouse-archive" ) -func createDefaultConfig() component.ExporterConfig { +func createDefaultConfig() component.Config { // opts := NewOptions(primaryNamespace, archiveNamespace) return &Config{ // Options: *opts, - ExporterSettings: config.NewExporterSettings(component.NewID(typeStr)), } } // NewFactory creates a factory for Logging exporter -func NewFactory() component.ExporterFactory { - return component.NewExporterFactory( +func NewFactory() exporter.Factory { + return exporter.NewFactory( typeStr, createDefaultConfig, - component.WithTracesExporter(createTracesExporter, component.StabilityLevelUndefined), + exporter.WithTraces(createTracesExporter, component.StabilityLevelUndefined), ) } func createTracesExporter( ctx context.Context, - params component.ExporterCreateSettings, - cfg component.ExporterConfig, -) (component.TracesExporter, error) { + params exporter.CreateSettings, + cfg component.Config, +) (exporter.Traces, error) { oce, err := newExporter(cfg, params.Logger) if err != nil { diff --git a/exporter/clickhousetracesexporter/feature_manager.go b/exporter/clickhousetracesexporter/feature_manager.go index 5e91be29..065ca5b7 100644 --- a/exporter/clickhousetracesexporter/feature_manager.go +++ b/exporter/clickhousetracesexporter/feature_manager.go @@ -13,13 +13,16 @@ const ( TimestampSortFeature = "TIMESTAMP_SORT_FEATURE" ) +var durationSortFeatureGate *featuregate.Gate +var timestampSortFeatureGate *featuregate.Gate + func init() { - featuregate.GetRegistry().MustRegisterID( + durationSortFeatureGate = featuregate.GlobalRegistry().MustRegister( DurationSortFeature, featuregate.StageBeta, featuregate.WithRegisterDescription("It controls use of materialized view which optimizes span duration based sorting for trace list at cost of extra disk usage"), ) - featuregate.GetRegistry().MustRegisterID( + timestampSortFeatureGate = featuregate.GlobalRegistry().MustRegister( TimestampSortFeature, featuregate.StageBeta, featuregate.WithRegisterDescription("It controls use of materialized view which optimizes span timestamp based sorting for trace list at cost of extra disk usage"), @@ -27,7 +30,7 @@ func init() { } func initFeatures(db clickhouse.Conn, options *Options) error { - if featuregate.GetRegistry().IsEnabled(DurationSortFeature) { + if durationSortFeatureGate.IsEnabled() { err := enableDurationSortFeature(db, options) if err != nil { return err @@ -38,7 +41,7 @@ func initFeatures(db clickhouse.Conn, options *Options) error { return err } } - if featuregate.GetRegistry().IsEnabled(TimestampSortFeature) { + if timestampSortFeatureGate.IsEnabled() { err := enableTimestampSortFeature(db, options) if err != nil { return err diff --git a/exporter/clickhousetracesexporter/migrations/000020_resource_att_exceptions.down.sql b/exporter/clickhousetracesexporter/migrations/000020_resource_att_exceptions.down.sql new file mode 100644 index 00000000..50619846 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000020_resource_att_exceptions.down.sql @@ -0,0 +1,4 @@ +ALTER TABLE signoz_traces.signoz_error_index_v2 ON CLUSTER cluster + DROP COLUMN IF EXISTS resourceTagsMap; +ALTER TABLE signoz_traces.distributed_signoz_error_index_v2 ON CLUSTER cluster + DROP COLUMN IF EXISTS resourceTagsMap; \ No newline at end of file diff --git a/exporter/clickhousetracesexporter/migrations/000020_resource_att_exceptions.up.sql b/exporter/clickhousetracesexporter/migrations/000020_resource_att_exceptions.up.sql new file mode 100644 index 00000000..eb7e55b0 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000020_resource_att_exceptions.up.sql @@ -0,0 +1,7 @@ +ALTER TABLE signoz_traces.signoz_error_index_v2 ON CLUSTER cluster + ADD COLUMN IF NOT EXISTS resourceTagsMap Map(LowCardinality(String), String) CODEC(ZSTD(1)), + ADD INDEX IF NOT EXISTS idx_resourceTagsMapKeys mapKeys(resourceTagsMap) TYPE bloom_filter(0.01) GRANULARITY 64, + ADD INDEX IF NOT EXISTS idx_resourceTagsMapValues mapValues(resourceTagsMap) TYPE bloom_filter(0.01) GRANULARITY 64; + +ALTER TABLE signoz_traces.distributed_signoz_error_index_v2 ON CLUSTER cluster + ADD COLUMN IF NOT EXISTS resourceTagsMap Map(LowCardinality(String), String) CODEC(ZSTD(1)); diff --git a/exporter/clickhousetracesexporter/migrations/000021_resource_attributes_signoz_index_v2.down.sql b/exporter/clickhousetracesexporter/migrations/000021_resource_attributes_signoz_index_v2.down.sql new file mode 100644 index 00000000..f9a758b5 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000021_resource_attributes_signoz_index_v2.down.sql @@ -0,0 +1,4 @@ +ALTER TABLE signoz_traces.signoz_index_v2 ON CLUSTER cluster + DROP COLUMN IF EXISTS resourceTagsMap; +ALTER TABLE signoz_traces.distributed_signoz_index_v2 ON CLUSTER cluster + DROP COLUMN IF EXISTS resourceTagsMap; diff --git a/exporter/clickhousetracesexporter/migrations/000021_resource_attributes_signoz_index_v2.up.sql b/exporter/clickhousetracesexporter/migrations/000021_resource_attributes_signoz_index_v2.up.sql new file mode 100644 index 00000000..ab334a2c --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000021_resource_attributes_signoz_index_v2.up.sql @@ -0,0 +1,7 @@ +ALTER TABLE signoz_traces.signoz_index_v2 ON CLUSTER cluster + ADD COLUMN IF NOT EXISTS resourceTagsMap Map(LowCardinality(String), String) CODEC(ZSTD(1)), + ADD INDEX IF NOT EXISTS idx_resourceTagsMapKeys mapKeys(resourceTagsMap) TYPE bloom_filter(0.01) GRANULARITY 64, + ADD INDEX IF NOT EXISTS idx_resourceTagsMapValues mapValues(resourceTagsMap) TYPE bloom_filter(0.01) GRANULARITY 64; + +ALTER TABLE signoz_traces.distributed_signoz_index_v2 ON CLUSTER cluster + ADD COLUMN IF NOT EXISTS resourceTagsMap Map(LowCardinality(String), String) CODEC(ZSTD(1)); diff --git a/exporter/clickhousetracesexporter/migrations/000022_dependency_graph_minutes_v2.down.sql b/exporter/clickhousetracesexporter/migrations/000022_dependency_graph_minutes_v2.down.sql new file mode 100644 index 00000000..beeb0017 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000022_dependency_graph_minutes_v2.down.sql @@ -0,0 +1,6 @@ +DROP TABLE IF EXISTS signoz_traces.dependency_graph_minutes_v2 ON CLUSTER cluster; +DROP VIEW IF EXISTS signoz_traces.dependency_graph_minutes_service_calls_mv_v2 ON CLUSTER cluster; +DROP VIEW IF EXISTS signoz_traces.dependency_graph_minutes_db_calls_mv_v2 ON CLUSTER cluster; +DROP VIEW IF EXISTS signoz_traces.dependency_graph_minutes_messaging_calls_mv_v2 ON CLUSTER cluster; + +DROP TABLE IF EXISTS signoz_traces.distributed_dependency_graph_minutes_v2 ON CLUSTER cluster; diff --git a/exporter/clickhousetracesexporter/migrations/000022_dependency_graph_minutes_v2.up.sql b/exporter/clickhousetracesexporter/migrations/000022_dependency_graph_minutes_v2.up.sql new file mode 100644 index 00000000..4e6ff652 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000022_dependency_graph_minutes_v2.up.sql @@ -0,0 +1,66 @@ +CREATE TABLE IF NOT EXISTS signoz_traces.dependency_graph_minutes_v2 ON CLUSTER cluster ( + src LowCardinality(String) CODEC(ZSTD(1)), + dest LowCardinality(String) CODEC(ZSTD(1)), + duration_quantiles_state AggregateFunction(quantiles(0.5, 0.75, 0.9, 0.95, 0.99), Float64) CODEC(Default), + error_count SimpleAggregateFunction(sum, UInt64) CODEC(T64, ZSTD(1)), + total_count SimpleAggregateFunction(sum, UInt64) CODEC(T64, ZSTD(1)), + timestamp DateTime CODEC(DoubleDelta, LZ4), + deployment_environment LowCardinality(String) CODEC(ZSTD(1)), + k8s_cluster_name LowCardinality(String) CODEC(ZSTD(1)), + k8s_namespace_name LowCardinality(String) CODEC(ZSTD(1)) +) ENGINE AggregatingMergeTree +PARTITION BY toDate(timestamp) +ORDER BY (timestamp, src, dest, deployment_environment, k8s_cluster_name, k8s_namespace_name) +TTL toDateTime(timestamp) + INTERVAL 604800 SECOND DELETE; + + +CREATE MATERIALIZED VIEW IF NOT EXISTS signoz_traces.dependency_graph_minutes_service_calls_mv_v2 ON CLUSTER cluster +TO signoz_traces.dependency_graph_minutes_v2 AS +SELECT + A.serviceName as src, + B.serviceName as dest, + quantilesState(0.5, 0.75, 0.9, 0.95, 0.99)(toFloat64(B.durationNano)) as duration_quantiles_state, + countIf(B.statusCode=2) as error_count, + count(*) as total_count, + toStartOfMinute(B.timestamp) as timestamp, + B.resourceTagsMap['deployment.environment'] as deployment_environment, + B.resourceTagsMap['k8s.cluster.name'] as k8s_cluster_name, + B.resourceTagsMap['k8s.namespace.name'] as k8s_namespace_name +FROM signoz_traces.signoz_index_v2 AS A, signoz_traces.signoz_index_v2 AS B +WHERE (A.serviceName != B.serviceName) AND (A.spanID = B.parentSpanID) +GROUP BY timestamp, src, dest, deployment_environment, k8s_cluster_name, k8s_namespace_name; + +CREATE MATERIALIZED VIEW IF NOT EXISTS signoz_traces.dependency_graph_minutes_db_calls_mv_v2 ON CLUSTER cluster +TO signoz_traces.dependency_graph_minutes_v2 AS +SELECT + serviceName as src, + tagMap['db.system'] as dest, + quantilesState(0.5, 0.75, 0.9, 0.95, 0.99)(toFloat64(durationNano)) as duration_quantiles_state, + countIf(statusCode=2) as error_count, + count(*) as total_count, + toStartOfMinute(timestamp) as timestamp, + resourceTagsMap['deployment.environment'] as deployment_environment, + resourceTagsMap['k8s.cluster.name'] as k8s_cluster_name, + resourceTagsMap['k8s.namespace.name'] as k8s_namespace_name +FROM signoz_traces.signoz_index_v2 +WHERE dest != '' and kind != 2 +GROUP BY timestamp, src, dest, deployment_environment, k8s_cluster_name, k8s_namespace_name; + +CREATE MATERIALIZED VIEW IF NOT EXISTS signoz_traces.dependency_graph_minutes_messaging_calls_mv_v2 ON CLUSTER cluster +TO signoz_traces.dependency_graph_minutes_v2 AS +SELECT + serviceName as src, + tagMap['messaging.system'] as dest, + quantilesState(0.5, 0.75, 0.9, 0.95, 0.99)(toFloat64(durationNano)) as duration_quantiles_state, + countIf(statusCode=2) as error_count, + count(*) as total_count, + toStartOfMinute(timestamp) as timestamp, + resourceTagsMap['deployment.environment'] as deployment_environment, + resourceTagsMap['k8s.cluster.name'] as k8s_cluster_name, + resourceTagsMap['k8s.namespace.name'] as k8s_namespace_name +FROM signoz_traces.signoz_index_v2 +WHERE dest != '' and kind != 2 +GROUP BY timestamp, src, dest, deployment_environment, k8s_cluster_name, k8s_namespace_name; + +CREATE TABLE IF NOT EXISTS signoz_traces.distributed_dependency_graph_minutes_v2 ON CLUSTER cluster AS signoz_traces.dependency_graph_minutes_v2 +ENGINE = Distributed("cluster", "signoz_traces", dependency_graph_minutes_v2, cityHash64(rand())); diff --git a/exporter/clickhousetracesexporter/migrations/000023_span_attributes_mv.down.sql b/exporter/clickhousetracesexporter/migrations/000023_span_attributes_mv.down.sql new file mode 100644 index 00000000..cb5b3c71 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000023_span_attributes_mv.down.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS signoz_traces.distributed_span_attributes ON CLUSTER cluster +DROP TABLE IF EXISTS signoz_traces.span_attributes ON CLUSTER cluster; diff --git a/exporter/clickhousetracesexporter/migrations/000023_span_attributes_mv.up.sql b/exporter/clickhousetracesexporter/migrations/000023_span_attributes_mv.up.sql new file mode 100644 index 00000000..fc942c43 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000023_span_attributes_mv.up.sql @@ -0,0 +1,15 @@ +CREATE TABLE IF NOT EXISTS signoz_traces.span_attributes ON CLUSTER cluster ( + timestamp DateTime CODEC(DoubleDelta, ZSTD(1)), + tagKey LowCardinality(String) CODEC(ZSTD(1)), + tagType Enum('tag', 'resource') CODEC(ZSTD(1)), + dataType Enum('string', 'bool', 'float64') CODEC(ZSTD(1)), + stringTagValue String CODEC(ZSTD(1)), + float64TagValue Nullable(Float64) CODEC(ZSTD(1)), + isColumn bool CODEC(ZSTD(1)), +) ENGINE ReplacingMergeTree +ORDER BY (tagKey, tagType, dataType, stringTagValue, float64TagValue, isColumn) +TTL toDateTime(timestamp) + INTERVAL 172800 SECOND DELETE +SETTINGS ttl_only_drop_parts = 1, allow_nullable_key = 1; + +CREATE TABLE IF NOT EXISTS signoz_traces.distributed_span_attributes ON CLUSTER cluster AS signoz_traces.span_attributes +ENGINE = Distributed("cluster", "signoz_traces", span_attributes, cityHash64(rand())); diff --git a/exporter/clickhousetracesexporter/migrations/000024_span_attributes_keys.down.sql b/exporter/clickhousetracesexporter/migrations/000024_span_attributes_keys.down.sql new file mode 100644 index 00000000..bb1600cd --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000024_span_attributes_keys.down.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS signoz_traces.distributed_span_attributes_keys ON CLUSTER cluster +DROP TABLE IF EXISTS signoz_traces.span_attributes_keys ON CLUSTER cluster; diff --git a/exporter/clickhousetracesexporter/migrations/000024_span_attributes_keys.up.sql b/exporter/clickhousetracesexporter/migrations/000024_span_attributes_keys.up.sql new file mode 100644 index 00000000..4dd8d505 --- /dev/null +++ b/exporter/clickhousetracesexporter/migrations/000024_span_attributes_keys.up.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS signoz_traces.span_attributes_keys ON CLUSTER cluster ( + tagKey LowCardinality(String) CODEC(ZSTD(1)), + tagType Enum('tag', 'resource') CODEC(ZSTD(1)), + dataType Enum('string', 'bool', 'float64') CODEC(ZSTD(1)), + isColumn bool CODEC(ZSTD(1)), +) ENGINE ReplacingMergeTree +ORDER BY (tagKey, tagType, dataType, isColumn); + +CREATE TABLE IF NOT EXISTS signoz_traces.distributed_span_attributes_keys ON CLUSTER cluster AS signoz_traces.span_attributes_keys +ENGINE = Distributed("cluster", "signoz_traces", span_attributes_keys, cityHash64(rand())); diff --git a/exporter/clickhousetracesexporter/options.go b/exporter/clickhousetracesexporter/options.go index 692842d0..2f16657e 100644 --- a/exporter/clickhousetracesexporter/options.go +++ b/exporter/clickhousetracesexporter/options.go @@ -34,6 +34,8 @@ const ( localIndexTable string = "signoz_index_v2" defaultErrorTable string = "distributed_signoz_error_index_v2" defaultSpansTable string = "distributed_signoz_spans" + defaultAttributeTable string = "distributed_span_attributes" + defaultAttributeKeyTable string = "distributed_span_attributes_keys" defaultDurationSortTable string = "durationSort" defaultDurationSortMVTable string = "durationSortMV" defaultArchiveSpansTable string = "signoz_archive_spans" @@ -72,6 +74,8 @@ type namespaceConfig struct { LocalIndexTable string SpansTable string ErrorTable string + AttributeTable string + AttributeKeyTable string Cluster string DurationSortTable string DurationSortMVTable string @@ -147,6 +151,8 @@ func NewOptions(migrations string, datasource string, dockerMultiNodeCluster boo LocalIndexTable: localIndexTable, ErrorTable: defaultErrorTable, SpansTable: defaultSpansTable, + AttributeTable: defaultAttributeTable, + AttributeKeyTable: defaultAttributeKeyTable, DurationSortTable: defaultDurationSortTable, DurationSortMVTable: defaultDurationSortMVTable, Cluster: defaultClusterName, diff --git a/exporter/clickhousetracesexporter/schema-signoz.go b/exporter/clickhousetracesexporter/schema-signoz.go index 4ebb756f..5e710502 100644 --- a/exporter/clickhousetracesexporter/schema-signoz.go +++ b/exporter/clickhousetracesexporter/schema-signoz.go @@ -113,6 +113,7 @@ type Span struct { StringTagMap map[string]string `json:"stringTagMap,omitempty"` NumberTagMap map[string]float64 `json:"numberTagMap,omitempty"` BoolTagMap map[string]bool `json:"boolTagMap,omitempty"` + ResourceTagsMap map[string]string `json:"resourceTagsMap,omitempty"` HasError bool `json:"hasError,omitempty"` TraceModel TraceModel `json:"traceModel,omitempty"` GRPCCode string `json:"gRPCCode,omitempty"` @@ -122,6 +123,16 @@ type Span struct { RPCMethod string `json:"rpcMethod,omitempty"` ResponseStatusCode string `json:"responseStatusCode,omitempty"` Tenant *string `json:"-"` + SpanAttributes []SpanAttribute `json:"spanAttributes,omitempty"` +} + +type SpanAttribute struct { + Key string + TagType string + DataType string + StringValue string + NumberValue float64 + IsColumn bool } func (s *Span) MarshalLogObject(enc zapcore.ObjectEncoder) error { diff --git a/exporter/clickhousetracesexporter/writer.go b/exporter/clickhousetracesexporter/writer.go index 840d95e1..f8ea7e45 100644 --- a/exporter/clickhousetracesexporter/writer.go +++ b/exporter/clickhousetracesexporter/writer.go @@ -43,37 +43,55 @@ const ( // SpanWriter for writing spans to ClickHouse type SpanWriter struct { - logger *zap.Logger - db clickhouse.Conn - traceDatabase string - indexTable string - errorTable string - spansTable string - encoding Encoding - delay time.Duration - size int - spans chan *Span - finish chan bool - done sync.WaitGroup + logger *zap.Logger + db clickhouse.Conn + traceDatabase string + indexTable string + errorTable string + spansTable string + attributeTable string + attributeKeyTable string + encoding Encoding + delay time.Duration + size int + spans chan *Span + finish chan bool + done sync.WaitGroup +} + +type WriterOptions struct { + logger *zap.Logger + db clickhouse.Conn + traceDatabase string + spansTable string + indexTable string + errorTable string + attributeTable string + attributeKeyTable string + encoding Encoding + delay time.Duration + size int } // NewSpanWriter returns a SpanWriter for the database -func NewSpanWriter(logger *zap.Logger, db clickhouse.Conn, traceDatabase string, spansTable string, indexTable string, errorTable string, encoding Encoding, delay time.Duration, size int) *SpanWriter { +func NewSpanWriter(options WriterOptions) *SpanWriter { if err := view.Register(SpansCountView, SpansCountBytesView); err != nil { return nil } writer := &SpanWriter{ - logger: logger, - db: db, - traceDatabase: traceDatabase, - indexTable: indexTable, - errorTable: errorTable, - spansTable: spansTable, - encoding: encoding, - delay: delay, - size: size, - spans: make(chan *Span, size), - finish: make(chan bool), + logger: options.logger, + db: options.db, + traceDatabase: options.traceDatabase, + indexTable: options.indexTable, + errorTable: options.errorTable, + spansTable: options.spansTable, + attributeTable: options.attributeTable, + attributeKeyTable: options.attributeKeyTable, + encoding: options.encoding, + delay: options.delay, + size: options.size, + spans: make(chan *Span, options.size), + finish: make(chan bool), } go writer.backgroundWriter() @@ -145,6 +163,12 @@ func (w *SpanWriter) writeBatch(batch []*Span) error { return err } } + if w.attributeTable != "" && w.attributeKeyTable != "" { + if err := w.writeTagBatch(batch); err != nil { + w.logger.Error("Could not write a batch of spans to tag/tagKey tables: ", zap.Error(err)) + return err + } + } return nil } @@ -196,6 +220,7 @@ func (w *SpanWriter) writeIndexBatch(batchSpans []*Span) error { span.StringTagMap, span.NumberTagMap, span.BoolTagMap, + span.ResourceTagsMap, ) if err != nil { w.logger.Error("Could not append span to batch: ", zap.Object("span", span), zap.Error(err)) @@ -215,6 +240,106 @@ func (w *SpanWriter) writeIndexBatch(batchSpans []*Span) error { return err } +func (w *SpanWriter) writeTagBatch(batchSpans []*Span) error { + + ctx := context.Background() + tagStatement, err := w.db.PrepareBatch(ctx, fmt.Sprintf("INSERT INTO %s.%s", w.traceDatabase, w.attributeTable)) + if err != nil { + logBatch := batchSpans[:int(math.Min(10, float64(len(batchSpans))))] + w.logger.Error("Could not prepare batch for span attributes table due to error: ", zap.Error(err), zap.Any("batch", logBatch)) + return err + } + tagKeyStatement, err := w.db.PrepareBatch(ctx, fmt.Sprintf("INSERT INTO %s.%s", w.traceDatabase, w.attributeKeyTable)) + if err != nil { + logBatch := batchSpans[:int(math.Min(10, float64(len(batchSpans))))] + w.logger.Error("Could not prepare batch for span attributes key table due to error: ", zap.Error(err), zap.Any("batch", logBatch)) + return err + } + for _, span := range batchSpans { + for _, spanAttribute := range span.SpanAttributes { + + err = tagKeyStatement.Append( + spanAttribute.Key, + spanAttribute.TagType, + spanAttribute.DataType, + spanAttribute.IsColumn, + ) + if err != nil { + w.logger.Error("Could not append span to tagKey Statement to batch due to error: ", zap.Error(err), zap.Object("span", span)) + return err + } + + if spanAttribute.DataType == "string" { + err = tagStatement.Append( + time.Unix(0, int64(span.StartTimeUnixNano)), + spanAttribute.Key, + spanAttribute.TagType, + spanAttribute.DataType, + spanAttribute.StringValue, + nil, + spanAttribute.IsColumn, + ) + } else if spanAttribute.DataType == "float64" { + err = tagStatement.Append( + time.Unix(0, int64(span.StartTimeUnixNano)), + spanAttribute.Key, + spanAttribute.TagType, + spanAttribute.DataType, + nil, + spanAttribute.NumberValue, + spanAttribute.IsColumn, + ) + } else if spanAttribute.DataType == "bool" { + err = tagStatement.Append( + time.Unix(0, int64(span.StartTimeUnixNano)), + spanAttribute.Key, + spanAttribute.TagType, + spanAttribute.DataType, + nil, + nil, + spanAttribute.IsColumn, + ) + } + if err != nil { + w.logger.Error("Could not append span to tag Statement batch due to error: ", zap.Error(err), zap.Object("span", span)) + return err + } + } + } + + tagStart := time.Now() + err = tagStatement.Send() + stats.RecordWithTags(ctx, + []tag.Mutator{ + tag.Upsert(exporterKey, string(component.DataTypeTraces)), + tag.Upsert(tableKey, w.attributeTable), + }, + writeLatencyMillis.M(int64(time.Since(tagStart).Milliseconds())), + ) + if err != nil { + logBatch := batchSpans[:int(math.Min(10, float64(len(batchSpans))))] + w.logger.Error("Could not write to span attributes table due to error: ", zap.Error(err), zap.Any("batch", logBatch)) + return err + } + + tagKeyStart := time.Now() + err = tagKeyStatement.Send() + stats.RecordWithTags(ctx, + []tag.Mutator{ + tag.Upsert(exporterKey, string(component.DataTypeTraces)), + tag.Upsert(tableKey, w.attributeKeyTable), + }, + writeLatencyMillis.M(int64(time.Since(tagKeyStart).Milliseconds())), + ) + if err != nil { + logBatch := batchSpans[:int(math.Min(10, float64(len(batchSpans))))] + w.logger.Error("Could not write to span attributes key table due to error: ", zap.Error(err), zap.Any("batch", logBatch)) + return err + } + + return err +} + func (w *SpanWriter) writeErrorBatch(batchSpans []*Span) error { ctx := context.Background() @@ -240,6 +365,7 @@ func (w *SpanWriter) writeErrorBatch(batchSpans []*Span) error { span.ErrorEvent.AttributeMap["exception.message"], span.ErrorEvent.AttributeMap["exception.stacktrace"], stringToBool(span.ErrorEvent.AttributeMap["exception.escaped"]), + span.ResourceTagsMap, ) if err != nil { w.logger.Error("Could not append span to batch: ", zap.Object("span", span), zap.Error(err)) @@ -278,8 +404,10 @@ func (w *SpanWriter) writeModelBatch(batchSpans []*Span) error { metrics := map[string]usage.Metric{} for _, span := range batchSpans { var serialized []byte - + usageMap := span.TraceModel + usageMap.TagMap = map[string]string{} serialized, err = json.Marshal(span.TraceModel) + serializedUsage, err := json.Marshal(usageMap) if err != nil { return err @@ -291,7 +419,7 @@ func (w *SpanWriter) writeModelBatch(batchSpans []*Span) error { return err } - usage.AddMetric(metrics, *span.Tenant, 1, int64(len(serialized))) + usage.AddMetric(metrics, *span.Tenant, 1, int64(len(serializedUsage))) } start := time.Now() diff --git a/go.mod b/go.mod index f669a7fa..6a98bb4b 100644 --- a/go.mod +++ b/go.mod @@ -1,158 +1,166 @@ module github.com/SigNoz/signoz-otel-collector -go 1.18 +go 1.19 require ( github.com/ClickHouse/clickhouse-go/v2 v2.0.12 github.com/gogo/protobuf v1.3.2 github.com/golang-migrate/migrate/v4 v4.15.1 + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da github.com/golang/snappy v0.0.4 github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 - github.com/hashicorp/golang-lru v0.5.4 + github.com/hashicorp/golang-lru v0.6.0 + github.com/knadh/koanf v1.5.0 github.com/oklog/ulid v1.3.1 github.com/open-telemetry/opamp-go v0.5.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/dockerobserver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/logstransformprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/redactionprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/servicegraphprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otlpjsonfilereceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/pulsarreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.66.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.66.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/dockerobserver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/logstransformprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/redactionprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/servicegraphprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscloudwatchreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.76.3 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otlpjsonfilereceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/pulsarreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.79.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.79.0 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.14.0 - github.com/prometheus/common v0.37.0 - github.com/prometheus/prometheus v0.38.0 + github.com/prometheus/client_golang v1.15.1 + github.com/prometheus/common v0.44.0 + github.com/prometheus/prometheus v0.43.1 github.com/segmentio/ksuid v1.0.4 github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.14.0 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.4 github.com/vjeantet/grok v1.0.1 go.opencensus.io v0.24.0 - go.opentelemetry.io/collector v0.66.0 - go.opentelemetry.io/collector/component v0.66.0 - go.opentelemetry.io/collector/consumer v0.66.0 - go.opentelemetry.io/collector/exporter/loggingexporter v0.66.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.66.0 - go.opentelemetry.io/collector/exporter/otlphttpexporter v0.66.0 - go.opentelemetry.io/collector/extension/ballastextension v0.66.0 - go.opentelemetry.io/collector/extension/zpagesextension v0.65.0 - go.opentelemetry.io/collector/featuregate v0.66.0 - go.opentelemetry.io/collector/model v0.50.0 - go.opentelemetry.io/collector/pdata v0.66.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.66.0 - go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.66.0 - go.opentelemetry.io/collector/receiver/otlpreceiver v0.66.0 - go.opentelemetry.io/collector/semconv v0.66.0 + go.opentelemetry.io/collector v0.79.0 + go.opentelemetry.io/collector/component v0.79.0 + go.opentelemetry.io/collector/confmap v0.79.0 + go.opentelemetry.io/collector/consumer v0.79.0 + go.opentelemetry.io/collector/exporter v0.79.0 + go.opentelemetry.io/collector/exporter/loggingexporter v0.79.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.79.0 + go.opentelemetry.io/collector/exporter/otlphttpexporter v0.79.0 + go.opentelemetry.io/collector/extension/ballastextension v0.79.0 + go.opentelemetry.io/collector/extension/zpagesextension v0.79.0 + go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 + go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 + go.opentelemetry.io/collector/processor/batchprocessor v0.79.0 + go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.79.0 + go.opentelemetry.io/collector/receiver v0.79.0 + go.opentelemetry.io/collector/receiver/otlpreceiver v0.79.0 + go.opentelemetry.io/collector/semconv v0.79.0 + go.opentelemetry.io/otel/trace v1.16.0 go.uber.org/atomic v1.10.0 - go.uber.org/multierr v1.8.0 - go.uber.org/zap v1.23.0 - google.golang.org/grpc v1.51.0 - google.golang.org/protobuf v1.28.1 + go.uber.org/multierr v1.11.0 + go.uber.org/zap v1.24.0 + google.golang.org/grpc v1.55.0 + google.golang.org/protobuf v1.30.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go/compute v1.12.1 // indirect - cloud.google.com/go/compute/metadata v0.2.1 // indirect + cloud.google.com/go/compute v1.19.3 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/99designs/keyring v1.2.1 // indirect + github.com/99designs/keyring v1.2.2 // indirect github.com/AthenZ/athenz v1.10.39 // indirect github.com/Azure/azure-pipeline-go v0.2.3 // indirect github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect github.com/Azure/azure-storage-blob-go v0.15.0 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.28 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect @@ -160,118 +168,128 @@ require ( github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/DataDog/zstd v1.5.0 // indirect github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.34.1 // indirect - github.com/Microsoft/go-winio v0.5.2 // indirect - github.com/SAP/go-hdb v0.109.1 // indirect - github.com/Shopify/sarama v1.37.2 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.13.1 // indirect + github.com/Microsoft/go-winio v0.6.0 // indirect + github.com/SAP/go-hdb v1.2.6 // indirect + github.com/Shopify/sarama v1.38.1 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect - github.com/alecthomas/participle/v2 v2.0.0-beta.5 // indirect + github.com/alecthomas/participle/v2 v2.0.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect - github.com/antonmedv/expr v1.9.0 // indirect + github.com/antonmedv/expr v1.12.5 // indirect github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect github.com/apache/pulsar-client-go v0.8.1 // indirect github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e // indirect - github.com/apache/thrift v0.17.0 // indirect + github.com/apache/thrift v0.18.1 // indirect github.com/ardielle/ardielle-go v1.5.2 // indirect - github.com/armon/go-metrics v0.4.0 // indirect - github.com/aws/aws-sdk-go v1.44.142 // indirect - github.com/aws/aws-sdk-go-v2 v1.17.1 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.12.23 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.19 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 // indirect - github.com/aws/smithy-go v1.13.4 // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/aws/aws-sdk-go v1.44.274 // indirect + github.com/aws/aws-sdk-go-v2 v1.18.0 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.13.24 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.31.0 // indirect + github.com/aws/smithy-go v1.13.5 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bmatcuk/doublestar/v3 v3.0.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.0 // indirect + github.com/blang/semver v3.5.1+incompatible // indirect + github.com/bmatcuk/doublestar/v4 v4.6.0 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect + github.com/cilium/ebpf v0.7.0 // indirect + github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195 // indirect + github.com/containerd/console v1.0.3 // indirect + github.com/containerd/ttrpc v1.1.0 // indirect github.com/coreos/go-oidc v2.2.1+incompatible // indirect + github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/denisenkom/go-mssqldb v0.12.2 // indirect github.com/dennwc/varint v1.0.0 // indirect - github.com/digitalocean/godo v1.82.0 // indirect - github.com/docker/distribution v2.8.1+incompatible // indirect - github.com/docker/docker v20.10.21+incompatible // indirect + github.com/digitalocean/godo v1.97.0 // indirect + github.com/docker/distribution v2.8.2+incompatible // indirect + github.com/docker/docker v24.0.2+incompatible // indirect github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/eapache/go-resiliency v1.3.0 // indirect - github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect + github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6 // indirect github.com/eapache/queue v1.1.0 // indirect - github.com/emicklei/go-restful/v3 v3.8.0 // indirect - github.com/envoyproxy/go-control-plane v0.10.3 // indirect - github.com/envoyproxy/protoc-gen-validate v0.6.7 // indirect - github.com/fatih/color v1.13.0 // indirect + github.com/emicklei/go-restful/v3 v3.10.1 // indirect + github.com/envoyproxy/go-control-plane v0.11.0 // indirect + github.com/envoyproxy/protoc-gen-validate v0.10.0 // indirect + github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect + github.com/fatih/color v1.14.1 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/form3tech-oss/jwt-go v3.2.5+incompatible // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.1 // indirect + github.com/gabriel-vasile/mimetype v1.4.2 // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect - github.com/go-openapi/swag v0.22.1 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.22.3 // indirect github.com/go-redis/redis/v7 v7.4.1 // indirect - github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 // indirect - github.com/go-sql-driver/mysql v1.6.0 // indirect + github.com/go-resty/resty/v2 v2.7.0 // indirect + github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/go-zookeeper/zk v1.0.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/godbus/dbus/v5 v5.0.6 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect - github.com/golang-jwt/jwt/v4 v4.2.0 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/google/flatbuffers v2.0.8+incompatible // indirect - github.com/google/gnostic v0.5.7-v3refs // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/cadvisor v0.47.1 // indirect + github.com/google/flatbuffers v23.1.21+incompatible // indirect + github.com/google/gnostic v0.6.9 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect - github.com/googleapis/gax-go/v2 v2.7.0 // indirect - github.com/gophercloud/gophercloud v0.25.0 // indirect + github.com/google/s2a-go v0.1.4 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.10.0 // indirect + github.com/gophercloud/gophercloud v1.2.0 // indirect github.com/gorilla/mux v1.8.0 // indirect - github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 // indirect + github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd // indirect github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/hashicorp/consul/api v1.15.3 // indirect + github.com/hashicorp/consul/api v1.20.0 // indirect github.com/hashicorp/cronexpr v1.1.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v1.3.1 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-retryablehttp v0.7.1 // indirect + github.com/hashicorp/go-retryablehttp v0.7.2 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/nomad/api v0.0.0-20220809212729-939d643fec2c // indirect - github.com/hashicorp/serf v0.9.8 // indirect - github.com/hetznercloud/hcloud-go v1.35.2 // indirect + github.com/hashicorp/nomad/api v0.0.0-20230308192510-48e7d70fcd4b // indirect + github.com/hashicorp/serf v0.10.1 // indirect + github.com/hetznercloud/hcloud-go v1.41.0 // indirect github.com/iancoleman/strcase v0.2.0 // indirect - github.com/imdario/mergo v0.3.12 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.1.2 // indirect - github.com/jaegertracing/jaeger v1.39.1-0.20221110195127-14c11365a856 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.1.4 // indirect + github.com/jaegertracing/jaeger v1.41.0 // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect github.com/jcmturner/gofork v1.7.6 // indirect @@ -281,156 +299,180 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/karrick/godirwalk v1.17.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/klauspost/compress v1.15.12 // indirect - github.com/knadh/koanf v1.4.4 // indirect - github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b // indirect + github.com/klauspost/compress v1.16.5 // indirect + github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165 // indirect github.com/leoluk/perflib_exporter v0.2.0 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/lightstep/go-expohisto v1.0.0 // indirect github.com/linkedin/goavro/v2 v2.9.8 // indirect - github.com/linode/linodego v1.8.0 // indirect + github.com/linode/linodego v1.14.1 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/magiconair/properties v1.8.6 // indirect + github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-ieproxy v0.0.9 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2 // indirect - github.com/miekg/dns v1.1.50 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/miekg/dns v1.1.51 // indirect + github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/sys/mountinfo v0.6.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mongodb-forks/digest v1.0.4 // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect - github.com/mostynb/go-grpc-compression v1.1.17 // indirect + github.com/mostynb/go-grpc-compression v1.1.18 // indirect + github.com/mrunalp/fileutils v0.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/nginxinc/nginx-prometheus-exporter v0.8.1-0.20201110005315-f5a5f8086c19 // indirect github.com/observiq/ctimefmt v1.0.0 // indirect github.com/oklog/ulid/v2 v2.0.2 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.66.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.66.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.79.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.79.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect - github.com/openlyinc/pointy v1.2.0 // indirect - github.com/openshift/api v0.0.0-20210521075222-e273a339932a // indirect + github.com/opencontainers/image-spec v1.1.0-rc2 // indirect + github.com/opencontainers/runc v1.1.5 // indirect + github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78 // indirect + github.com/opencontainers/selinux v1.10.0 // indirect + github.com/openshift/api v3.9.0+incompatible // indirect github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/openzipkin/zipkin-go v0.4.1 // indirect + github.com/ovh/go-ovh v1.3.0 // indirect + github.com/panta/machineid v1.0.2 // indirect github.com/paulmach/orb v0.4.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect - github.com/philhofer/fwd v1.1.1 // indirect + github.com/philhofer/fwd v1.1.2 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/pquerna/cachecontrol v0.1.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect - github.com/prometheus/procfs v0.8.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect github.com/prometheus/statsd_exporter v0.22.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rs/cors v1.8.2 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 // indirect - github.com/shirou/gopsutil/v3 v3.22.10 // indirect + github.com/rs/cors v1.9.0 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.14 // indirect + github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 // indirect + github.com/shirou/gopsutil/v3 v3.23.5 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/shopspring/decimal v1.3.1 // indirect - github.com/sijms/go-ora/v2 v2.5.8 // indirect - github.com/snowflakedb/gosnowflake v1.6.15 // indirect + github.com/sijms/go-ora/v2 v2.7.6 // indirect + github.com/snowflakedb/gosnowflake v1.6.18 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.9.2 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.6.1 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect - github.com/tg123/go-htpasswd v1.2.0 // indirect + github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect + github.com/tg123/go-htpasswd v1.2.1 // indirect github.com/tidwall/gjson v1.10.2 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/tinylru v1.1.0 // indirect github.com/tidwall/wal v1.1.7 // indirect - github.com/tinylib/msgp v1.1.6 // indirect - github.com/tklauser/go-sysconf v0.3.10 // indirect - github.com/tklauser/numcpus v0.4.0 // indirect + github.com/tilinna/clock v1.1.0 // indirect + github.com/tinylib/msgp v1.1.8 // indirect + github.com/tklauser/go-sysconf v0.3.11 // indirect + github.com/tklauser/numcpus v0.6.0 // indirect github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 // indirect + github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect - github.com/xdg-go/scram v1.1.1 // indirect - github.com/xdg-go/stringprep v1.0.3 // indirect + github.com/xdg-go/scram v1.1.2 // indirect + github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect - github.com/yusufpapurcu/wmi v1.2.2 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - go.mongodb.org/atlas v0.19.0 // indirect - go.mongodb.org/mongo-driver v1.10.3 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.11.1 // indirect - go.opentelemetry.io/contrib/zpages v0.36.4 // indirect - go.opentelemetry.io/otel v1.11.1 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.33.0 // indirect - go.opentelemetry.io/otel/metric v0.33.0 // indirect - go.opentelemetry.io/otel/sdk v1.11.1 // indirect - go.opentelemetry.io/otel/sdk/metric v0.33.0 // indirect - go.opentelemetry.io/otel/trace v1.11.1 // indirect - go.uber.org/goleak v1.2.0 // indirect - golang.org/x/crypto v0.1.0 // indirect - golang.org/x/exp v0.0.0-20221019170559-20944726eadf // indirect - golang.org/x/mod v0.6.0 // indirect - golang.org/x/net v0.1.0 // indirect - golang.org/x/oauth2 v0.1.0 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.2.0 // indirect - golang.org/x/term v0.1.0 // indirect - golang.org/x/text v0.4.0 // indirect - golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 // indirect - golang.org/x/tools v0.2.0 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.etcd.io/bbolt v1.3.7 // indirect + go.mongodb.org/atlas v0.28.0 // indirect + go.mongodb.org/mongo-driver v1.11.4 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.17.0 // indirect + go.opentelemetry.io/contrib/zpages v0.42.0 // indirect + go.opentelemetry.io/otel v1.16.0 // indirect + go.opentelemetry.io/otel/bridge/opencensus v0.39.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.39.0 // indirect + go.opentelemetry.io/otel/metric v1.16.0 // indirect + go.opentelemetry.io/otel/schema v0.0.4 // indirect + go.opentelemetry.io/otel/sdk v1.16.0 // indirect + go.opentelemetry.io/otel/sdk/metric v0.39.0 // indirect + go.uber.org/goleak v1.2.1 // indirect + golang.org/x/crypto v0.9.0 // indirect + golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect + golang.org/x/sync v0.2.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/term v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/time v0.3.0 // indirect + golang.org/x/tools v0.9.1 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - gonum.org/v1/gonum v0.12.0 // indirect - google.golang.org/api v0.103.0 // indirect + gonum.org/v1/gonum v0.13.0 // indirect + google.golang.org/api v0.125.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c // indirect + google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/square/go-jose.v2 v2.5.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.25.4 // indirect - k8s.io/apimachinery v0.25.4 // indirect - k8s.io/client-go v0.25.4 // indirect - k8s.io/klog/v2 v2.70.1 // indirect - k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect - k8s.io/kubelet v0.25.2 // indirect - k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect - sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect + k8s.io/api v0.27.2 // indirect + k8s.io/apimachinery v0.27.2 // indirect + k8s.io/client-go v0.27.2 // indirect + k8s.io/klog v1.0.0 // indirect + k8s.io/klog/v2 v2.90.1 // indirect + k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect + k8s.io/kubelet v0.27.2 // indirect + k8s.io/utils v0.0.0-20230308161112-d77c459e9343 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) @@ -438,6 +480,12 @@ require ( replace ( github.com/golang-migrate/migrate/v4 => github.com/sergey-telpuk/migrate/v4 v4.15.3-0.20220303065225-d5ae59d12ff7 github.com/vjeantet/grok => github.com/signoz/grok v1.0.3 + + // using 0.23.0 as there is an issue with 0.24.0 stats that results in + // an error + // panic: interface conversion: interface {} is nil, not func(*tag.Map, []stats.Measurement, map[string]interface {}) + + go.opencensus.io => go.opencensus.io v0.23.0 ) // see https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/4433 diff --git a/go.sum b/go.sum index 7373fc7b..f70d86ee 100644 --- a/go.sum +++ b/go.sum @@ -30,21 +30,19 @@ cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/longrunning v0.1.1 h1:y50CXG4j0+qvEukslYFBCrzaXX0qpFbBzc3PchSu/LE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -63,8 +61,8 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= -github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= -github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= github.com/AthenZ/athenz v1.10.39 h1:mtwHTF/v62ewY2Z5KWhuZgVXftBej1/Tn80zx4DcawY= github.com/AthenZ/athenz v1.10.39/go.mod h1:3Tg8HLsiQZp81BJY58JBeU2BR6B/H4/0MQGfCwhHNEA= github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= @@ -93,8 +91,8 @@ github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyC github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.16/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk= -github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= +github.com/Azure/go-autorest/autorest/adal v0.9.22 h1:/GblQdIudfEM3AWWZ0mrYJQSd7JS4S/Mbzh6F0ov0Xc= +github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk= github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= @@ -110,7 +108,6 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= @@ -118,26 +115,26 @@ github.com/ClickHouse/clickhouse-go v1.5.3 h1:Vok8zUb/wlqc9u8oEqQzBMBRDoFd8NxPRq github.com/ClickHouse/clickhouse-go v1.5.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/ClickHouse/clickhouse-go/v2 v2.0.12 h1:Nbl/NZwoM6LGJm7smNBgvtdr/rxjlIssSW3eG/Nmb9E= github.com/ClickHouse/clickhouse-go/v2 v2.0.12/go.mod h1:u4RoNQLLM2W6hNSPYrIESLJqaWSInZVmfM+MlaAhXcg= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 h1:KeNholpO2xKjgaaSyd+DyQRrsQjhbSeS7qe4nEw8aQw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962/go.mod h1:kC29dT1vFpj7py2OvG1khBdQpo3kInWP+6QipLbdngo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.34.1 h1:gcHr5iIamTMH+TOqvcIrkZ9zpDOKVkc2du/VYGJkYfM= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.34.1/go.mod h1:8jbDwk101z1YJ201wir2t/3O5Sxn55M37IDVwnQA1rg= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.13.1 h1:hR+NqMEDDSR8hLc5ZybuWtPfhmFVZwd6Ft7n25XnVjk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.13.1/go.mod h1:Xx0VKh7GJ4si3rmElbh19Mejxz68ibWg/J30ZOMrqzU= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= @@ -146,7 +143,6 @@ github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2 github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= -github.com/Microsoft/hcsshim v0.9.4 h1:mnUj0ivWy6UzbB1uLFqKR6F+ZyiDc7j4iGgHTpO+5+I= github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/Mottl/ctimefmt v0.0.0-20190803144728-fd2ac23a585a/go.mod h1:eyj2WSIdoPMPs2eNTLpSmM6Nzqo4V80/d6jHpnJ1SAI= @@ -154,21 +150,21 @@ github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb0 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/SAP/go-hdb v0.109.1 h1:9/FjC4/q48KYurBd5sFvprS/QFiUfh3p2Ji1xTia2ns= -github.com/SAP/go-hdb v0.109.1/go.mod h1:q4m5/C85n4JRrwB6c5c3/Fxvg5Cs1UDNAXYnoy8LvRQ= +github.com/SAP/go-hdb v1.2.6 h1:FLrDgSySez0Ye+e4g8pm0ciSj2xOdPFM0reY/fcNaS0= +github.com/SAP/go-hdb v1.2.6/go.mod h1:LCziJVuENlInAw8+9sb1ZgQZKThaFRE6vUcLeTLUr/M= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/Shopify/sarama v1.37.2 h1:LoBbU0yJPte0cE5TZCGdlzZRmMgMtZU/XgnUKZg9Cv4= -github.com/Shopify/sarama v1.37.2/go.mod h1:Nxye/E+YPru//Bpaorfhc3JsSGYwCaDDj+R4bK52U5o= +github.com/Shopify/sarama v1.38.1 h1:lqqPUPQZ7zPqYlWpTh+LQ9bhYNu2xJL6k1SJN4WVe2A= +github.com/Shopify/sarama v1.38.1/go.mod h1:iwv9a67Ha8VNa+TifujYoWGxWnu2kNVAQdSdZ4X2o5g= github.com/Shopify/toxiproxy/v2 v2.5.0 h1:i4LPT+qrSlKNtQf5QliVjdP08GyAH8+BUIc9gT0eahc= github.com/Showmax/go-fqdn v1.0.0 h1:0rG5IbmVliNT5O19Mfuvna9LL7zlHyRfsSvBPZmF9tM= github.com/Showmax/go-fqdn v1.0.0/go.mod h1:SfrFBzmDCtCGrnHhoDjuvFnKsWjEQX/Q9ARZvOrJAko= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alecthomas/assert/v2 v2.0.3 h1:WKqJODfOiQG0nEJKFKzDIG3E29CN2/4zR9XGJzKIkbg= -github.com/alecthomas/participle/v2 v2.0.0-beta.5 h1:y6dsSYVb1G5eK6mgmy+BgI3Mw35a3WghArZ/Hbebrjo= -github.com/alecthomas/participle/v2 v2.0.0-beta.5/go.mod h1:RC764t6n4L8D8ITAJv0qdokritYSNR3wV5cVwmIEaMM= -github.com/alecthomas/repr v0.1.0 h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE= +github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= +github.com/alecthomas/participle/v2 v2.0.0 h1:Fgrq+MbuSsJwIkw3fEj9h75vDP0Er5JzepJ0/HNHv0g= +github.com/alecthomas/participle/v2 v2.0.0/go.mod h1:rAKZdJldHu8084ojcWevWAL8KmEU+AT+Olodb+WoN2Y= +github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -178,8 +174,8 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAu github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= -github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= +github.com/antonmedv/expr v1.12.5 h1:Fq4okale9swwL3OeLLs9WD9H6GbgBLJyN/NUHRv+n0E= +github.com/antonmedv/expr v1.12.5/go.mod h1:FPC8iWArxls7axbVLsW+kpg1mz29A1b2M6jt+hZfDkU= github.com/apache/arrow/go/arrow v0.0.0-20210818145353-234c94e4ce64/go.mod h1:2qMFB56yOP3KzkB3PbYZ4AlUFg3a88F67TIx5lB/WwY= github.com/apache/arrow/go/arrow v0.0.0-20211013220434-5962184e7a30/go.mod h1:Q7yQnSMnLvcXlZ8RV+jwz/6y1rQTqbX6C82SndT52Zs= github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 h1:q4dksr6ICHXqG5hm0ZW5IHyeEJXoIJSOZeBLmWPNeIQ= @@ -188,101 +184,100 @@ github.com/apache/pulsar-client-go v0.8.1 h1:UZINLbH3I5YtNzqkju7g9vrl4CKrEgYSx2r github.com/apache/pulsar-client-go v0.8.1/go.mod h1:yJNcvn/IurarFDxwmoZvb2Ieylg630ifxeO/iXpk27I= github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e h1:EqiJ0Xil8NmcXyupNqXV9oYDBeWntEIegxLahrTr8DY= github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e/go.mod h1:Xee4tgYLFpYcPMcTfBYWE1uKRzeciodGTSEDMzsR6i8= -github.com/apache/thrift v0.17.0 h1:cMd2aj52n+8VoAtvSvLn4kDC3aZ6IAkBuqWQ2IDu7wo= -github.com/apache/thrift v0.17.0/go.mod h1:OLxhMRJxomX+1I/KUw03qoV3mMz16BwaKI+d4fPBx7Q= +github.com/apache/thrift v0.18.1 h1:lNhK/1nqjbwbiOPDBPFJVKxgDEGSepKuTh6OLiXW8kg= +github.com/apache/thrift v0.18.1/go.mod h1:rdQn/dCcDKEWjjylUeueum4vQEjG2v8v2PqriUnbr+I= github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q= -github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.32.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.44.142 h1:KZ1/FDwCSft1DuNllFaBtWpcG0CW2NgQjvOrE1TdlXE= -github.com/aws/aws-sdk-go v1.44.142/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.274 h1:vfreSv19e/9Ka9YytOzgzJasrRZfX7dnttLlbh8NKeA= +github.com/aws/aws-sdk-go v1.44.274/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.8.0/go.mod h1:xEFuWz+3TYdlPRuo+CqATbeDWIWyaT5uAPwPaWtgse0= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= -github.com/aws/aws-sdk-go-v2 v1.17.1 h1:02c72fDJr87N8RAC2s3Qu0YuvMRZKNZJ9F+lAehCazk= -github.com/aws/aws-sdk-go-v2 v1.17.1/go.mod h1:JLnGeGONAyi2lWXI1p0PCIOIy333JMVK1U7Hf0aRFLw= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 h1:tcFliCWne+zOuUfKNRn8JdFBuWPDuISDH08wD2ULkhk= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU= +github.com/aws/aws-sdk-go-v2 v1.17.7/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= +github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno= github.com/aws/aws-sdk-go-v2/config v1.6.0/go.mod h1:TNtBVmka80lRPk5+S9ZqVfFszOQAGJJ9KbT3EM3CHNU= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= -github.com/aws/aws-sdk-go-v2/config v1.17.7 h1:odVM52tFHhpqZBKNjVW5h+Zt1tKHbhdTQRb+0WHrNtw= -github.com/aws/aws-sdk-go-v2/config v1.17.7/go.mod h1:dN2gja/QXxFF15hQreyrqYhLBaQo1d9ZKe/v/uplQoI= +github.com/aws/aws-sdk-go-v2/config v1.18.19 h1:AqFK6zFNtq4i1EYu+eC7lcKHYnZagMn6SW171la0bGw= +github.com/aws/aws-sdk-go-v2/config v1.18.19/go.mod h1:XvTmGMY8d52ougvakOv1RpiTLPz9dlG/OQHsKU/cMmY= github.com/aws/aws-sdk-go-v2/credentials v1.3.2/go.mod h1:PACKuTJdt6AlXvEq8rFI4eDmoqDFC5DpVKQbWysaDgM= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= -github.com/aws/aws-sdk-go-v2/credentials v1.12.20/go.mod h1:UKY5HyIux08bbNA7Blv4PcXQ8cTkGh7ghHMFklaviR4= -github.com/aws/aws-sdk-go-v2/credentials v1.12.23 h1:LctvcJMIb8pxvk5hQhChpCu0WlU6oKQmcYb1HA4IZSA= -github.com/aws/aws-sdk-go-v2/credentials v1.12.23/go.mod h1:0awX9iRr/+UO7OwRQFpV1hNtXxOVuehpjVEzrIAYNcA= +github.com/aws/aws-sdk-go-v2/credentials v1.13.18/go.mod h1:vnwlwjIe+3XJPBYKu1et30ZPABG3VaXJYr8ryohpIyM= +github.com/aws/aws-sdk-go-v2/credentials v1.13.24 h1:PjiYyls3QdCrzqUN35jMWtUK1vqVZ+zLfdOa/UPFDp0= +github.com/aws/aws-sdk-go-v2/credentials v1.13.24/go.mod h1:jYPYi99wUOPIFi0rhiOvXeSEReVOzBqFNOX5bXYoG2o= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.4.0/go.mod h1:Mj/U8OpDbcVcoctrYwA2bak8k/HFPdcLzI/vaiXMwuM= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.19 h1:E3PXZSI3F2bzyj6XxUXdTIfvp425HHhwKsFvmzBwHgs= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.19/go.mod h1:VihW95zQpeKQWVPGkwT+2+WJNQV8UXFfMTWdU6VErL8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1/go.mod h1:lfUx8puBRdM5lVVMQlwt2v+ofiG/X6Ms+dy0UkG/kXw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 h1:jJPgroehGvjrde3XufFIJUZVK5A2L9a3KwSFgKy9n8w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3/go.mod h1:4Q0UFP0YJf0NrsEuEYHpM9fTSEVnD16Z3uyEF7J9JGM= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.4.0/go.mod h1:eHwXu2+uE/T6gpnYWwBwqoeqRf9IXyCcolyOWDRAErQ= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.4/go.mod h1:Ex7XQmbFmgFHrjUX6TN3mApKW5Hglyga+F7wZHTtYhA= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 h1:fAoVmNGhir6BR+RU0/EI+6+D7abM+MCwWf8v4ip5jNI= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33/go.mod h1:84XgODVR8uRhmOnUkKGUZKqIMxmjmLOR8Uyp7G/TPwc= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25 h1:nBO/RFxeq/IS5G9Of+ZrgucRciie2qpLy++3UGZ+q2E= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25/go.mod h1:Zb29PYkf42vVYQY6pvSyJCJcFHlPIiY+YKdPtwnvMkY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.19 h1:oRHDrwCTVT8ZXi4sr9Ld+EXk7N/KGssOr2ygNeojEhw= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.19/go.mod h1:6Q0546uHDp421okhmmGfbxzq2hBqbXFNpi4k+Q1JnQA= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59 h1:E3Y+OfzOK1+rmRo/K2G0ml8Vs+Xqk0kOnf4nS0kUtBc= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59/go.mod h1:1M4PLSBUVfBI0aP+C9XI7SM6kZPCGYyI6izWz0TGprE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31/go.mod h1:QT0BqUvX1Bh2ABdTGnjqEjvjzrCfIniM9Sc8zn9Yndo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25/go.mod h1:zBHOPwhBc3FlQjQJE/D3IfPWiWaQmT06Vq9aNukDo0k= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.0/go.mod h1:Q5jATQc+f1MfZp3PDMhn6ry18hGvE0i8yvbXoKbnZaE= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 h1:wj5Rwc05hvUSvKuOF29IYb9QrCLjU+rHAy/x/o0DK2c= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 h1:ZSIPAkAsCCjYrhqfw2+lNzWDzxzHXEckFkTePL5RSWQ= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14/go.mod h1:AyGgqiKv9ECM6IZeNQtdT8NnMvUb3/2wokeq2Fgryto= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32 h1:p5luUImdIqywn6JpQsW3tq5GNOxKmOnEpybzPx+d1lk= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32/go.mod h1:XGhIBZDEgfqmFIugclZ6FU7v75nHhBDtzuB4xB/tEi4= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23 h1:DWYZIsyqagnWL00f8M/SOr9fN063OEQWn9LLTbdYXsk= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23/go.mod h1:uIiFgURZbACBEQJfqTZPb/jxO7R+9LeoHUFudtIdeQI= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.2.2/go.mod h1:EASdTcM1lGhUe1/p4gkojHwlGJkeoRjjr1sRCzup3Is= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0/go.mod h1:v8ygadNyATSm6elwJ/4gzJwcFhri9RqS8skgHKiwXPU= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 h1:Lh1AShsuIJTwMkoxVCAYPJgNG5H+eN6SmoUn8nOZ5wE= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9/go.mod h1:a9j48l6yL5XINLHLcOKInjdvknN+vWqPBxqeIDw7ktw= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 h1:BBYoNQt2kUZUUK4bIPsKrCcjVPUMNsgQpNAwhznK/zo= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC6Zh2ojtV2LoC0MNwHWc6qXv/j2vrQtlftkdA= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26 h1:CeuSeq/8FnYpPtnuIeLQEEvDv9zUjneuYi8EghMBdwQ= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26/go.mod h1:2UqAAwMUXKeRkAHIlDJqvMVgOWkUi/AUXPk/YIe+Dg4= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.2.2/go.mod h1:NXmNI41bdEsJMrD0v9rUvbGCB5GwdBEpKvUvIY3vTFg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19 h1:GE25AWCdNUPh9AOJzI9KIJnja7IwUc1WyUqz/JTyJ/I= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.19/go.mod h1:02CP6iuYP+IVnBX5HULVdSAku/85eHB2Y9EsFhrkEwU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25/go.mod h1:/95IA+0lMnzW6XzqYJRpjjsAbKEORVeO0anQqjd2CNU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 h1:0iKliEXAcCa2qVtRs7Ot5hItA2MsufrphbRFlz1Owxo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27/go.mod h1:EOwBD4J4S5qYszS5/3DpkejfuK+Z5/1uzICfPaZLtqw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.5.2/go.mod h1:QuL2Ym8BkrLmN4lUofXYq6000/i5jPjosCNK//t6gak= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.2/go.mod h1:np7TMuJNT83O0oDOSF8i4dF3dvGqA6hPYYo6YYkzgRA= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 h1:HfVVR1vItaG6le+Bpw6P4midjBDMKnjMyZnw9MXYUcE= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0 h1:e2ooMhpYGhDnBfSvIyusvAwX7KexuZaHbQY2Dyei7VU= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0/go.mod h1:bh2E0CXKZsQN+faiKVqC40vfNMAWheoULBCnEgO9K+8= github.com/aws/aws-sdk-go-v2/service/s3 v1.12.0/go.mod h1:6J++A5xpo7QDsIeSqPK4UHqMSyPOCopa+zKtqAMhqVQ= github.com/aws/aws-sdk-go-v2/service/s3 v1.16.1/go.mod h1:CQe/KvWV1AqRc65KqeJjrLzr5X2ijnFTTVzJW0VBRCI= -github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 h1:3/gm/JTX9bX8CpzTgIlrtYpB3EVBDxyg/GY/QdcIEZw= -github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo= +github.com/aws/aws-sdk-go-v2/service/s3 v1.31.0 h1:B1G2pSPvbAtQjilPq+Y7jLIzCOwKzuVEl+aBBaNG0AQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.31.0/go.mod h1:ncltU6n4Nof5uJttDtcNQ537uNuwYqsZZQcpkd2/GUQ= github.com/aws/aws-sdk-go-v2/service/sso v1.3.2/go.mod h1:J21I6kF+d/6XHVk7kp/cx9YVD2TMD2TbLwtRGVcinXo= github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.25 h1:GFZitO48N/7EsFDt8fMa5iYdmWqkUDDB3Eje6z3kbG0= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.25/go.mod h1:IARHuzTXmj1C0KS35vboR0FeJ89OkEy1M9mWbK2ifCI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.8 h1:jcw6kKZrtNfBPJkaHrscDOZoe5gvi9wjudnxvozYFJo= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.8/go.mod h1:er2JHN+kBY6FcMfcBBKNGCT3CarImmdFzishsqBmSRI= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.6/go.mod h1:Y1VOmit/Fn6Tz1uFAeCO6Q7M2fmfXSCLeL5INVYsLuY= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 h1:UBQjaMTCKwyUYwiVnUt6toEJwGXsLBI6al083tpjJzY= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.10/go.mod h1:ouy2P4z6sJN70fR3ka3wD3Ro3KezSxU6eKGQI2+2fjI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6/go.mod h1:Lh/bc9XUf8CfOY6Jp5aIkQtN+j1mc+nExc+KXj9jx2s= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 h1:PkHIIJs8qvq0e5QybnZoG1K/9QTrLr9OsqCIo59jOBA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk= github.com/aws/aws-sdk-go-v2/service/sts v1.6.1/go.mod h1:hLZ/AnkIKHLuPGjEiyghNEdvJ2PP0MgOxcmv9EBJ4xs= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM= -github.com/aws/aws-sdk-go-v2/service/sts v1.17.1 h1:KRAix/KHvjGODaHAMXnxRk9t0D+4IJVUuS/uwXxngXk= -github.com/aws/aws-sdk-go-v2/service/sts v1.17.1/go.mod h1:bXcN3koeVYiJcdDU89n3kCYILob7Y34AeLopUbZgLT4= +github.com/aws/aws-sdk-go-v2/service/sts v1.18.7/go.mod h1:JuTnSoeePXmMVe9G8NcjjwgOKEfZ4cOjMuT2IBT/2eI= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 h1:2DQLAKDteoEDI8zpCzqBMaZlJuoE9iTYD0gFmXVax9E= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.0/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8= github.com/aws/smithy-go v1.7.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.13.4 h1:/RN2z1txIJWeXeOkzX+Hk/4Uuvv7dWtCjbmVJcrskyk= -github.com/aws/smithy-go v1.13.4/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= +github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0/go.mod h1:6YNgTHLutezwnBvyneBbwvB8C82y3dcoOj5EQJIdGXA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -298,30 +293,35 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmatcuk/doublestar/v3 v3.0.0 h1:TQtVPlDnAYwcrVNB2JiGuMc++H5qzWZd9PhkNo5WyHI= -github.com/bmatcuk/doublestar/v3 v3.0.0/go.mod h1:6PcTVMw80pCY1RVuoqu3V++99uQB3vsSYKPTd8AWA0k= +github.com/bmatcuk/doublestar/v4 v4.6.0 h1:HTuxyug8GyFbRkrffIpzNCSK4luc0TY3wzXvzIZhEXc= +github.com/bmatcuk/doublestar/v4 v4.6.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= -github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -330,6 +330,8 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -345,8 +347,8 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc h1:PYXxkRUBGUMa5xgMVMDl62vEklZvKpVaxQeN9ie7Hfk= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195 h1:58f1tJ1ra+zFINPlwLWvQsR9CzAKt2e+EWV2yX9oXQ4= +github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go/v2 v2.1.1/go.mod h1:7NtUnP6eK+l6k483WSYNrq3Kb23bWV10IRV1TyeSpwM= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -364,12 +366,13 @@ github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4S github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -384,7 +387,7 @@ github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= github.com/containerd/containerd v1.5.9/go.mod h1:fvQqCfadDGga5HZyn3j4+dx56qj2I9YwBrlSdalvJYQ= -github.com/containerd/containerd v1.6.8 h1:h4dOFDwzHmqFEP754PgfgTeVXFnLiRc6kiqC7tplDJs= +github.com/containerd/containerd v1.6.19 h1:F0qgQPrG0P2JPgwpxWxYavrVeXAG0ezUIB9Z/4FTUAU= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= @@ -417,10 +420,12 @@ github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDG github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0 h1:GbtyLRxb0gOLR0TYQWt3O6B0NvT8tMdorEHqIQo/lWI= github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= @@ -451,15 +456,21 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7 github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= @@ -468,7 +479,6 @@ github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjI github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -483,8 +493,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dhui/dktest v0.3.9 h1:gE51cCl9PJG0Dw3cB7nuEahXx02LAf8IjKmq1DbKqrQ= github.com/dhui/dktest v0.3.9/go.mod h1:lTpM9nXq8oO90hEeMXvoIZkS+n3E1DBIADxHqXjeNiY= -github.com/digitalocean/godo v1.82.0 h1:lqAit46H1CqJGjh7LDbsamng/UMBME5rvmfH3Vb5Yy8= -github.com/digitalocean/godo v1.82.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= +github.com/digitalocean/godo v1.97.0 h1:p9w1yCcWMZcxFSLPToNGXA96WfUVLXqoHti6GzVomL4= +github.com/digitalocean/godo v1.97.0/go.mod h1:NRpFznZFvhHjBoqZAaOD3khVzsJ3EibzKqFL4R60dmA= github.com/dimfeld/httptreemux v5.0.1+incompatible h1:Qj3gVcDNoOthBAqftuD596rm4wg/adLLz5xh5CmpiCA= github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/8Bk2O3LyUV436/yaRGkhP6Z0= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= @@ -493,11 +503,13 @@ github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5O github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.21+incompatible h1:UTLdBmHk3bEY+w8qeO5KttOhy6OmXWsl/FEet9Uswog= github.com/docker/docker v20.10.21+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg= +github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11/go.mod h1:a6bNUGTbQBsY6VRHTr4h/rkOXjl244DyRD0tx3fgq4Q= @@ -518,16 +530,16 @@ github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQx github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.3.0 h1:RRL0nge+cWGlxXbUzJ7yMcq6w2XBEr19dCN6HECGaT0= github.com/eapache/go-resiliency v1.3.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6 h1:8yY/I9ndfrgrXUbOGObLHKBR4Fl3nZXwM2c7OYTT8hM= +github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6/go.mod h1:YvSRo5mw33fLEx1+DlK6L2VV43tJt5Eyel9n9XBcR+0= github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= -github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= +github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -537,21 +549,26 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= -github.com/envoyproxy/go-control-plane v0.10.3 h1:xdCVXxEe0Y3FQith+0cj2irwZudqGYvecuLB1HtdexY= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.11.0 h1:jtLewhRR2vMRNnq2ZZUoCjUlgut+Y0+sDDWPOfwOi1o= +github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= -github.com/envoyproxy/protoc-gen-validate v0.6.7 h1:qcZcULcd/abmQg6dwigimCNEyi4gg31M/xaciQlDml8= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.10.0 h1:oIfnZFdC0YhpNNEX+SuIqko4cqqVZeN9IGTrhZje83Y= +github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= +github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= +github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -559,8 +576,7 @@ github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9 github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -569,11 +585,9 @@ github.com/fsouza/fake-gcs-server v1.17.0/go.mod h1:D1rTE4YCyHFNa99oyJJ5HyclvN/0 github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/gabriel-vasile/mimetype v1.3.1/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= -github.com/gabriel-vasile/mimetype v1.4.1 h1:TRWk7se+TOjCYgRth7+1/OYLNiRNIotknkFtf/dnN7Q= -github.com/gabriel-vasile/mimetype v1.4.1/go.mod h1:05Vi0w3Y9c/lNvJOdmIwvrrAhX3rYhfQQCaf9VJcv7M= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= -github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -596,15 +610,16 @@ github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= @@ -612,29 +627,30 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.22.1 h1:S6xFhsBKAtvfphnJwRzeCh3OEGsTL/crXdEetSxLs0Q= -github.com/go-openapi/swag v0.22.1/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= -github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= -github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= +github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-zookeeper/zk v1.0.3 h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg= github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= @@ -672,6 +688,8 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= @@ -690,19 +708,18 @@ github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keL github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -733,8 +750,9 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -743,11 +761,13 @@ github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/cadvisor v0.47.1 h1:YyKnRy/3myRNGOvF1bNF9FFnpjY7Gky5yKi/ZlN+BSo= +github.com/google/cadvisor v0.47.1/go.mod h1:iJdTjcjyKHjLCf7OSTzwP5GxdfrkPusw2x5bwGvuLUw= github.com/google/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/flatbuffers v23.1.21+incompatible h1:bUqzx/MXCDxuS0hRJL2EfjyZL3uQrPbMocUa8zGqsTA= +github.com/google/flatbuffers v23.1.21+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= +github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -791,25 +811,28 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10 h1:CqYfpuYIjnlNxM3msdyPRKabhXZWbKjf3Q8BWROFBso= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.10.0 h1:ebSgKfMxynOdxw8QQuFOKMgomqeLGPqNLQox2bo42zg= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gophercloud/gophercloud v0.25.0 h1:C3Oae7y0fUVQGSsBrb3zliAjdX+riCSEh4lNMejFNI4= -github.com/gophercloud/gophercloud v0.25.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= +github.com/gophercloud/gophercloud v1.2.0 h1:1oXyj4g54KBg/kFtCdMM6jtxSzeIyg8wv4z1HoGPp1E= +github.com/gophercloud/gophercloud v1.2.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -827,8 +850,8 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 h1:uirlL/j72L93RhV4+mkWhjv0cov2I0MIgPOG9rMDr1k= -github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= +github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= +github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665 h1:LONJvPBBd9wBmzSUmNHI7XpLE2qQ5tzUimeBadiVDuA= github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665/go.mod h1:L69/dBlPQlWkcnU76WgcppK5e4rrxzQdi6LhLnK/ytA= @@ -839,20 +862,18 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0 h1:fi9bGIUJOGzzrHBbP8NWbTfNC5fKO6X7kFw40TOqGB8= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0/go.mod h1:uY3Aurq+SxwQCpdX91xZ9CgxIMT1EsYtcidljXufYIY= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2 h1:gDLXvp5S9izjldquuoAhDzccbskOL6tDC5jMSyx3zxE= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2/go.mod h1:7pdNwVWBBHGiCxa9lAszqCJMbfTISJ7oMftp8+UGV08= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= -github.com/hashicorp/consul/api v1.15.3 h1:WYONYL2rxTXtlekAqblR2SCdJsizMDIj/uXb5wNy9zU= -github.com/hashicorp/consul/api v1.15.3/go.mod h1:/g/qgcoBcEXALCNZgRRisyTW0nY86++L0KbeAMXYCeY= +github.com/hashicorp/consul/api v1.20.0 h1:9IHTjNVSZ7MIwjlW3N3a7iGiykCMDpxZu8jsxFJh0yc= +github.com/hashicorp/consul/api v1.20.0/go.mod h1:nR64eD44KQ59Of/ECwt2vUmIK2DKsDzAwTmwmLl8Wpo= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/consul/sdk v0.11.0 h1:HRzj8YSCln2yGgCumN5CL8lYlD3gBurnervJRJAZyC4= -github.com/hashicorp/consul/sdk v0.11.0/go.mod h1:yPkX5Q6CsxTFMjQQDJwzeNmUUF5NUGGbrDsv9wTb8cw= +github.com/hashicorp/consul/sdk v0.13.1 h1:EygWVWWMczTzXGpO93awkHFzfUka6hLYJ0qhETd+6lY= github.com/hashicorp/cronexpr v1.1.1 h1:NJZDd87hGXjoZBdvyCF9mX4DCq5Wy7+A/w+A7q0wn6c= github.com/hashicorp/cronexpr v1.1.1/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -867,16 +888,13 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9 github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.3.1 h1:vDwF1DFNZhntP4DAjuTpOw3uEgMUpXh1pB5fW9DqHpo= -github.com/hashicorp/go-hclog v1.3.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= -github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= @@ -885,8 +903,8 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= -github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0= +github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= @@ -906,8 +924,8 @@ github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4= +github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -915,21 +933,20 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.1 h1:MXgUXLqva1QvpVEDQW1IQLG0wivQAtmFlHRQ+1vWZfM= -github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/nomad/api v0.0.0-20220809212729-939d643fec2c h1:lV5A4cLQr1Bh1xGSSQ2R0fDRK4GZnfXxYia4Q7aaTXc= -github.com/hashicorp/nomad/api v0.0.0-20220809212729-939d643fec2c/go.mod h1:wPbfT+Daj0i4M73rK2TGvIHo9FUWMJ/hrhn8Xb4Puvc= +github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= +github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= +github.com/hashicorp/nomad/api v0.0.0-20230308192510-48e7d70fcd4b h1:EkuSTU8c/63q4LMayj8ilgg/4I5PXDFVcnqKfs9qcwI= +github.com/hashicorp/nomad/api v0.0.0-20230308192510-48e7d70fcd4b/go.mod h1:bKUb1ytds5KwUioHdvdq9jmrDqCThv95si0Ub7iNeBg= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/serf v0.9.8 h1:JGklO/2Drf1QGa312EieQN3zhxQ+aJg6pG+aC3MFaVo= -github.com/hashicorp/serf v0.9.8/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= +github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hetznercloud/hcloud-go v1.35.2 h1:eEDtmDiI2plZ2UQmj4YpiYse5XbtpXOUBpAdIOLxzgE= -github.com/hetznercloud/hcloud-go v1.35.2/go.mod h1:mepQwR6va27S3UQthaEPGS86jtzSY9xWL1e9dyxXpgA= +github.com/hetznercloud/hcloud-go v1.41.0 h1:KJGFRRc68QiVu4PrEP5BmCQVveCP2CM26UGQUKGpIUs= +github.com/hetznercloud/hcloud-go v1.41.0/go.mod h1:NaHg47L6C77mngZhwBG652dTAztYrsZ2/iITJKhQkHA= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hjson/hjson-go/v4 v4.0.0 h1:wlm6IYYqHjOdXH1gHev4VoXCaW20HdQAGCxdOEEg2cs= github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= @@ -942,15 +959,16 @@ github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6 h1:s9ZL6ZhFF8y6ebnm1FLvobkzoIu5xwDQUcRPk/IEhpM= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6/go.mod h1:aXdIdfn2OcGnMhOTojXmwZqXKgC3MU5riiNvzwwG9OY= -github.com/ionos-cloud/sdk-go/v6 v6.1.2 h1:es5R5sVmjHFrYNBbJfAeHF+16GheaJMyc63xWxIAec4= -github.com/ionos-cloud/sdk-go/v6 v6.1.2/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= +github.com/ionos-cloud/sdk-go/v6 v6.1.4 h1:BJHhFA8Q1SZC7VOXqKKr2BV2ysQ2/4hlk1e4hZte7GY= +github.com/ionos-cloud/sdk-go/v6 v6.1.4/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= @@ -995,8 +1013,8 @@ github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0f github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jaegertracing/jaeger v1.39.1-0.20221110195127-14c11365a856 h1:YLZ10whw2OQWjHnjqklvXSpS6QY+xhPsUTUya8yQQvc= -github.com/jaegertracing/jaeger v1.39.1-0.20221110195127-14c11365a856/go.mod h1:4UMLDc2yEm0f2Djlej2F7B/BMXRpSyVQX8CkuvtQ4nk= +github.com/jaegertracing/jaeger v1.41.0 h1:vVNky8dP46M2RjGaZ7qRENqylW+tBFay3h57N16Ip7M= +github.com/jaegertracing/jaeger v1.41.0/go.mod h1:SIkAT75iVmA9U+mESGYuMH6UQv6V9Qy4qxo0lwfCQAc= github.com/jawher/mow.cli v1.0.4/go.mod h1:5hQj2V8g+qYmLUVWqu4Wuja1pI57M83EChYLVZ0sMKk= github.com/jawher/mow.cli v1.2.0/go.mod h1:y+pcA3jBAdo/GIZx/0rFjw/K2bVEODP9rfZOfaiq8Ko= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -1049,6 +1067,8 @@ github.com/k0kubun/pp v2.3.0+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3t github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI= +github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= @@ -1063,13 +1083,12 @@ github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= -github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/knadh/koanf v1.4.4 h1:d2jY5nCCeoaiqvEKSBW9rEc93EfNy/XWgWsSB3j7JEA= -github.com/knadh/koanf v1.4.4/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= -github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= -github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= +github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= +github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= +github.com/knadh/koanf v1.5.0/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= +github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= +github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -1078,7 +1097,6 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= @@ -1097,24 +1115,21 @@ github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8LbfQI7cA4= github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/linkedin/goavro/v2 v2.9.8 h1:jN50elxBsGBDGVDEKqUlDuU1cFwJ11K/yrJCBMe/7Wg= github.com/linkedin/goavro/v2 v2.9.8/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= -github.com/linode/linodego v1.8.0 h1:7B2UaWu6C48tZZZrtINWRElAcwzk4TLnL9USjKf3xm0= -github.com/linode/linodego v1.8.0/go.mod h1:heqhl91D8QTPVm2k9qZHP78zzbOdTFLXE9NJc3bcc50= -github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= -github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/linode/linodego v1.14.1 h1:uGxQyy0BidoEpLGdvfi4cPgEW+0YUFsEGrLEhcTfjNc= +github.com/linode/linodego v1.14.1/go.mod h1:NJlzvlNtdMRRkXb0oN6UWzUkj6t+IBsyveHgZ5Ppjyk= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= @@ -1130,8 +1145,9 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-ieproxy v0.0.9 h1:RvVbLiMv/Hbjf1gRaC2AQyzwbdVhdId7D2vPnXIml4k= github.com/mattn/go-ieproxy v0.0.9/go.mod h1:eF30/rfdQUO9EnzNIZQr0r9HiLMlZNCpJkHbmMuOAE0= @@ -1144,25 +1160,27 @@ github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2y github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.10/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/matttproud/golang_protobuf_extensions v1.0.2 h1:hAHbPm5IJGijwng3PWk09JkG9WeqChjprR5s9bBZ+OM= github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= -github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/dns v1.1.51 h1:0+Xg7vObnhrz/4ZCZcZh7zPXlmU0aveS2HDBd0m0qSo= +github.com/miekg/dns v1.1.51/go.mod h1:2Z9d3CP1LQWihRZUf29mQ19yDThaI4DAYzte2CaQW5c= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= @@ -1192,15 +1210,19 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mkevac/debugcharts v0.0.0-20191222103121-ae1c48aa8615/go.mod h1:Ad7oeElCZqA1Ufj0U9/liOF4BtVepxRcTvr2ey7zTvM= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= +github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1215,8 +1237,9 @@ github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6f github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mostynb/go-grpc-compression v1.1.17 h1:N9t6taOJN3mNTTi0wDf4e3lp/G/ON1TP67Pn0vTUA9I= -github.com/mostynb/go-grpc-compression v1.1.17/go.mod h1:FUSBr0QjKqQgoDG/e0yiqlR6aqyXC39+g/hFLDfSsEY= +github.com/mostynb/go-grpc-compression v1.1.18 h1:4a9UFaq3GvZO64ZRWPhxbJhAMsbDNIGznsSA3v1oO8U= +github.com/mostynb/go-grpc-compression v1.1.18/go.mod h1:U/0nmev+iFgBJ/jsVEeJi4UzoGrixmDcsfmMB6JsROg= +github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= @@ -1257,7 +1280,7 @@ github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0 github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU= +github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1265,238 +1288,258 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q= +github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= github.com/open-telemetry/opamp-go v0.5.0 h1:2YFbb6G4qBkq3yTRdVb5Nfz9hKHW/ldUyex352e1J7g= github.com/open-telemetry/opamp-go v0.5.0/go.mod h1:IMdeuHGVc5CjKSu5/oNV0o+UmiXuahoHvoZ4GOmAI9M= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.66.0 h1:aCbnZmugygYv/Ij1QDpkf7TZ8ti0bkXSy5VuNlC2ADg= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.66.0/go.mod h1:MGNqxHpHVdoxhbkuqloLHQH/mZPKT8Anx7bUJwbjcGk= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.66.0 h1:qyLVcRXVQaFR4pkvbtix7LNj246UVWxsMCshIHZHs2o= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.66.0/go.mod h1:IZAMjwXdHNQMvVpP0Es0AhEkc1qgqjNmAXmdf8Rm+0E= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.66.0 h1:phZvFr0K80nnd54zpYrkKNWJxIv+PHN1nHgERU6ftQ4= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.66.0/go.mod h1:87Sqvsj/m7/oDewR5ZNzDZAAW1MEXnEkbIlkcRzSb3g= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.66.0 h1:BuBCY64iYCBOx8Ipf0G/TfzOpKnEf77MRGzjSyXFA44= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.66.0/go.mod h1:CUOm4hbUTOLuXm04zi6XvFOkGKeiKk5Ob1T7hN10ZIQ= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.66.0 h1:RMpiGiYvsWxiza/LR+0LdO7ijcaUl1lWGgVqQALI0dA= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.66.0/go.mod h1:R2SflSho/S8dHjEzXA6h32uYVsTDRaCIY7ajmdLAFjk= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.66.0 h1:8O66lPiduaWAcRuRsQgL3lm4xOGNU1jFRsKxQwUghQY= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.66.0/go.mod h1:AcxJ8fl0D8IkstubzSUHr3UHTFSJ8ZyzBwdkGte+YE0= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.66.0 h1:z6O9ov2HMNyl18cAZ7S+9Ec0cjd4e40nCUPZHPvFtoE= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.66.0/go.mod h1:fMc99j8HzCx5eRLb63qFyIrGHuRUVKnXtqEvFvgAZIA= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.66.0 h1:vJ8tI5ehflz9fSjrwZ0IEAj4gOuIgTk15kJkC30VHjo= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.66.0/go.mod h1:s3nr8sLY94dV56b04X/tCR0ChInxEJ7EU0TOkz0764o= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.66.0 h1:ZG1WCBvB3QDb48XdH/nXMxc0CCJpQjwlFeSJnexFDw4= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.66.0/go.mod h1:o1eJui1FW4+epvuMk2p74sHSpkwxn6InH7jvrPlXI3c= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.66.0 h1:jPT+d36vO/PBUJPjEtWJmjofZZX2XESHRVxirTRLl1c= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.66.0/go.mod h1:73q2rLO+7iYOtDoeg1bz4DilMD/J1ACH+94Qwwu0418= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.66.0 h1:QuL7iKfHSdAo5j9rvk3lOezFHPNoedY3mubREZRvqJM= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.66.0/go.mod h1:b0FycRbJ/yRasvFOlOjHCzK9POhqw0TH8GAIaU3uiUE= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.66.0 h1:s00P57xa2blxjXWN+mV/u/GGIBuAfmEkaRfsUpqzqfw= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.66.0/go.mod h1:SPD+4DQF+2Ro09ohXhmHntRR768XLTmfLLr0xf9PQTQ= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.66.0 h1:P4KXrmG+b5sjwqc5CerCTZSCeBsZYKf/Whu0hsAgUb4= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.66.0/go.mod h1:5QM/tVtquktdDn5xbVf7fxTK+ZmzewOWm+AV+y2s66g= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.66.0 h1:PKOtIDuuTZklVXS+Bxk56xSIGyBMneu3Np92nyEbCqI= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.66.0/go.mod h1:b1Dovp0IQr4QFuXQRvBAVbEyclqOmp6ym8qoeyYsOhg= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension v0.66.0 h1:+fdgvLpenO2JLla7loNDNvTYQMM4uZXwmUDkd6cF4ic= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension v0.66.0/go.mod h1:PsYB2XXnfba/bnqehtqwtCxdr6rTSfT1qNs1AMTxycA= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.66.0 h1:NPZKCUZtBotiJReGXMvRsdc3GJgpf1f/Qm8mrvChiSk= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.66.0/go.mod h1:+NLyY4alAXU7ljlVE44T+7ZOwXay+CxEenvnp+ESJAE= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.66.0 h1:bGmsRuvSM8kOILDi57vC0fW7aQq4J1rpAP4+//cIfoc= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.66.0/go.mod h1:5BSLmGzfOThbjtsqFyrC13o/TGfkekXdRHxj/fs2wLA= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.66.0 h1:lYWstkX+52uAfZgJQ2LVOSeSRFrsAU93G0q6dnfoPF0= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.66.0/go.mod h1:965dwKLmP9j2orrMIgu35AK3SkqN+FQfM0EONEB4Q6M= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.66.0 h1:JGQEQWOinkocHkDbJOt5AcypERXQ08JfxLU4C1XZ4y0= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.66.0/go.mod h1:czC5l7ZuspJx4cFa0LLKQ4HtCL5ieOSyTKtmb4gPaz4= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.66.0 h1:FlDvKsz3gtyJkNm0i9hmIUI6wzgR1u+pJgpDv0mDYww= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.66.0/go.mod h1:itBcWEFbGU8NoLW4yegfQAO7/5VA2e6i3n594fNgHe8= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/dockerobserver v0.66.0 h1:dmW3bs3MFq1C1nX588yvjDafI5n+FkQ9p0t+g1qdPXs= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/dockerobserver v0.66.0/go.mod h1:XjLpltIp8HayH3nsLadpzYaVZqF/Crv9W5VrlK/fchc= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.66.0 h1:UMqOFx5qaMwRHkC49qec/A7Gf9JaBB8KtqA3AVyLdNo= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.66.0/go.mod h1:R1mmvBowv4VzoLYF18ipFICuBmc13GGBUcMjXvrm3NY= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.66.0 h1:xNJKyguTkiNZF+7TuZFlfo4M2vpsO05U989DBYgO8yE= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.66.0/go.mod h1:OuRYJ5yq+nJab1G21HVaeQk6qeFCMbgVmpyNjBZDZlM= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.66.0 h1:rI2fQPNXFsc/pFTHxDL3wf+yTfGtRrEUkJpM2/bKvPU= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.66.0/go.mod h1:FTUzFrW8nzIiPfERCgQPaKfqauglgIMqD4icQUt3DKw= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.66.0 h1:R8tmjnxiFzAucq7Cau+qYdd8Nos8/8keYiZ2l6TEO7w= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.66.0/go.mod h1:d3yYjgCwd3UEroYk/kaZFZ8/7DGi98o7vfU/rdduoxI= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.66.0 h1:9EDrCMyAL+hrvbi+t1JMWzXuCoIsxgEjjTF5sb7WrUk= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.66.0/go.mod h1:YwwLT56gFXP5IajTOyjlbs3iYXDbRNKG398KRC6tud0= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.66.0 h1:TN+doBBHnilFm4NVzzVOy3hWAnlMlnoj47Oect/UnqI= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.66.0/go.mod h1:wm4UGOKk32jLkZ5ac1qy+upyvEAnQOXGvFQ/FR1w9A8= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.66.0 h1:yXfCFDA1Yv5kriXeJwfvOX6vusG8DWEAzkXG25b9qL4= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.66.0/go.mod h1:+VGrVnS5SU/bZrFjhHzAZC3z99dblT7im32IUBx5RxI= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.66.0 h1:fbquIE8aCBfK07uAL5xQWX3x80JohLyQ2Ya/69shkrI= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.66.0/go.mod h1:eN9PjsqWL/UHq7VeORnsHtcoZJivigvqK8W7Mejbd08= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.66.0 h1:RulU4uPrYuBvZ6QnVLJo8YyTqgcGjVimtSuRm4jR+/I= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.66.0/go.mod h1:PxQbY3qvKg/tG11os9zTf0rUU/mC62ftBnfsNEeneSM= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.66.0 h1:+aczm6gEKlWMd1Dx7xCg2cZtlIrB6t2HBB3KO3+G/4Y= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.66.0/go.mod h1:0C+C94bHN2OpKbKWLF5eRAZq4PngUUOxwt3RFHuw+Io= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.66.0 h1:3+zQ/vjkPIA0KcPWGAbvODeMOi3yzaojpXxITvtdyvk= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.66.0/go.mod h1:7+g9uaUTSDZNgnw1WlunCn/j6qr9F0UWdjII548bhyI= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.66.0 h1:wAahs7uylXOhKymq+vOVt99rITUT15jG1SsyiRxVJSk= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.66.0/go.mod h1:3ec57Tg+dTau8k8kFaHJSbrzsC6UHYnbQ63Dg0f+lhg= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.66.0 h1:sfcjS87S3J6YO4qaF5JDK6s9NzXuhztK7edSBc4GBaQ= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.66.0/go.mod h1:nRGasOVi+mVmCd6r1Lbn4ofeNIRIm+Pfj5jK1JRB8f8= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.66.0 h1:NpJ4MJvn+QRWLlfEcy58+qxi+XcVryGE05gqS+nWwrM= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.66.0/go.mod h1:Yi+MFEAiXrEQ10DTQ7hD2BcVWXQcIFHLwPcQIDPmbUw= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.66.0 h1:uTK3KkVTggcWWVFuu/K9jN1k9adH0Nt9G/yB0iQOzB0= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.66.0/go.mod h1:jzHiDV/uetySLhOSra9GIvxKvXNgkxfkcSe+hQ8VGOs= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest v0.66.0 h1:S9XgewmfAs927YtKKqSqDauDMEF5w7LrLUFz4yhFSEg= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.66.0 h1:ibs4wb32TWMG13F+WjLsmkfUrFHM2FWzJzkSDGN5Dis= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.66.0/go.mod h1:60ZA/zAjHtlvrnLpKEw8fGC5YyBJ+cqZxY2tkiSid9E= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.66.0 h1:BDVdWliJrnJaEfEQO1lDQj1gPx/2QAuoL891nxUV5qs= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.66.0/go.mod h1:3GYgr9LCS6eVZA73H41zxN8MiD/cNSkzgGhTM9heGHA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.66.0 h1:owJN5NJ8u3DLnSZm4KrTLhGI6WdBSd62vqPL3xaiLTc= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.66.0/go.mod h1:sBcuqgAxOmbXpS/Zern0+BTbWi3XGoO1FA4jOuGqQR0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.66.0 h1:isDUXPS+GcjT5iC6fMq0/mZxp73wC2/7Wl4Tecnoi+8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.66.0/go.mod h1:YWgeZQ13rqR/iFI+nviks3j9Y1/KnI0k6F754jdzgy0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.66.0 h1:9YMRxke8epHmm//BxHet6uySE+aI9OIzTjJ/ugQZ/pc= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.66.0/go.mod h1:HFlkULo7wIj66tpH5XONIZ+nVnHmxzmpmjlM1Lsi2fc= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.66.0 h1:G/Ug2eKCUZhkFsnc6w3AgrJa6Ukxy2Bu+fDpCNRVsfM= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.66.0/go.mod h1:9atJyv2FWAhdHMZEBbr4kpaxEb2rtmONLCEnYI8yiXE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.66.0 h1:eBKEtixdJn1hR9wX7GwnKCaISp9ed0uPgMiW1XJH9vA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.66.0/go.mod h1:Ob9UUGsT4jiPvBUxsZP6qS4j+oLyhnap/aqyF52ifTU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.66.0 h1:CCo7Hs8wbmaw/+LJzQiylyeSVhG1J4l6CBjPOQBkIWM= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.66.0/go.mod h1:PtAqqLGBaz1aZAELoja7rv7uHg4Ol84WH3rsmBdN8B8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.66.0 h1:EwCj4hTC34weL4fjgd6yvoGL7yslqUvkm0u4Fcjy//8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.66.0/go.mod h1:jtReUrSK+X6+2qy3ut39Vt1x2wlGv67lxW/a0y4qSsk= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.66.0 h1:wrAsoO5Wnfx/EIstRg5OC9NMQZX+gSqFnvoJF9v7Qzg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.66.0/go.mod h1:i5xyfVgBWzqNK2V/xEiNR5ca9787+eAHIICTVolr3VA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.66.0 h1:VkQf0JHp+D+ZwLJn34T//wl+9cSj5nnQsr1MuqYqheI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.66.0/go.mod h1:RgXOQhGcS9xzmieGnpxzcPr6nqvR/N2wOZxJegsAyfw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.66.0 h1:HANAUWPWGCY8XY9t5c3LpHiEvDWiExRYmK9AqDRhNqY= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.66.0/go.mod h1:WRxCb0BpwuiTJ+dtJysl/jj2h2TaxRqBl47kvkcOaO4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.66.0 h1:VYXUk9/PgvrLCtkpNhYgxGZe59WTKb+jAZwg6s0vPDU= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.66.0/go.mod h1:rrzNh0m1UMja8uv6DncAG+81mECxfgI5m+bapBUmS2o= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.66.0 h1:Zg8F/x3b8UDJYLBSzJsOlDSrHqeF7S0PUSxmT/qJkzU= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.66.0/go.mod h1:59xyNjCX7bTtnM1BopiVj9S5G+r/Rc5GETgWVBaCS3M= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.66.0 h1:vgWYnDcHXvgNGaOTygVkWVqLYj8Ps/S5ea5t8iudZC0= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.66.0/go.mod h1:zLw3F0s4Ir99N5Upqdm+Ytqmt6dcnrMB2PZSGN4lRlY= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.66.0 h1:lYtSLQRAnI5OHAy0RwdxzwFQNo8kRXlr/0jeE3rCrtY= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.66.0/go.mod h1:caxANhu4etLz2jcsawKycRoTFIZldAwCThqDh5PufeM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.66.0 h1:n6pikImdpnn30mR+F7k0VCk3K3ohr1z5abLI7jfFYuc= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.66.0/go.mod h1:Ne1tinEpYGr/ksK+75vch+5LlNS1o8/EVtAMfJENngw= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.66.0 h1:85ZPWsm+vr4j/8MgYAXbNsO0y51kRYEmWw+k9JwPkMM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.66.0/go.mod h1:QAlZKCzjCSJ4bSdyKuil90pcC6S22kVWxlxcA1r2lqg= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.66.0 h1:xWHSbs/8pABDQKFUd7fUkkhSIH8YLnBbHypcyAGv6K4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.66.0/go.mod h1:SvKUf0pn0YkIWrwfSs00SMZy25YlUvL0tS/fYrxxW/A= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/logstransformprocessor v0.66.0 h1:IoJfY7HXsEmgrYmP3VQYAhZtaACNNMqT+w7VCiWmCNM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/logstransformprocessor v0.66.0/go.mod h1:ihjv7s1gfVT6XsC1NxkNJj9SoeZIz0LIgnFWlnjFrEo= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.66.0 h1:M7yCbfO7bN0vi4ykaEDp2ANTWRNxGh0+UqNFpwVoOJE= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.66.0/go.mod h1:+f0s1p2ptwixrrc4OZN3BYOKDtfTOdLnqvH0HD/LpDI= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.66.0 h1:3BCJ45CMoEWWonFMpeL/zn21sq5Hlwg6GC+jWx6rLDU= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.66.0/go.mod h1:9ss3YY3VBGx0T5mfZ+2DohVZ4PBimUnIPNCt9PeOntk= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.66.0 h1:kU1Ff+Mjw17sb42lFDH4PCv2te6VK9DBT7Q44EaqPfA= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.66.0/go.mod h1:/oVZRG7cdHDic5W/R1EMZ45h0YsGqc0jyPzsst4J2d4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/redactionprocessor v0.66.0 h1:InXjy021LWcfm5JLti4qp3oIkotAE2LA8XvEegp0r/M= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/redactionprocessor v0.66.0/go.mod h1:ikNfuELL9RaLaJWeFSlv1M6SG1ptj8YeGxXTBE0ZCD0= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.66.0 h1:eZ2xLwHLfMFSg85jB3Nmn+biBtQdyi1dtVzUH9UwtXk= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.66.0/go.mod h1:BP3QIdtsKiIxKE3vMv9WZxSYX5aRq8asosgii0s6yIQ= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.66.0 h1:bM/QswD72JDXhGE5Ij4/GrIl5yxZZJ/K4yl9AX88z44= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.66.0/go.mod h1:X6YDojh770Q8f6wX53IpX3fpNJzRiD3bSza9GELPJEI= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.66.0 h1:7YJ7dnJDvtpg+uJxmcpozoDMm2yDmzhnnUdWtZnVyBY= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.66.0/go.mod h1:0U9AwLuFOiweQv8/U2+9rcaoFsV2KrCQsVzXeooLHgc= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor v0.66.0 h1:mCY1V+0CwW5xqxT7IVUZ8bE+E2K0nqE/aN5hq67vAw0= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor v0.66.0/go.mod h1:I0sgipnvyDKa9+a7/34XrODfXD+QxUVQlTOazT0/ZQE= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/servicegraphprocessor v0.66.0 h1:Sqsh671C6bmvvFtcu8uHGw1FGa6gbj7mXb6V675DnbM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/servicegraphprocessor v0.66.0/go.mod h1:FrhwhkHRqHMCGbefm9lrG+ivONo8p2nNm7GRWbVJ4lY= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.66.0 h1:DXce1Xj8MzqGfNW6gfyxL24in6vmohuP5TZseXcGoPM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.66.0/go.mod h1:mAcae+lDThmxYGhYgmZeC9FTzdadCwpagtO2H6qllbo= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.66.0 h1:Ux1nFu7nZC6UI7EeXDX1VOibCNnsFUyycMv6mV0qjNA= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.66.0/go.mod h1:bp5Gr2eD+yn0NRG0op8A5sfjqShy4kb6DZfZTGyLC6c= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.66.0 h1:cyvhFr72r9x/ICagfhLpPizqvquvzXE0Xiwm+2f7IBY= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.66.0/go.mod h1:T8Y9bUQbvTntqFkRavP6DfhFnYQUDFvRhOpX/NRC1QE= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.66.0 h1:2Zu9JOlmMxGADW8I4jJXwBlUEh5KfLyhZGL8DotxYp4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.66.0/go.mod h1:7WuQga629d1lBqHHuH5gokrE4i2I2nXPxRoCz9OzAzE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.66.0 h1:c4vKhSHxbPapCu12+64narFZIH9/YtRGsAXrd9PqkNk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.66.0/go.mod h1:h0Y5NSwxaxXnfJ5+k3B2KfyYZsy4HTLKGBX0dUUx4jI= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.66.0 h1:wlvzjcLc4AIe4Ap1jDJVHkjBfDf5c3YZzpQUx7DUNUg= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.66.0/go.mod h1:UWNKP9LPjgA9Vrvz9IrDv/5jDgRmmhAWFOCqhQvTsDk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.66.0 h1:WUufed5NdYJfFCYpDIuSo4IEI4T/mLxlwU1IwW3rTJk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.66.0/go.mod h1:26K6noziRPgDfwLPKWpsQOr2gODyp/mGtQJD8XqTqtM= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.66.0 h1:k+KQIN051N4UUrFN8J6hGv1W0IWd6N164wnMEK9sdgU= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.66.0/go.mod h1:Z7CG4fXabRfze/T8CcEMPuzx7dU1gM2KMV1phwG9r08= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.66.0 h1:wHgoXmWsMwXhWTlSuv67eehKF9EePodfsk8Wc+QtOj0= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.66.0/go.mod h1:EDtHHuIDeuBJ0KwfhflPwtFWyY314brwZrs4pAKD08g= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.66.0 h1:wDY0qjgxhUtdXnGSQwUd9M3gh6uB34dpfNsMdOEG9ZI= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.66.0/go.mod h1:OY4GZjXLx3c8xD50EfWHKxHlCej3KtvGRI4Bth/Ajpo= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.66.0 h1:OVj9dlM7YLjazdMoMQozpkgXRtDFM7MAPbi8wVb3Olk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.66.0/go.mod h1:wU3gcH6n6aZbU0fXS6lbsUDqJFCJbXtxRuHBHoVh60o= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.66.0 h1:YPt5KS4Xo1tjypofMOEC4x8mmU6NkaAwFHlA7Kdf70M= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.66.0/go.mod h1:zxWA8S2475ZyKNnlp8ausTu1JMBOk54rYzYTfqMUPjA= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.66.0 h1:k1Ba1CZhkuTDaHCDZe3cjk/sI/rIppjMIaIf8roIOFY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.66.0/go.mod h1:ksInzrmCSMRKDvdv6yUnmfRINfJcPWWLh2JQbxp0DD0= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.66.0 h1:p7kt9kDdh4UoGjEQ9Xn7jVuB9tv5B6uBd/0UrZD/JA4= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.66.0/go.mod h1:VDIVxLAoFJxtyE6Fpqnw152mxN4oz104FcN59hs0Tsk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver v0.66.0 h1:KSoYO1Xl7uGUzdtKrj1mlt+kVXWUMsPpNWMB3xNLTVk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver v0.66.0/go.mod h1:yTnhc1FeZau2lY49S4cRVpxd5NxPqn/CNX4aTFfXYAs= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.66.0 h1:93ZWSVDiZkBpO0dC/mjFVpExWDN0Dezn1G7RObK4Eq0= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.66.0/go.mod h1:O9jOlxGVrteBIn76ga11huyGfoDIfc2balu+WHi9V4U= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.66.0 h1:9iNjMKg5qVjGZI+LajNLQUWajPHixVAZYZytGWNM9xE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.66.0/go.mod h1:r6RYjltTvd7ZswhmgzmfzzGeYPF6SSkETTa42bEpVq8= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.66.0 h1:5Asl6aAM4fAeO6VK3f/p1jd2dW4SyLbyLA6lugBXcGM= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.66.0/go.mod h1:TYM5Ia3/eYgi65VGq5U2yfztmH3QpMaiK7S72bUXGlE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.66.0 h1:8iPygnZ22Jo1XBgcGSo/Ub97rc7mQG6kEprso3eV8Z4= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.66.0/go.mod h1:z0fDhm8BJX53SuMzY2+Neg3GGv6DzqmlpuswZwCvD9M= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.66.0 h1:1VcwuBkCA8KohEPiQlUxm54kckz3tATV8y03M1KA4AQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.66.0/go.mod h1:QWvE514mYc9p8Dyi3ECoRzskfheVum5Qfy2tRYPDUZo= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver v0.66.0 h1:4Fuald0fZXMTgM+jMcHW2QN6NjISTKoXjIchfjvH08M= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver v0.66.0/go.mod h1:tp1Q1KhzsEI7+JbflfHlqszjpHC+NIqE1n2RHWcCQyY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.66.0 h1:ceua3eMQqa3fv/opmc3OMNavOqXtRUowr94c9y1/fV0= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.66.0/go.mod h1:6i4eH/Hk5w4vmbP8S7W6ocV+hM5h8d3iU9wXiAhH5zY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.66.0 h1:iWDvM2Sv5V67rv50t8Ql0kODPLDJ3kbjuZ576Z6HPLM= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.66.0/go.mod h1:/AidsQYkQRnDznVJvSe7cT5azKtdGb7oFxiW5uxIsFE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.66.0 h1:CQyNnodR4ZZNbszk257KHcgAyUq3ZQuyb8Y/Tztisfo= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.66.0/go.mod h1:o3+wi7KqJD+rx6I4d46AIBYpwFSPTAK5LlccMra8oBg= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.66.0 h1:1v3DqhJHiFkVvMVrf10zZLUEGx/QKJ9mfoodHYRb1VQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.66.0/go.mod h1:mUUv84c9e5Lpfel/rWNz3UOuVfahsWFefeD0ysvuJDo= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.66.0 h1:zXhLhG7lqK3l3Eo4hNMkV2TahOD0ftM3oegldF5mGBI= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.66.0/go.mod h1:xByXWVmiZq5MEWLgmDMBzXl3FLXLdEBzyODF48qZZZo= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.66.0 h1:RIw9fGhKZY8v819AyFkqINsqt4x7cEQOJ2l/vt+WnOs= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.66.0/go.mod h1:hRZYiY4jihzCoLzFwJUD2LXVovW22eHC03gtEzEf/CU= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.66.0 h1:gayVCZo13jfww1jtTDShnnIx8v12E04apyRgv0Kggkk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.66.0/go.mod h1:lBF4yeI2pjBqvLBxBPmJOWbEtzcE+vYI+ALRr8xMH94= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.66.0 h1:ZeEm5snlg01TDganaVKBzpv4KxXuLTNo2/yZH6o3TB0= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.66.0/go.mod h1:vWCUZ8mo6Bh9qtZUKXXbL5n9ZA25KLgAPTnGDBpjoi8= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.66.0 h1:svhzutZL6Y9mHGKjpKu/iB2JSci/EsBGDt0BLGreG/k= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.66.0/go.mod h1:hDmoPh36/4Pgl02J25ff/FionPhpFbhQpGalhD33giM= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver v0.66.0 h1:wMSgd3b4mRF2E6gjFCOsS0tFH6NsYupXFiYlQwU4sfk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver v0.66.0/go.mod h1:+pM5/HB9lR4afnkzDk4ij44zkPBr9NQL/AZOJY6cvEE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otlpjsonfilereceiver v0.66.0 h1:YFxEKwjCTvqWBRfOXpNCg1bPfJvhg55pp04+Y+dlg6Q= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otlpjsonfilereceiver v0.66.0/go.mod h1:cwqyd8QhlWEVMgLel17OhCTq7PVyyhVq/XWOj1QjavQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.66.0 h1:GpGjRgv/Pvpr0tir/96Wf6RYkEXGzcWe3iVvw0Wyfg4= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.66.0/go.mod h1:WDacLApBG5g21kexeq8p2/1r9NvvO0e8cd66+jnQhjU= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.66.0 h1:rt6/zEae7Rd6lgW7Z/5UEa4PyxpHnYDz5GpV+dc8HXc= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.66.0/go.mod h1:ZKyjDvNshb54luDca0QXIQAs44n08EbWiHZ5CV/NSpY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.66.0 h1:qtc+4kWJjF/lan7zWBdQ+BCZroEkFsOGR0DVHdgLlyU= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.66.0/go.mod h1:j0ZBWTZyLQQ+I2cp+DqhK1d732+KPIrMkVPEx7/PX0k= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.66.0 h1:0EG2mEVj6QLNZEghWLPQInvdIyJmTz2sZOx0CYhqPDg= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.66.0/go.mod h1:aqg+ZuY7ZPXOZPmahXYhKMQBz+YwpX3xGculeFAMkAY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/pulsarreceiver v0.66.0 h1:pXcD/zbWbkrOqD+ryRcYrIS71GjdFIqQGDpJf1+Ps+w= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/pulsarreceiver v0.66.0/go.mod h1:J3DzGrkDlrFx8cCvG9qycbqtgVC4DqcoNfPDtvwSOt4= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.66.0 h1:TuA9nsWBhgQeHRN7CiPvslaP6Xscq8ElMCn5dukLXJY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.66.0/go.mod h1:BrbEBdbruFOVkKHrzotP7a2agf8b8LaKAqa1wNEspj0= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.66.0 h1:eWzLtJL5Dk55BxAhvd2kzmhTefsLK4RkiG0td8D+1jY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.66.0/go.mod h1:AvVX+4nWE9trHOtXavZo/PZ3uIlkO16jVaZ09ykZRKc= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.66.0 h1:Ia+Abx/txk19OGCI9Fge413vstQrmzxMYnpYMfBJE2I= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.66.0/go.mod h1:LAcR161C4uyiIYbrrIPl8WYBKr2tlTmlgXchNUKA0jY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.66.0 h1:/CmB75Bt5559wDPFD2rM5hITcs1mZ2x3X9g30jn20OQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.66.0/go.mod h1:Tbfd6uVl4FA/R2GndUG43xgaNrhjNn6SfohuFUbkvNw= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.66.0 h1:G27bC4VBK1BslVVx2J0lDOt6DJeOVQOlibHHOgzAcxY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.66.0/go.mod h1:AtG9SYalXEfuu19/raDBNUNPjyHACRzRoI6G4unOloE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.66.0 h1:2dU7GBOfmrmO7XhcehoVNdrvbQk1yAO/X3eKNraktcE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.66.0/go.mod h1:MzLbJCvW/j9KbpbAm018aIfE601UQpFTgdcsl3DuZvI= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.66.0 h1:6Dw3N3Fi8L2ZyQ8l3ZPjPoPvjNWuSaqvdkzptjsRxZE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.66.0/go.mod h1:RPfJNRVzxTP7ZVoUcDoHtmjGoRKCLTQ3fZGZzmXNqi0= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.66.0 h1:P6Jq16iPGbUbyZTxfGHmvpJgkLLWag/6sKtWgRNB9ss= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.66.0/go.mod h1:Jj/pdY9cw0U0uJ9ClY1OehDwQ7iqt+etRJkLAVwniKw= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.66.0 h1:Ca8z3nNEzkjrmNFUUgJoreQRwczi4w9yoeBU9lgY6lI= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.66.0/go.mod h1:G8UX/G7xrVL5gxldr8j+Lw+Hf4CMxAbBq64cUAiL+tk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.66.0 h1:641EyHJluZTkVv0P9lzYStNk/8W/u30RnqvXnXbL2pY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.66.0/go.mod h1:Yy+gygmx/m9Q6qD9EpkRyVIIoaWK0X9bsk0B5uEmHMQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.66.0 h1:mE6l+7kl+d+Sv8CVfc4UqibmpAfRE9WLUhzOFAyqTcY= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.66.0/go.mod h1:0cq7Hra5IsfYIFbeCPVBF8xkl4vZ0gD9Mni5GddOY+k= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.66.0 h1:nm3zpFD00f6PRVXgDOO4TQfVxdsfY4SZkSqVStEPxp8= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.66.0/go.mod h1:rOTVSwZ5zNlw7zZWUriNf9ioxtiI5MdocuOZh3cBxMo= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.79.0 h1:YEj4toIJJhvl2I1az1nGFiUIwKdtWi6rqr1WEk+uJyc= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.79.0/go.mod h1:S7+e73QVLQmhAL5asK+u7oqTrsmAu5z6HEencK+RZds= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.79.0 h1:o2WthvXeW+uwbXDW0GemAQ7/d6AP56lcEHIOOuqeXNQ= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.79.0/go.mod h1:vHEsZ7gmysbsKwBeXfjdvkbrzZlfweAcGh9+jZP0Mig= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.79.0 h1:Sjz3KURpjrBPQkvwQiV02na8aATCBAX778c3ZGCMe2I= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.79.0/go.mod h1:ThNKKFNiiiYu+7X2rS7+nAxmuAPasflpnP2YfRQnA+A= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.79.0 h1:Ib7XzAY1RYuxLAUIA+6VUJ0zc0XOlqa/qr66NyyeBvo= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.79.0/go.mod h1:NVCugLM6N0IGQjxDnkZh6/N8VPX5KA1RZjQg1zwSitk= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.79.0 h1:ZnMXlPr89HVj5HttFJbElyhlS/Em17pQ2rjtpxFv7oY= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.79.0/go.mod h1:5+6okkKWFKvkWTMgDS1NYpcmdvNnj8Pm4Ln+Njr1+6o= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.79.0 h1:d1Y/1y+t95+ESZygemii05j5qdfeSd8z5Gxhn5FLoJ8= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.79.0/go.mod h1:9nlVKQim3X8lYAIQxSwtaJnkxdCIjMECyB45zUN7NmQ= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.79.0 h1:W6FQ1Y4bL6eo4URhvXYjXqmj0RuX9C6Rg6HuIFkDLis= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.79.0/go.mod h1:ND4klxD8ZJtVFBBCDgjuzW9mhHFYhNBFcv3lIddiDCc= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.79.0 h1:pyEJnBZqHZTG2YfMXLJFMJiF71X2f41PbtxC3Lnr45Q= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.79.0/go.mod h1:velLoVQfN8Yc+C1ytaw99tZe3VnQmzEWDCIvBhiZP8w= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.79.0 h1:WDTgjxG1Ho5Aip0Gx6ZltTCsEqtF9ydyc+A7VpYshrI= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.79.0/go.mod h1:nB1tsarX+1UiBKjDmZ4BgUslCtTI1aZhdwX5gU4r2Fw= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.79.0 h1:X4rYxEY5GKTs0XoLNpjFDqv0TdpZPL2Qe58Z/a3tHlI= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.79.0/go.mod h1:OqML21L+jmdCsrR+NGQglXPuyaawdDLZeKfuJkKGi3s= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.79.0 h1:X+Y5V7fVPm4sbBntEkvF1mO4iZ4QZGc8gMRbB+/ScWk= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.79.0/go.mod h1:LNuEQ2bQ6IR/+QtzZhUPdSpyzIAtgFW0JQgC9y1BaYQ= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.79.0 h1:rmSeM4mlpNkP3bMpsVs+Mx0tL7TVakRmlyV3QBXKVIQ= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.79.0/go.mod h1:FhgTWS7NAMiFBRkHaZUrqOMqOP2oscp/5OnSNowBz04= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.79.0 h1:Mci/bnPNBl4k1qXx8iqvXjPJvwmmW82AtWsJ4lc4uKM= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.79.0/go.mod h1:oTHjRYegHhIlYN5vQdH3aauDChKpkzBTnA4zYcAyR2Y= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.79.0 h1:mjEoGk44kLrQixF4XIXLWdgRjJzyncHO6TyOvHspt6w= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.79.0/go.mod h1:2YgPCfKEBePXKBje83ORqCDxsIoiFjamCvCF2C7l29o= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.79.0 h1:M2MgMIW8Iul33Xetpyj6UD9Fk7GMLMQNOUSq6YyubhA= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.79.0/go.mod h1:xATxrZnJmyBhRwsmhS/jq1ZuRGeidR+fkkl8K0QOJZI= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.79.0 h1:2kHh5xE4IGnVOMoW6rKivrjySVuWCRq54bJAbQmbZeM= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.79.0/go.mod h1:aHtZg/CCYBIwpC9iRwDDtFVnU706/6p5NJNvB5qZDgA= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.79.0 h1:SfI83gGckFa6p+qFaQCyK3zxPWyea1iqf4m5vhJ/eHI= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.79.0/go.mod h1:cb+4Inj8Xjg/aMECOeiLPRaohX9dFZPB5/EKGbbembU= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.79.0 h1:MV39KCt9Q4LeRcifYFyiV26bxvM7/lA2M4gD6FTAx9E= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.79.0/go.mod h1:rdkIWLgjUibqWOtzfJ2rSkSkJRDt0LTB9pC+WdcMQoE= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.79.0 h1:aN/weH5Kcnl4x9oit88z2VKRhxKxYfUW/9RY92m8PGw= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.79.0/go.mod h1:4Hj43VrayKjsnaXo49EWNojeV4BVBv2b9st9ZRTxaQY= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/dockerobserver v0.79.0 h1:sMPqGB+KHfQbA0DrI3mjL3clolnZ/8zn4pMFCSR3rC8= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/dockerobserver v0.79.0/go.mod h1:JZ0MnKCfV3RipwkwVw399j1Ges4ev12z7wCD5IVQ3q8= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.79.0 h1:RbJDw/QR/nDqF5lsprb2qL/CTdwa5ju+RB9C+Mxwm0k= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.79.0/go.mod h1:QXv0AEoUKIGnwhU6e65UIiV2MGIHbTMjVAu2X0HoqXI= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.79.0 h1:cSOh6xTa9cXgB6a2+RwSfzoAc4cIETnTeqsMswOIjhw= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.79.0/go.mod h1:+7sRMa9oONsf3BScIzcvxHJOTJpR2FQXB2VQxuSYEW4= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.79.0 h1:bmdFY1v/++4wGrl3QdAJaSTAdL7/ShOtqarUb2/0lJ8= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.79.0/go.mod h1:n5wfH2uNLPAr9BXt6kI+EqkGfMMzAZQsbimqj7L+Cg0= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.79.0 h1:lqGcJ0KXAdAJErZ5YitZcRfEXvpjd5zBU1ppxEuE1Aw= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.79.0/go.mod h1:OudnRgUB2ck+OddBOiKBG5/k8Nb9aAK2KeL6urV9UA8= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.79.0 h1:mSvBMdEEx2VGdHHcedrJxCyatCEc104ylVFc1SOxKug= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.79.0/go.mod h1:JgLQQlRsJ51gamFBf07LjLySsjScDua6BMOkL9C/Zkc= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.79.0 h1:8TnbydVFtxHNKiTWUoXNfaTVIBwccG+pPFDQZuGcm4I= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.79.0/go.mod h1:SIM4YvnFtTS66DCMJb/R0/01auEFH/YXxAb+IKJscFc= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.79.0 h1:okH5+f5UyufgnQXcBib2qUaKoTwsETWxdO0VJOXdl6s= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.79.0/go.mod h1:uGs9o7HgZXhRIgdHWT+VreU2ew4a08KTU4ejQIw6dTM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.79.0 h1:A6Pbrr9u22VHYz88N/ZvD4h8CO1hl3bj2RORMSwyagM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.79.0/go.mod h1:kTVinDir6veVEUrgnitBl306aXFEUTdLBLcUbV7U/L0= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.79.0 h1:MHXvpXGH0xapJ0thDNuXtCq+68L2DSqL7sya7VV7qO8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.79.0/go.mod h1:LpqZWK+IzifxzXGr+t7Vw4DuPPb2jXcOxfQ8X+Ul9Rc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.79.0 h1:DMzUBykA3bJ2XU2IB3kPhG+WdmjKT3svdn2D0GyaMsc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.79.0/go.mod h1:8Jiq4xF7+CRrMhspYCGIDtMxsFpMAJaHou0LmJSR0HI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.79.0 h1:jYAxo7hgP5T1K8yVZK2+ejD17vtUc7TdVge7vDrTQ3I= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.79.0/go.mod h1:pdMD/gz4/p7O2bJkroZDXLu2+px+XcPQL9eRydH2y/Q= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.79.0 h1:EXFITXhCONGJ2htxXqujga3ZJaUQj7hqeLlnpYaVU1s= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.79.0/go.mod h1:r03E03RLmrUgq1b/AD1owCVLqsg47sEWHent1PHKmR0= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.79.0 h1:iDOdpb/nKKUGUU2H8venWgiNzUHqL8sMlsDbiZ8Ey+c= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.79.0/go.mod h1:wLO7F30KFxPCHm3OL9UWAZ9I0Unt49wZ5/RcjSTuK+o= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.79.0 h1:CevyswAcVtViSym3KU7eUkRjpV2KuUSMjH+uNdM4Q9Q= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.79.0/go.mod h1:8QpaV/c0ts3bCQASsHCF/VvZ63E43ioGW0dkdcYUYgA= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.79.0 h1:MRs7tZ9I29OwPPMTg0uLG+URsV9kClGY/sJ3D9PCrA8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.79.0/go.mod h1:QB5U5gmjH9AGe7p565KJ8UId2t2O5vf/Om89a5z2tnM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.79.0 h1:OZPeakqoSZ1yRlmGBlWi9kISx/9PJzlNLGLutFPOQY0= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.79.0/go.mod h1:VOHKYi1wm+/c2wZA3mY1Grd4eYP8uS//EV0yHBbGfGw= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.79.0 h1:ADbKALSrmVu/baV+po7EkLvV1wSMUODY5KtHlvyp8u0= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.79.0/go.mod h1:qterG/Ib1Sx/FTJDZBS5qot9UgjvtNz6flleEgxpdIs= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.79.0 h1:weM5gVbHIbjYoQ8yZNRCc6CJVJbDKtlrSvHULVApiJ4= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.79.0/go.mod h1:Lv4lLbiq+dS9yABBNVfd0lAdgv9RGZCNWBJvfPXsRaQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.79.0 h1:HZ3qaQBp4H0jMfLJ5A48nme1rgl8oCWJbEgVnSLSS80= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.79.0/go.mod h1:m/q1uQ+Y/+B45+wLzuqaL6C7PNAIYLQobo2QaIr+g94= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.79.0 h1:hFK/twibgXGpTcT77Soz0/8qHiyC+WG4tNViWwzMqGI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.79.0/go.mod h1:OQHK+cPZFdGwl1BB7M9bbzuJbOxSZEZkQZCvd/APCbM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.79.0 h1:z+k6k5voMdXEtqZwU8A3JcfX5KYlL738C1ha96EqnPQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.79.0/go.mod h1:87nftGnFXBtHXP7cGlG41pZ1JEO24e36w8U64anrNPM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.79.0 h1:GUJzejawtyOk9Iz9XJQ6ihdIIftfO2vTgQ84HdrcAiE= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.79.0/go.mod h1:JM8fR/4ZuVIsjmtHHvBU547gluTv0D5ACUuMxbhm/J8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.79.0 h1:2ugYXH+7ovErx+U4bWv4rtY5T6LEzAgCQ6pApQWWzhE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.79.0/go.mod h1:qR9fhN7MglOcLiGU5ioYAEDiYKbcoQUJ8uW4uPJ4Ork= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.79.0 h1:EVPb3KqrLSX6hB5EBmUp09vsscQXIwdPOau8AFg3RbY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.79.0/go.mod h1:JZjU9az54wpYFJB2WglIF/7cR9zO8bg3BQJosdEBlzM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.79.0 h1:fbh6YUVwOKhLa+kEbuH5jXqLXNkdyu96BwvaUVabOjc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.79.0/go.mod h1:dDcTzcj8ra6wjk9YNOULEcUlQl9amjME35hpLdThuL0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.79.0 h1:YtkbJjknfMJ4UKXdaUBTw37QLxYXuVMmozqPFTM0XPI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.79.0 h1:Cao5mD7NFJsMLM40lisqJ4Iy3+v+JOq+8cR79/Uki94= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.79.0/go.mod h1:/wfeJfzu3oAkC2boitFR3dZcnwNtwzryI/SW1LIhDLo= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.79.0 h1:R9lB4lMuDaCJP9l6SiOA9u0GPJm5nV5Fefb9cPo9gZQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.79.0/go.mod h1:KBcxvUZWwgSPwdH3oOub7NGNnwu673UdMDXtgn9xjvU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.79.0 h1:o1aUgN0pA5Sc0s2bOUy7vDoNyJ6D6qdHihXk3BKyf58= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.79.0/go.mod h1:t8I2umZdg81AQmncs7fVHw1YMzSol3A7ecsc2lfqgaM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.79.0 h1:litBmOODNZ5k8XE09FD3T1KOIASXqk7ktIyxyM9xLIs= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.79.0/go.mod h1:Zyqr3oq5gK99+nqA6WwHxj1ZnaFj+uj0EFY9BzR9QCU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.79.0 h1:Xazghy2LA9FSYM7LLBizZcSajffhF7l8jV2RY8fG58c= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.79.0/go.mod h1:apQSxsBwQSK6jcnShW0ntruGCZ63WcDdhuvdMSO+Qkk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.0 h1:F6rc6ivh6EoHlaSaWDom7dKN7b5e2Zss5TNi1S2QR8A= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.0/go.mod h1:owoAzfn0tUVguGxqc1s25IrEdiAbon5fZGoUfgAuylQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.79.0 h1:34ExxmcoJ87OtsQ8SW10sjcajFfE+0Nc/rFBBN0S2KY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.79.0/go.mod h1:0FKxnjhhcAmyYMjNphyH72RfSiVhtFeQPTF/O2qnDLE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.79.0 h1:Jtlu4zds7fc9rEoAxGdOAOehh7GOoLUJJQpraK9o33M= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.79.0/go.mod h1:97Zpt/TbjbjSP1zlYn/kBxLW63M+hUwTbWP2JWwA6zU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.79.0 h1:R4unyN85OP2DbUcXf5mQGElXUmr/rLY12LcSVQr6Z5Q= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.79.0/go.mod h1:COfCQB4t43WBxzy1L8+QQb9yPEGHerQYln2SvfABhlA= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.79.0 h1:yh/hTQZ7YtSwKf0Va5UbHaWesCIeSAjQoNEJJdLL0e8= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.79.0/go.mod h1:AOrl9w94z4x9oLjpeXITU/OMGu6tmqKD8gbom0i+920= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.79.0 h1:Ouc1rpMwPDGofxAjQV+YndU/9HaZl5L+DCWjiI/UcqI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.79.0/go.mod h1:UjJ96K8P/fw5Nm03jmdo0EZbUfPhwnA3nRLyX2glEpk= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.79.0 h1:+6a2jlj8kE/LUpYwP940p8+WSqLZ6xPBMwiccuH8XhQ= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.79.0/go.mod h1:RsGcDnFJXfnOCq0ZZoZz1Uk+vrFNS71isG/oey2ZQsI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.79.0 h1:AsZyJNs8EXe0VF562GQJGS3gBHh2F8Cjo5fDdMnxAIk= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.79.0/go.mod h1:WvmScNirKim4eOwgMjLhJlVgkDmiYmfuckANeq5942A= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.79.0 h1:vb9rV83x5BX0GEW2sK2KqN+juIwMz1+R24J8mYuPTg0= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.79.0/go.mod h1:w2/Q5tBj642OhvTJx/Botxs0ED485/5GnguIE/PsA+k= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.79.0 h1:bnOcEQtTSil7px7zmNxOdOSzidEx3oYA8R9bNzQcEXw= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.79.0/go.mod h1:AJiCFeYqtLU6ox3ZNcIh1E+C7YJVvgg2RwAfT1fx6ig= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.79.0 h1:sFZicczo4vKp4fl/zY4fXzH9FyTXaX602aloXsSZQG4= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.79.0/go.mod h1:hLRtzwRZEIFzMtZbrrvDYSMK56ksw452uQygjJZ1EwY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/logstransformprocessor v0.79.0 h1:EpuwiWvq1hqS4PAp/+kMvWVkM4o+PRGtTGSDLpmIeME= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/logstransformprocessor v0.79.0/go.mod h1:0dccj1BrKVG00hvt2f70tu7Re1YjAl5Jpy2lduSrLnI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.79.0 h1:dNWQKpG22lhva0uNpvh2P/oey+xA5fpMwOZQ29kNKWg= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.79.0/go.mod h1:QN8ruQnzcrjGbaCWsCwkUqQC7ta7OW3mknv0c4XZXug= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.79.0 h1:ws04uRVN06EYw99rCEltyMe+eEnnrQYo11u3yK7YalU= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.79.0/go.mod h1:Gzj4qQw2Lnfz837nGcZpJn1CT7F2bh4jhndoYxO9iDE= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.79.0 h1:AHmkTsrB0oM6gyQi1LdTPBX3ZkxGWkwHQRnjiMrVmO0= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.79.0/go.mod h1:+AfQ0PDqUuWaiRAcbl36C9Iq3agU8E+eHvzRNDB/MzU= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/redactionprocessor v0.79.0 h1:de1K3dLh55s/UJwRzKtOUCPWX/AdgYp1pKwBdXDhBe0= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/redactionprocessor v0.79.0/go.mod h1:2a5LYf0crISjYkH4aZbj+acfhBb/r/qSmMKUq8AnPD8= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.79.0 h1:f7wYiRRxFvz/eLBuMIoEnLGiVvf9lNOIt/L6RjEvVRk= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.79.0/go.mod h1:bbQ83wIW9gNvB7miaGaX8QuAHUdlSCGVmyfEINePxaI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.79.0 h1:tT2aUH9DKLmHiTD2czdcaIJqR3XqfT0Rkb0YG8T4csI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.79.0/go.mod h1:hhbiZHsWHGhDoSB8cjA7GEAAFQy1QB+3d5AdxmSo4fY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.79.0 h1:BdDV4w+Eh9dCwjZdY57EzYnAJoxIAeWWM7Pz/qaye4s= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.79.0/go.mod h1:tUVppakR6rY6HtFAl7U/rT2FeucE6Ul/2GLE4UXR6JI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor v0.79.0 h1:38b1avxK4KM0Nkw9NZnv+55aGzv3EHrFEQ8Nyk8FiNk= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor v0.79.0/go.mod h1:s52a+ysmP6i5BQNiln//7sgiaT59jRryj2bblTj5sqY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/servicegraphprocessor v0.79.0 h1:bjYBcHTiDx8CZh2WdgUXOWpcc8FTY+3c0gcz6n20HmM= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/servicegraphprocessor v0.79.0/go.mod h1:bCbYZMK5WxCmqr0jV1MLXxHGvd6LM3EwMHGrx3Es+5A= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.79.0 h1:s3dQ07Cmoc/sdLc3nA3snsKzqUFLuwqs8ThCmPT/BrQ= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.79.0/go.mod h1:QEVVlMjhC7eAM89/3LAZgMcojCUAttcb80enYOJhTts= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.79.0 h1:LrMb9Yma7NKasClJ3gBt6vtIShQoRSo/n8A7nG3fOnk= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.79.0/go.mod h1:aO6FPH82m4lsR6Q83Ua/hbSrkY1f2t6JFiRD8p7MEEk= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.79.0 h1:0ebTn+X7H3oLWq6RoloGhT0pBeedi/jjPb3g89g2/dI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.79.0/go.mod h1:k8QEENqRXPNxTRKtHu+BJyAMBbxgdOuU31UjDPP+3V0= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.79.0 h1:uhIDB7sVrOKSzjP+DFJFeXBUiovjllanhUOXUS9d1lc= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.79.0/go.mod h1:5rLV1udgnkG7AcqIwEkj4QrKGrTsGZq4KkO4GmrJz2E= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.79.0 h1:t9B+ZpABnJlJhj2e1/MVDxWx5fn+DxbQzmEi2NXf+20= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.79.0/go.mod h1:YfC55ho6bFczXHHThDLpwFr9iiOU5rWliNKGU9FfUEE= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscloudwatchreceiver v0.79.0 h1:ZLF5JaVCWZJiSFmP8M7w3uVZiPQHWuB7DGou0bo5Vnk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscloudwatchreceiver v0.79.0/go.mod h1:VHTJinDH97Hhe+TZg9TwEpiuAnavCfA+BruFm6sqkdo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.79.0 h1:0UZugvphJ52PkgUlJTRoq8MsGzhXgTHoEZOy+ZRTVZE= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.79.0/go.mod h1:IYeh+Rv7ha7uVMgh2eq69WZsC1PAf9/Hb5vxIGlXQW0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.79.0 h1:nJNuZwUkaoB0fHfraOiVKTOEyIqePC6ch+xF4Qt8nps= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.79.0/go.mod h1:yjGWDdJJO768FksdPpVzubPyQLtsSogLogBSXxwjhCQ= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.79.0 h1:d+PQeMpdG9KncrxzRq0hwfRS9n7nu76+W4/Xb5F6m1w= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.79.0/go.mod h1:u5WVCEd2dodOOvOTQ3g0HbkkRH9KlVqAcBZN/qrZo+U= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.79.0 h1:zQJc0QVqblS+dl2jp8fZadRifcTM+IV5+96Bg0lW+Rw= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.79.0/go.mod h1:PQYq6KhaJlBHG5MiFOBaijBeFocjG8/v1HG15J6hMQY= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.79.0 h1:BIyiJvnq8tA3P9qXSQmJtgL1IK5bpCl+FdZmn2q3rUk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.79.0/go.mod h1:z6aODWRg+tyrRkgAr/NK2MM9BRzjfaAiwWofY+wc03k= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.79.0 h1:D4aW/Y6udt88J3/7rOOIs8/GULWA447kjxK4/YWMgSU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.79.0/go.mod h1:Xns0Dl8f/UJb1Ik2gRGF5DvtU7zJ649CceTfcsiYavA= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.79.0 h1:FJrxem7Ul81DULqESx0STv1oL3ULNey4CswrtmtbUfc= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.79.0/go.mod h1:dXGXEdxixq8SihrltWocUVBx8tGsXxIhW4mU8GoMMTQ= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.76.3 h1:JYTKZjJUAFYUT9quw3ANNMZz5c8LXvJ+AxHFZPv2RWU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.76.3/go.mod h1:DMeC4jfqopkISzgnJlvR0zvyUBSGxZl0sOA6ix+hr58= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.79.0 h1:JdZZGQHpyitTEUyE76SXqZvV6PanulfwhmlgNDYEp4k= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.79.0/go.mod h1:7ceRrH80A8q8b0DLptrZ1JNoi1emJz0UFHmPE3akXT8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.79.0 h1:cWijoK0AypUWXOiUzSyrzJ7SDWxNKGdfWPXAftmyHzM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.79.0/go.mod h1:Lw0iN5NrHac1EqYYuoAdh3PUUOhVnWWUblM7QZn2OJk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.79.0 h1:t7xKmT8TfFY1a73idiyVOJKz/Z1e/H8H3ibHfNWrpfo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.79.0/go.mod h1:s+LciaBIOQ8axXXNC9mP7VnQCZptStAXn3VbI0GXDjk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.79.0 h1:EOs675IwTvYrSM95SmLZa5bX4yVJCWiGN14jbdnXo58= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.79.0/go.mod h1:OkXaAlDSUwa6R7gqwo8RwsamE7A7JUu19ExtIZZkXNQ= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver v0.79.0 h1:+A/NBC/QqB6B2fDmIS7B9u+MkNjvkU6q0c5BZ5gtPsE= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver v0.79.0/go.mod h1:dE8IFASDkC5DXh3R9nLxLXYOrFmKkVc8xIUP5oTzUZA= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.79.0 h1:OTyFAMBK6mTkLf3rLDWfCnwAM4NddyXmx7pM4miu5+Q= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.79.0/go.mod h1:i1rw6P/VduJL4EehAbNnSBzOuFCUr+ejT684D9IGE0g= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.79.0 h1:Z6ZW4DkN/xoNm9GZowK/gewyR2zXXUfYfvFyMG1r4FA= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.79.0/go.mod h1:HGpPx7Lx2G57tNIlLm5CTxs2mYHKyJ718cQOO60P4Vc= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.79.0 h1:HjMIG2jeDwfoeKB88x4R+05sgXXUh3dBHZ7M/hMtNnM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.79.0/go.mod h1:ybzr97aWkatCERxgKyNfKSpl4SYOY81+BDuIWgDZ/VU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.79.0 h1:vasPtssg3Dp8fIn91C6Ty7UZBrKsuZOFeNdsxhuC3fw= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.79.0/go.mod h1:AgBXVmX9W3rrHyO+XGFBG+IcTeARW3ZaKgMYH+jZNDA= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.79.0 h1:INeI6N4tAVmVt+ffGvibe5+xVIq0peIypk1/MiTAHw0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.79.0/go.mod h1:y1CnNYnxHbu5d1w4NQVc0TMQq1saQLhUntUwxCg4gL0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver v0.79.0 h1:qjrK2jKFCHFgOcfs99KgLETGkMpOTBINZh6imzsXJyk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver v0.79.0/go.mod h1:n3S2vI5qAdxhLRmGUQDwFn0uR7DHtu9rkQ5/pnCd+bI= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.79.0 h1:50cExZOh5Lydi7TqwxiqEQl3gYgyulT7wRXosOE5Wdo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.79.0/go.mod h1:iEKNMbGwtnwIbjJod/j9wH21ZPC0sGRbogdTpoX8irk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.79.0 h1:EzfuL607RcT2+Ch46ZVZTl0xOgT6po3UB7b19+Q8lRM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.79.0/go.mod h1:SFKlHoiTkncUGTt2glmiNCeg974+593ak6kD8lBfyKo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.79.0 h1:crCAVkUck0W+ERS9FFpQAY8/SFu7jQmEFviEDFsRrHo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.79.0/go.mod h1:+1K0En7AOZRN/3FMidph8AnpbZhv9aTTvcNHqAvHZtg= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.79.0 h1:jSirI602QmKqE3Ct9iCnlA99zzAYq5bzX+cLsYyShsM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.79.0/go.mod h1:41dHUEoVxNJppJKDQpt3om5DJ+c1UY4LVfP1dOQ0IWM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.79.0 h1:ixmAg0U2JCJjZfmTWPlhAgMCcn7KKLiflJvNGgkdfI0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.79.0/go.mod h1:Sz4bvido5m/U8xB6lijBZOUgSBadGZpASYIuBWTqjso= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.79.0 h1:ewzQjA5RMDwBRmmYlHZsMS82vzW61WyYM28ZD9CNBns= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.79.0/go.mod h1:/FE/uENh2IVkO+6YPKx+peGxWY5ZyOkyQWcb3BusLyM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.79.0 h1:F3Crk902yHuuddlBZY99YZB7UnVFmo79Z9FvAwfR6KU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.79.0/go.mod h1:QqGia6cxjhGSqbdY5pE1RxW4idMa6hiCC+FJjkQaVpE= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.79.0 h1:LfGAL6aPURI3J2OXxqm8JfvK7Di1zzGW2+/aOOx8Tgk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.79.0/go.mod h1:sWDMsWNeUzS2SqFEZYA6W0jK6nq8XSq9zlabqVOceIU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.79.0 h1:KxfE5QeuqqKzuI+1h8S9pobXXxoPo6MnpimSTaw5ccc= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.79.0/go.mod h1:p7Rul1UuvcNDtpGVThttYYZNrMgniEsLX3wZkwDjNbM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver v0.79.0 h1:mDvnFpnNMcSsS+mh6JnEmjrNRUoKXgZlmx3o2xpcVg8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver v0.79.0/go.mod h1:3G5K113Wg4TS/CaSBKge52rCzHt681qfRKj7xyORTV4= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otlpjsonfilereceiver v0.79.0 h1:+2ICfY20x6eJww4La+2bh7G1xL3fnKePBR1wiDWZG7k= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otlpjsonfilereceiver v0.79.0/go.mod h1:xcJ42geJOew+Y2KRhx6dYg7t1QyQ9S7Osr8w0sxbZvo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.79.0 h1:SH4rH+/p7X3hYYXXFmFqiPFC2ZalM6Ywm5AMcVlsCro= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.79.0/go.mod h1:htvsVZiiezYpfTKuhl4CF0nBDOnd5SKiG736OCo3MA4= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.79.0 h1:HsuVNRMVsQr1lr7m5hs+LV0p5hHJ+TYBprE+4RVDrI0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.79.0/go.mod h1:DBMFnjkKSXJmqA6w2RomPDKlW5XHAHJM6xtDqLLTCGs= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.79.0 h1:K871tj1LnnJ2qu1AHlxx94gi8X1t7BCJ9BbFf9rGOOU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.79.0/go.mod h1:xAXBpCVNAU8Y9AlFiQzU3JvJnDxM4otcW14FZnksa6I= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.79.0 h1:+mJSVctdGemxKt2O6ZaccrNEiWQ7OCRuGfD+9nUEZRg= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.79.0/go.mod h1:+0BrsZx0PGVAnAdHS5F1du1AbUqsEwBrg1UrQfKPdd8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/pulsarreceiver v0.79.0 h1:dvzB6ccbLaTySJiKOqFePmParuXKjcP/f1cR6lM3Sps= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/pulsarreceiver v0.79.0/go.mod h1:lZ8uv1mFeg8fzvSStbGeSySPEiPvllrd5oVVIIcUemw= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.79.0 h1:RIG0+I5jShbPxMwNOdB/Xyf7/JlaYLsXNvn0rN5G4r0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.79.0/go.mod h1:iFiwmzAkSuY6RMQW7k+XlDn9oMWJ+55NrTsxJFQburM= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.79.0 h1:PIOFy5/GivJuDhy97R4KnRic2BB777Vf45b3WAP+GYE= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.79.0/go.mod h1:jKSUs5RXRuYMb66RshAJXADv35+4+PMSb+/y6UVGI9U= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.79.0 h1:CuZbOGP8y0FHgNHZTefTQNXIvnLwy7xGYF4a+GjQFn8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.79.0/go.mod h1:SdhMmB69nbxsbNXatGj1CLuwH3synpz8qE6KM/35GtE= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.79.0 h1:Lvr6SdYAjsCNRLY30E8QTiky5Esj9E0v5IWqk3u1UqY= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.79.0/go.mod h1:nZs8RMHpK5ftigoTTOU6qjYgxG2hg9ABttCZ3uJhwi8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.79.0 h1:txIhK+qVrJ7CcAq3tJKgitzPQapyn+Ys7NYHV+J51t8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.79.0/go.mod h1:EKCcZj3gElzD4fVh6PcE2Oc6CbGSneaXSLakpj5jg1E= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.79.0 h1:RrzBO7Wp+f9L2b7wwBgF6wXA/14WsGGAEPKtvvSIV8Y= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.79.0/go.mod h1:F4P38AUSIYNZwuK/0AxPwL/JhS/R8iEuU/Z6oVQd34s= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.79.0 h1:SGjFj2Cb+aJp6KgRobfqY4a8K1ZAGoo3JTnsDoWdFiU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.79.0/go.mod h1:U7DpQQh5G87qoJbtNZJE4wQUnN3x2y4vzRQVk4iJJ4g= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.79.0 h1:D8n2bTdBfKbqzGoHeUC1p1AN7v+75aECxNAsogmXhDw= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.79.0/go.mod h1:AnyaRdTUQjcJM5ixEt0E9hhh0ZNr+1t59XhZD61iLQU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.79.0 h1:0WiSdZ8bGXNn4Dy4iXD1ME5kyeKqroVuxSFmGb/rZtk= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.79.0/go.mod h1:vVxkk/ywvBzpxfUFtMGF1MTZWzLr86Vr7+9M4ndJh/k= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.79.0 h1:XhUgDKu/oQYEF3k+H4kxZKshy4ea2L9L4nBckcz+di4= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.79.0/go.mod h1:lPrV9YjJ1cVBsUaPbBJOKhgmijVgULvzBYrYiyb0OcI= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.79.0 h1:7GYBt7dmeGgBPifrEjaMrKZHtXUgx82hAF7Swfwbf2k= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.79.0/go.mod h1:mY11E+69xT/T2VB65TMk/54/ZAeVNDqGlpCjKkWpAR8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.79.0 h1:pUHlVupQx3gIb5pffM7MUI1DC9cNsQKNssJvIiJQ8Qo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.79.0/go.mod h1:A0CR4pzi78CzU0YtzqUCLw7+s/OsxyVgKZ0ZyzHVDd8= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1506,29 +1549,34 @@ github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3I github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.4/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= +github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78 h1:R5M2qXZiK/mWPMT4VldCOiSL9HIAMuxQZWdG0CSM5+4= +github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/openlyinc/pointy v1.2.0 h1:vbb/WoPbshyTH8j3/XYu3enlZfv+NHxAD15qTm1zbk0= -github.com/openlyinc/pointy v1.2.0/go.mod h1:JodZOTJoBNaAQHeU0F/SwA4PL0lg4pKF7fYFpX291P0= -github.com/openshift/api v0.0.0-20210521075222-e273a339932a h1:aBPwLqCg66SbQd+HrjB1GhgTfPtqSY4aeB022tEYmE0= +github.com/opencontainers/selinux v1.10.0 h1:rAiKF8hTcgLI3w0DHm6i0ylVVcOrlgR1kK99DRLDhyU= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/openshift/api v0.0.0-20210521075222-e273a339932a/go.mod h1:izBmoXbUu3z5kUa4FjZhvekTsyzIWiOoaIgJiZBBMQs= +github.com/openshift/api v3.9.0+incompatible h1:fJ/KsefYuZAjmrr3+5U9yZIZbTOpVkDDLDLFresAeYs= +github.com/openshift/api v3.9.0+incompatible/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= github.com/openshift/build-machinery-go v0.0.0-20210423112049-9415d7ebd33e/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE= github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142 h1:ZHRIMCFIJN1p9LsJt4HQ+akDrys4PrYnXzOWI5LK03I= github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142/go.mod h1:fjS8r9mqDVsPb5td3NehsNOAWa4uiFkYEfVZioQ2gH0= @@ -1536,6 +1584,10 @@ github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+ github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.4.1 h1:kNd/ST2yLLWhaWrkgchya40TJabe8Hioj9udfPcEO5A= github.com/openzipkin/zipkin-go v0.4.1/go.mod h1:qY0VqDSN1pOBN94dBc6w2GJlWLiovAyg7Qt6/I9HecM= +github.com/ovh/go-ovh v1.3.0 h1:mvZaddk4E4kLcXhzb+cxBsMPYp2pHqiQpWYkInsuZPQ= +github.com/ovh/go-ovh v1.3.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA= +github.com/panta/machineid v1.0.2 h1:LVYeEq1hZ+FwcM+/H6eB8KfXM2R5b2h1SWdnWwZ0OQw= +github.com/panta/machineid v1.0.2/go.mod h1:AROj156fsca3R3rNw3q9h8xFkos25W9P0ZG9gu+3Uf0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -1552,8 +1604,8 @@ github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCko github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= +github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -1561,7 +1613,6 @@ github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9F github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= @@ -1575,7 +1626,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -1598,15 +1648,17 @@ github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqr github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= +github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -1619,8 +1671,9 @@ github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.31.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1636,10 +1689,11 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/prometheus v0.38.0 h1:YSiJ5gDZmXnOntPRyHn1wb/6I1Frasj9dw57XowIqeA= -github.com/prometheus/prometheus v0.38.0/go.mod h1:2zHO5FtRhM+iu995gwKIb99EXxjeZEuXpKUTIRq4YI0= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/prometheus v0.43.1 h1:Z/Z0S0CoPUVtUnHGokFksWMssSw2Y1Ir9NnWS1pPWU0= +github.com/prometheus/prometheus v0.43.1/go.mod h1:2BA14LgBeqlPuzObSEbh+Y+JwLH2GcqDlJKbF2sA6FM= github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= @@ -1648,17 +1702,14 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqn github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= -github.com/rivo/tview v0.0.0-20200219210816-cd38d7432498/go.mod h1:6lkG1x+13OShEf0EaOCaTQYyB7d5nSbb181KtjlS+84= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= -github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= +github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= @@ -1669,21 +1720,26 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/sanity-io/litter v1.2.0/go.mod h1:JF6pZUFgu2Q0sBZ+HSV35P8TVPI1TTzEwyu9FXAw2W4= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 h1:0roa6gXKgyta64uqh52AQG3wzZXH21unn+ltzQSXML0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.14 h1:yFl3jyaSVLNYXlnNYM5z2pagEk1dYQhfr1p20T1NyKY= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.14/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 h1:RpforrEYXWkmGwJHIGnLZ3tTWStkjVVstwzNGqxX2Ds= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c= github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE= github.com/sergey-telpuk/migrate/v4 v4.15.3-0.20220303065225-d5ae59d12ff7 h1:oAMuQOlrIBBwDqxyPo+pZAf829w6zKfcB7qGI9l91og= github.com/sergey-telpuk/migrate/v4 v4.15.3-0.20220303065225-d5ae59d12ff7/go.mod h1:m0OsHoAhCA9OlUH4aSxzM7k9cLmhvXjLyCsxfvC9WHU= github.com/shirou/gopsutil v2.19.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil/v3 v3.22.10 h1:4KMHdfBRYXGF9skjDWiL4RA2N+E8dRdodU/bOZpPoVg= -github.com/shirou/gopsutil/v3 v3.22.10/go.mod h1:QNza6r4YQoydyCfo6rH0blGfKahgibh4dQmV5xdFkQk= +github.com/shirou/gopsutil/v3 v3.23.5 h1:5SgDCeQ0KW0S4N0znjeM/eFHXXOKyv2dVNgRq/c9P6Y= +github.com/shirou/gopsutil/v3 v3.23.5/go.mod h1:Ng3Maa27Q2KARVJ0SPZF5NdrQSC3XHKP8IIWrHgMeLY= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -1692,8 +1748,8 @@ github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFR github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/signoz/grok v1.0.3 h1:JHPUTwOKf4YbrCwFYVxcaYAkk1PfjCpIG/6RX+juDOQ= github.com/signoz/grok v1.0.3/go.mod h1:ax1aAchzC6/QMXMcyzHQGZWaW1l195+uMYIkCWPCNIo= -github.com/sijms/go-ora/v2 v2.5.8 h1:V0ITqRXzZngDw6+A2R3zR4Yf+T/LSNPZ4f9tc+3dDgk= -github.com/sijms/go-ora/v2 v2.5.8/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= +github.com/sijms/go-ora/v2 v2.7.6 h1:QyR1CKFxG+VVk2+LdHoHF4NxDSvcQ3deBXtZCrahSq4= +github.com/sijms/go-ora/v2 v2.7.6/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -1709,8 +1765,8 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/snowflakedb/gosnowflake v1.6.3/go.mod h1:6hLajn6yxuJ4xUHZegMekpq9rnQbGJ7TMwXjgTmA6lg= -github.com/snowflakedb/gosnowflake v1.6.15 h1:P8ddNHa+suNqJtjkgx03PUXge5HkxP/aOcGqcPoPv9g= -github.com/snowflakedb/gosnowflake v1.6.15/go.mod h1:rDY1HPk3VD2jnwGX5pRKUMaugcXMcwwg1wVLHYajGG4= +github.com/snowflakedb/gosnowflake v1.6.18 h1:mm4KYvp3LWGHIuACwX/tHv9qDs2NdLDXuK0Rep+vfJc= +github.com/snowflakedb/gosnowflake v1.6.18/go.mod h1:BhNDWNSUY+t4T8GBuOg3ckWC4v5hhGlLovqGcF8Rkac= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= @@ -1725,14 +1781,14 @@ github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1755,7 +1811,6 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1766,19 +1821,22 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/testcontainers/testcontainers-go v0.15.0 h1:3Ex7PUGFv0b2bBsdOv6R42+SK2qoZnWBd21LvZYhUtQ= -github.com/tg123/go-htpasswd v1.2.0 h1:UKp34m9H467/xklxUxU15wKRru7fwXoTojtxg25ITF0= -github.com/tg123/go-htpasswd v1.2.0/go.mod h1:h7IzlfpvIWnVJhNZ0nQ9HaFxHb7pn5uFJYLlEUJa2sM= +github.com/testcontainers/testcontainers-go v0.20.1 h1:mK15UPJ8c5P+NsQKmkqzs/jMdJt6JMs5vlw2y4j92c0= +github.com/tg123/go-htpasswd v1.2.1 h1:i4wfsX1KvvkyoMiHZzjS0VzbAPWfxzI8INcZAKtutoU= +github.com/tg123/go-htpasswd v1.2.1/go.mod h1:erHp1B86KXdwQf1X5ZrLb7erXZnWueEQezb2dql4q58= github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -1790,12 +1848,14 @@ github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= github.com/tidwall/wal v1.1.7 h1:emc1TRjIVsdKKSnpwGBAcsAGg0767SvUk8+ygx7Bb+4= github.com/tidwall/wal v1.1.7/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= -github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= -github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= -github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= -github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= -github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= -github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= +github.com/tilinna/clock v1.1.0 h1:6IQQQCo6KoBxVudv6gwtY8o4eDfhHo8ojA5dP0MfhSs= +github.com/tilinna/clock v1.1.0/go.mod h1:ZsP7BcY7sEEz7ktc0IVy8Us6boDrK8VradlKRUGfOao= +github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= +github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= +github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= +github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= +github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= +github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -1810,9 +1870,11 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 h1:cPXZWzzG0NllBLdjWoD1nDfaqu98YMv+OneaKc8sPOA= github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae h1:4hwBBUfQCFe3Cym0ZtKyq7L16eZUtYKs+BaHDN6mAns= github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vultr/govultr/v2 v2.17.2 h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs= github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= @@ -1822,14 +1884,17 @@ github.com/xanzy/go-gitlab v0.15.0/go.mod h1:8zdQa/ri1dfn8eS3Ir1SyfvOKlw7WBJ8DVT github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= +github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= +github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= @@ -1840,8 +1905,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= @@ -1850,8 +1915,8 @@ gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= @@ -1859,99 +1924,98 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3 go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= -go.mongodb.org/atlas v0.19.0 h1:gvezG9d0KsSDaExEdTtcGqZHRvvVazzuEcBUpBXxmlg= -go.mongodb.org/atlas v0.19.0/go.mod h1:PFk1IGhiGjFXHGVspOK7i1U2nnPjK8wAjYwQf6FoVf4= +go.mongodb.org/atlas v0.28.0 h1:CelAXtmiM36tdifSDwWdDH1nNbdvq0M2XfUR8208JxA= +go.mongodb.org/atlas v0.28.0/go.mod h1:L4BKwVx/OeEhOVjCSdgo90KJm4469iv7ZLzQms/EPTg= go.mongodb.org/mongo-driver v1.7.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= -go.mongodb.org/mongo-driver v1.10.3 h1:XDQEvmh6z1EUsXuIkXE9TaVeqHw6SwS1uf93jFs0HBA= -go.mongodb.org/mongo-driver v1.10.3/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8= +go.mongodb.org/mongo-driver v1.11.4 h1:4ayjakA013OdpGyL2K3ZqylTac/rMjrJOMZ1EHizXas= +go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -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.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector v0.66.0 h1:5+0N2PCyqHoE3MYV8tgCsyeD86KbmIVDKmqKF9A7u9k= -go.opentelemetry.io/collector v0.66.0/go.mod h1:hE6jCs+0rfiufCrVPucKZTMwfHit1okfDPnwPT2eW1I= -go.opentelemetry.io/collector/component v0.66.0 h1:M2kI+BXGilmqEs8Kufo5nu0xiO+5cvwdPflV/r4pGkE= -go.opentelemetry.io/collector/component v0.66.0/go.mod h1:0c84EqXUhvYe6KW7hJfh76tiI/5yjWCH2amwyQ06XLM= -go.opentelemetry.io/collector/consumer v0.66.0 h1:wDx0MmqqsHGBcEa24HS0MlvDbLR0jT/936CSZ7vvP4M= -go.opentelemetry.io/collector/consumer v0.66.0/go.mod h1:WtoRZa5SnxQO1ZEQdVxYpFcXCmq62rakv0oUSlPO0NQ= -go.opentelemetry.io/collector/exporter/loggingexporter v0.66.0 h1:LLgWAS3zGce/H7UVB/EwPm49n3qNRbh/Gkd1IPORJDg= -go.opentelemetry.io/collector/exporter/loggingexporter v0.66.0/go.mod h1:X7fNHTbcgvOOio9QDEyVk0WbIm1JaVYby4z3VzsOc2k= -go.opentelemetry.io/collector/exporter/otlpexporter v0.66.0 h1:uXNkGlAXHyvUZL51qsQR8hS8oSt80m1ncbqwXRRkJMk= -go.opentelemetry.io/collector/exporter/otlpexporter v0.66.0/go.mod h1:IOoHR1lsV1r2TFOVctPogn9RUXT4jiU7kH+IhfUlP1w= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.66.0 h1:Nqopv2VdkjI/kCg8SsZYBD5R+Gd3OlM5lAZ2N+Exx60= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.66.0/go.mod h1:Gx9WIGE9pUv38Sm8IN0IPM7k+mX2hHGfRZI/65pOSIc= -go.opentelemetry.io/collector/extension/ballastextension v0.66.0 h1:oAEb4UBwNs5v9X83farWSVnxmjSiU5eHmWCU6agSVRE= -go.opentelemetry.io/collector/extension/ballastextension v0.66.0/go.mod h1:vjBno34PZB+byrW3QWzftLFqCI1G8PbgPrgPzpFXpQM= -go.opentelemetry.io/collector/extension/zpagesextension v0.65.0 h1:T5JJIJ3cmClqdSMgkbjoIiP9p059AAvbfcd3houJkxM= -go.opentelemetry.io/collector/extension/zpagesextension v0.65.0/go.mod h1:+IPas7AeffG0GMIXhZr8IzpTNhH1Ri/6S/9YFqbLsmQ= -go.opentelemetry.io/collector/featuregate v0.66.0 h1:WW3IYWxOu9cfXa6fQwov0jswlf2Y/NEBHgiDkRPm4Uw= -go.opentelemetry.io/collector/featuregate v0.66.0/go.mod h1:tewuFKJYalWBU0bmNKg++MC1ipINXUr6szYzOw2p1GI= -go.opentelemetry.io/collector/model v0.50.0 h1:1wt8pQ4O6GaUeYEaR+dh3zHmYsFicduF2bbPGMZeSKk= -go.opentelemetry.io/collector/model v0.50.0/go.mod h1:vKpC0JMtrL7g9tUHmzcQqd8rEbnahKVdTWZSVO7x3Ms= -go.opentelemetry.io/collector/pdata v0.66.0 h1:UdE5U6MsDNzuiWaXdjGx2lC3ElVqWmN/hiUE8vyvSuM= -go.opentelemetry.io/collector/pdata v0.66.0/go.mod h1:pqyaznLzk21m+1KL6fwOsRryRELL+zNM0qiVSn0MbVc= -go.opentelemetry.io/collector/processor/batchprocessor v0.66.0 h1:3GNIEOmGiVUSWljlisFGmjvIfsVKhn0OCafirS53YAs= -go.opentelemetry.io/collector/processor/batchprocessor v0.66.0/go.mod h1:XhGTsC1B/bq4gpg8IZ/QYBLXkzE4Gw3r7Xu2+ik8A1Q= -go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.66.0 h1:JLzuWcVrRGFyLUaE9u42ZdLNXNUpbLnEQg3w0ULeQG8= -go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.66.0/go.mod h1:KfHfOzND4tzQYewrYzi/NGzvOV3wR7jzWTkxSR00lRI= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.66.0 h1:ZHEOeGOIYIDTKhI9xs30/obFfhUbb9b2+e/eahp1fJA= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.66.0/go.mod h1:pb+dcV+KJ44dP+CqV0N6L6dTeDDvCXB8StCqwlrrSkM= -go.opentelemetry.io/collector/semconv v0.66.0 h1:gz4fYzOVOt1EQCcOL6pbSmTRj93pZErjHD+H100pH+4= -go.opentelemetry.io/collector/semconv v0.66.0/go.mod h1:5o9yhOa+ABt7g2E5JABDxGZ1PQPbtfxrKNbYn+LOTXU= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 h1:PRXhsszxTt5bbPriTjmaweWUsAnJYeWBhUMLRetUgBU= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4/go.mod h1:05eWWy6ZWzmpeImD3UowLTB3VjDMU1yxQ+ENuVWDM3c= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4 h1:aUEBEdCa6iamGzg6fuYxDA8ThxvOG240mAvWDU+XLio= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4/go.mod h1:l2MdsbKTocpPS5nQZscqTR9jd8u96VYZdcpF8Sye7mA= -go.opentelemetry.io/contrib/propagators/b3 v1.11.1 h1:icQ6ttRV+r/2fnU46BIo/g/mPu6Rs5Ug8Rtohe3KqzI= -go.opentelemetry.io/contrib/propagators/b3 v1.11.1/go.mod h1:ECIveyMXgnl4gorxFcA7RYjJY/Ql9n20ubhbfDc3QfA= -go.opentelemetry.io/contrib/zpages v0.36.4 h1:Z2VK5WsDhWs9VwZ1p0TM5RyusTOgAQfdMMDDQPRnlmY= -go.opentelemetry.io/contrib/zpages v0.36.4/go.mod h1:h1gnOu0cOfDGEncNgLsjQ5H/9eAzt9LXsa1WvH7I5KU= +go.opentelemetry.io/collector v0.79.0 h1:Lra7U0ilMor1g5WVkO3YZ0kZYsvzAtGN+Uq+CmC96JY= +go.opentelemetry.io/collector v0.79.0/go.mod h1:O2Vfwykphq9VqdATZiAypjnJMS3WFBXwFSe/0ujo38Q= +go.opentelemetry.io/collector/component v0.79.0 h1:ZKLJ4qa0AngmyGp1RQBJgl6OIP6mxdfrVpbz09h/W34= +go.opentelemetry.io/collector/component v0.79.0/go.mod h1:rX0gixMemcXZTZaML5zUiT+5txZUYkWnACscJkFVj18= +go.opentelemetry.io/collector/confmap v0.79.0 h1:a4XVde3lLP81BiSbt8AzVD6pvQBX8YkrB9ZtMSHKv1A= +go.opentelemetry.io/collector/confmap v0.79.0/go.mod h1:cKr2c7lVtEJCuMOncUPlcROJBbTFaHiPjYp1Y8RbL+Q= +go.opentelemetry.io/collector/consumer v0.79.0 h1:V/4PCvbTw2Bt+lYb/ogac0g/nCCb3oKnmz+jM3t5Dyk= +go.opentelemetry.io/collector/consumer v0.79.0/go.mod h1:VfqIyUI5K20zXx3mfVN+skmA+V3sV5fNorJ5TaIOj/U= +go.opentelemetry.io/collector/exporter v0.79.0 h1:PxhKgWf1AkZvN1PjiJT5xiO+pKZA9Y4fyuMs5aNFuEA= +go.opentelemetry.io/collector/exporter v0.79.0/go.mod h1:qlXiqnOUeHelpAwk03f8nB5+91UIqlA7udSBsj9bJ3M= +go.opentelemetry.io/collector/exporter/loggingexporter v0.79.0 h1:rPoHM4n6y93vBJkEXjo5x7jVTNUsM9EO5gbh3fBx1IE= +go.opentelemetry.io/collector/exporter/loggingexporter v0.79.0/go.mod h1:t2/u+KL8R+q9OAEHts1Qr3PpWnqQFXAOdTh4NecOa1I= +go.opentelemetry.io/collector/exporter/otlpexporter v0.79.0 h1:TL1nkTNi4Ub5Ln+6NWpHhObqtZhqN9B+uPp86HrzJmc= +go.opentelemetry.io/collector/exporter/otlpexporter v0.79.0/go.mod h1:zYW9hrPtqDQS4YPeRJV3CAUfRX05/EzMi70aVVdL51M= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.79.0 h1:bvzHTA6rY/JzJI9xJoawx4UPR3OZabiFjv/RxB6GS9Y= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.79.0/go.mod h1:uWTeG4e+7asfhMZ8tGvIUDcDgx5vILeUH/0RI9BUAWw= +go.opentelemetry.io/collector/extension/ballastextension v0.79.0 h1:AvUux+8YFRlroYH8YwwB5fepmGs62z+8Qt+M9kyn3EI= +go.opentelemetry.io/collector/extension/ballastextension v0.79.0/go.mod h1:6wDnPmwg2ylSj3Zx95s+QNREpMewN+ySuRet/PFS1Tw= +go.opentelemetry.io/collector/extension/zpagesextension v0.79.0 h1:I1DIomwNnNecBBSKLR3O0OlEqbPNCtMw48tAfj39VKM= +go.opentelemetry.io/collector/extension/zpagesextension v0.79.0/go.mod h1:zlgkyg7I4Hu0ZahSjlTl2RBrju744PcPyQ7IDDCFQWI= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 h1:pSO81lfikGEgRXHepmOGy2o6WWCly427UJCgMJC5c8g= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012/go.mod h1:/kVAsGUCyJXIDSgHftCN63QiwAEVHRLX2Kh/S+dqgHY= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 h1:R+cfEUMyLn9Q1QknyQ4QU77pbfc1aJKYEXFHtnwSbCg= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012/go.mod h1:rEAKFqc1L03lidKtra/2/dJtI0Hp+JsQxuPEIkj/2Vg= +go.opentelemetry.io/collector/processor/batchprocessor v0.79.0 h1:n9n1vZDdjInTdDVqAYSPycKfFhKBs6wbTaIfAz9oxYc= +go.opentelemetry.io/collector/processor/batchprocessor v0.79.0/go.mod h1:ZCTjkZxcRH7GJe34k4morz62BEOvb8yQCIKWbqLi0a0= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.79.0 h1:TuRrWyecAeM7N5eAgNvBkb3NHjpoIYmyOEtndYzCNrs= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.79.0/go.mod h1:pooidWffEEUKaaxQGV2mfPcHiGoUH/FsWmDHvqg51ms= +go.opentelemetry.io/collector/receiver v0.79.0 h1:Ag4hciAYklQWDpKbnmqhfh9zJlUskWvThpCpphp12b4= +go.opentelemetry.io/collector/receiver v0.79.0/go.mod h1:+/xe0VoYl6Mli+KQTZWBR2apqFsbioAAqu7abzKDskI= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.79.0 h1:LWYxlRuczwT5+YwBGDzA7Sb4rM5RpdeO/CzO4qQ6lVE= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.79.0/go.mod h1:Zd+Ks3E1Z/YHFSGk/M0E6RqeV4cJIHruFjdr+XVy6S8= +go.opentelemetry.io/collector/semconv v0.79.0 h1:74pzP4c7xWk9Eihs14kEQvE4m4hHgXrQ/YbWkdn1bVY= +go.opentelemetry.io/collector/semconv v0.79.0/go.mod h1:TlYPtzvsXyHOgr5eATi43qEMqwSmIziivJB2uctKswo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 h1:ZOLJc06r4CB42laIXg/7udr0pbZyuAihN10A/XuiQRY= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0/go.mod h1:5z+/ZWJQKXa9YT34fQNx5K8Hd1EoIhvtUygUQPqEOgQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0/go.mod h1:XiYsayHc36K3EByOO6nbAXnAWbrUxdjUROCEeeROOH8= +go.opentelemetry.io/contrib/propagators/b3 v1.17.0 h1:ImOVvHnku8jijXqkwCSyYKRDt2YrnGXD4BbhcpfbfJo= +go.opentelemetry.io/contrib/propagators/b3 v1.17.0/go.mod h1:IkfUfMpKWmynvvE0264trz0sf32NRTZL4nuAN9AbWRc= +go.opentelemetry.io/contrib/zpages v0.42.0 h1:hFscXKQ9PTjyIVmAr6zIV8cMoiEeR9lPIwPVqHi8+5Q= +go.opentelemetry.io/contrib/zpages v0.42.0/go.mod h1:qRJBEfB0iwRKrYImq5qfwTolmY8HXvZBRucvhuTVQZw= go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= -go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= -go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= -go.opentelemetry.io/otel/exporters/prometheus v0.33.0 h1:xXhPj7SLKWU5/Zd4Hxmd+X1C4jdmvc0Xy+kvjFx2z60= -go.opentelemetry.io/otel/exporters/prometheus v0.33.0/go.mod h1:ZSmYfKdYWEdSDBB4njLBIwTf4AU2JNsH3n2quVQDebI= -go.opentelemetry.io/otel/metric v0.33.0 h1:xQAyl7uGEYvrLAiV/09iTJlp1pZnQ9Wl793qbVvED1E= -go.opentelemetry.io/otel/metric v0.33.0/go.mod h1:QlTYc+EnYNq/M2mNk1qDDMRLpqCOj2f/r5c7Fd5FYaI= -go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs= -go.opentelemetry.io/otel/sdk v1.11.1/go.mod h1:/l3FE4SupHJ12TduVjUkZtlfFqDCQJlOlithYrdktys= -go.opentelemetry.io/otel/sdk/metric v0.33.0 h1:oTqyWfksgKoJmbrs2q7O7ahkJzt+Ipekihf8vhpa9qo= -go.opentelemetry.io/otel/sdk/metric v0.33.0/go.mod h1:xdypMeA21JBOvjjzDUtD0kzIcHO/SPez+a8HOzJPGp0= +go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= +go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= +go.opentelemetry.io/otel/bridge/opencensus v0.39.0 h1:YHivttTaDhbZIHuPlg1sWsy2P5gj57vzqPfkHItgbwQ= +go.opentelemetry.io/otel/bridge/opencensus v0.39.0/go.mod h1:vZ4537pNjFDXEx//WldAR6Ro2LC8wwmFC76njAXwNPE= +go.opentelemetry.io/otel/exporters/prometheus v0.39.0 h1:whAaiHxOatgtKd+w0dOi//1KUxj3KoPINZdtDaDj3IA= +go.opentelemetry.io/otel/exporters/prometheus v0.39.0/go.mod h1:4jo5Q4CROlCpSPsXLhymi+LYrDXd2ObU5wbKayfZs7Y= +go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= +go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= +go.opentelemetry.io/otel/schema v0.0.4 h1:xgqNjF5c5oy7F1PDm4q6a6wDUJTm+po4jEiXmcN5ncI= +go.opentelemetry.io/otel/schema v0.0.4/go.mod h1:LBBdyW+43YB5XmeQtH4b2ET5k0hx7dh3yJgRGY4Qw+A= +go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= +go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= +go.opentelemetry.io/otel/sdk/metric v0.39.0 h1:Kun8i1eYf48kHH83RucG93ffz0zGV1sh46FAScOTuDI= +go.opentelemetry.io/otel/sdk/metric v0.39.0/go.mod h1:piDIRgjcK7u0HCL5pCA4e74qpK/jk3NiUoAHATVAmiI= go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= -go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= -go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= +go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= +go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= -go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -1976,11 +2040,12 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1995,8 +2060,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20221019170559-20944726eadf h1:nFVjjKDgNY37+ZSYCJmtYf7tOlfQswHqplG2eosjOMg= -golang.org/x/exp v0.0.0-20221019170559-20944726eadf/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2017,7 +2082,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -2033,8 +2097,9 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2050,7 +2115,6 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190225153610-fe579d43d832/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= @@ -2098,18 +2162,22 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220630215102-69896b714898/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220725212005-46097bf591d3/go.mod h1:AaygXjzTFtRAg2ttMY5RMuhpJ3cNnI0XpyFJD1iQRSM= -golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2130,8 +2198,8 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2146,8 +2214,9 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2164,7 +2233,6 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2174,7 +2242,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2228,7 +2295,6 @@ golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2266,32 +2332,40 @@ golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210818153620-00dd8d7831e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211110154304-99a53858aa08/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2302,16 +2376,19 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 h1:ftMN5LMiBFjbzleLqtoBZk7KdJwhuybIU+FckUHgoyQ= -golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2373,7 +2450,6 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -2387,10 +2463,11 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2402,8 +2479,8 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNq gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= -gonum.org/v1/gonum v0.12.0/go.mod h1:73TDxJfAAHeA8Mk9mf8NlIppyhQNo5GLTcYeqgo2lvY= +gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= +gonum.org/v1/gonum v0.13.0/go.mod h1:/WPYRckkfWrhWefxyYTfrTtQR0KH4iyHNuzxqXAKyAU= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -2440,8 +2517,8 @@ google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqiv google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= -google.golang.org/api v0.103.0 h1:9yuVqlu2JCvcLg9p8S3fcFLZij8EPSyvODIY1rkMizQ= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.125.0 h1:7xGvEY4fyWbhWMHf3R2/4w7L4fXyfpRGE9g6lp8+DCk= +google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= google.golang.org/appengine v1.0.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2457,7 +2534,6 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= @@ -2487,7 +2563,6 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -2521,10 +2596,15 @@ google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220111164026-67b88f271998/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c h1:QgY/XxIAIeccR+Ca/rDdKubLIU9rcJ3xfy1DC/Wd2Oo= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -2557,11 +2637,12 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2577,8 +2658,9 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= @@ -2597,11 +2679,13 @@ gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKW gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= @@ -2624,6 +2708,7 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/postgres v1.0.8/go.mod h1:4eOzrI1MUfm6ObJU/UcmbXyiHSs8jSwH95G5P5dxcAg= @@ -2633,7 +2718,7 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.2.0 h1:I0DwBVMGAx26dttAj1BtJLAkVGncrkkUXfJLC4Flt/I= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2645,14 +2730,14 @@ k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= -k8s.io/api v0.25.4 h1:3YO8J4RtmG7elEgaWMb4HgmpS2CfY1QlaOz9nwB+ZSs= -k8s.io/api v0.25.4/go.mod h1:IG2+RzyPQLllQxnhzD8KQNEu4c4YvyDTpSMztf4A0OQ= +k8s.io/api v0.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo= +k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= -k8s.io/apimachinery v0.25.4 h1:CtXsuaitMESSu339tfhVXhQrPET+EiWnIY1rcurKnAc= -k8s.io/apimachinery v0.25.4/go.mod h1:jaF9C/iPNM1FuLl7Zuy5b9v+n35HGSh6AQ4HYRkCqwo= +k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg= +k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= @@ -2660,8 +2745,8 @@ k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= -k8s.io/client-go v0.25.4 h1:3RNRDffAkNU56M/a7gUfXaEzdhZlYhoW8dgViGy5fn8= -k8s.io/client-go v0.25.4/go.mod h1:8trHCAC83XKY0wsBIpbirZU4NTUpbuhc2JnI7OruGZw= +k8s.io/client-go v0.27.2 h1:vDLSeuYvCHKeoQRhCXjxXO45nHVv2Ip4Fe0MfioMrhE= +k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ= k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= @@ -2672,22 +2757,26 @@ k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.70.1 h1:7aaoSdahviPmR+XkS7FyxlkkXs6tHISSG03RxleQAVQ= -k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= -k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 h1:MQ8BAZPZlWk3S9K4a9NCkIFQtZShWqoha7snGixVgEA= -k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU= -k8s.io/kubelet v0.25.2 h1:L0PXLc2kTfIf6bm+wv4/1dIWwgXWDRTxTErxqFR4nqc= -k8s.io/kubelet v0.25.2/go.mod h1:/ASc/pglUA3TeRMG4hRKSjTa7arT0D6yqLzwqSxwMlY= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= +k8s.io/kubelet v0.27.2 h1:vpJnBkqQjxItEhehKG0toXoZ+G+tf4UXAOqtMJy6qgc= +k8s.io/kubelet v0.27.2/go.mod h1:1SVrHaLnuw53nQJx8036k9HjE0teDXZtbN51cYC0HSc= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed h1:jAne/RjBTyawwAy0utX5eqigAwz/lQhTmy+Hr/Cpue4= -k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20230308161112-d77c459e9343 h1:m7tbIjXGcGIAtpmQr7/NAi7RsWoW3E7Zcm4jI1HicTc= +k8s.io/utils v0.0.0-20230308161112-d77c459e9343/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= modernc.org/b v1.0.0/go.mod h1:uZWcZfRj1BpYzfN9JTerzlNUnnPsV9O2ZA8JsRcubNg= modernc.org/cc/v3 v3.32.4/go.mod h1:0R6jl1aZlIl2avnYfbfHBS1QB6/f+16mihBObaBC878= modernc.org/ccgo/v3 v3.9.2/go.mod h1:gnJpy6NIVqkETT+L5zPsQFj7L2kkhfPMzOghRNv/CFo= @@ -2720,8 +2809,8 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= diff --git a/opamp/simple_client_test.go b/opamp/simple_client_test.go index 4ae18ca2..e81499c2 100644 --- a/opamp/simple_client_test.go +++ b/opamp/simple_client_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/SigNoz/signoz-otel-collector/signozcol" - "go.opentelemetry.io/collector/service" + "go.opentelemetry.io/collector/otelcol" "go.uber.org/zap" ) @@ -24,7 +24,7 @@ func TestNopClientWithCollector(t *testing.T) { t.Errorf("unexpected error: %v", err) } - if coll.GetState() != service.StateRunning { + if coll.GetState() != otelcol.StateRunning { t.Errorf("expected collector to be run") } @@ -49,7 +49,7 @@ func TestNopClientWithCollectorError(t *testing.T) { t.Errorf("expected error") } - if coll.GetState() != service.StateClosed { + if coll.GetState() != otelcol.StateClosed { t.Errorf("expected collector to be in closed state") } @@ -74,7 +74,7 @@ func TestNopClientWithCollectorErrorRead(t *testing.T) { t.Errorf("expected error") } - if coll.GetState() != service.StateClosed { + if coll.GetState() != otelcol.StateClosed { t.Errorf("expected collector to be in closed state") } } diff --git a/processor/signozspanmetricsprocessor/config.go b/processor/signozspanmetricsprocessor/config.go index a82b1ff4..818eb9c6 100644 --- a/processor/signozspanmetricsprocessor/config.go +++ b/processor/signozspanmetricsprocessor/config.go @@ -17,7 +17,6 @@ package signozspanmetricsprocessor import ( "time" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pmetric" ) @@ -28,8 +27,10 @@ const ( dropSanitizationGateID = "processor.signozspanmetrics.PermissiveLabelSanitization" ) +var dropSanitizationFeatureGate *featuregate.Gate + func init() { - featuregate.GetRegistry().MustRegisterID( + dropSanitizationFeatureGate = featuregate.GlobalRegistry().MustRegister( dropSanitizationGateID, featuregate.StageAlpha, featuregate.WithRegisterDescription("Controls whether to change labels starting with '_' to 'key_'"), @@ -50,7 +51,6 @@ type ExcludePattern struct { // Config defines the configuration options for spanmetricsprocessor. type Config struct { - config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct // MetricsExporter is the name of the metrics exporter to use to ship metrics. MetricsExporter string `mapstructure:"metrics_exporter"` diff --git a/processor/signozspanmetricsprocessor/config_test.go b/processor/signozspanmetricsprocessor/config_test.go index 75583910..ca62a55d 100644 --- a/processor/signozspanmetricsprocessor/config_test.go +++ b/processor/signozspanmetricsprocessor/config_test.go @@ -22,13 +22,11 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/exporter/otlpexporter" + "go.opentelemetry.io/collector/otelcol/otelcoltest" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/receiver/otlpreceiver" - "go.opentelemetry.io/collector/service/servicetest" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter" @@ -80,7 +78,7 @@ func TestLoadConfig(t *testing.T) { for _, tc := range testcases { t.Run(tc.configFile, func(t *testing.T) { // Prepare - factories, err := componenttest.NopFactories() + factories, err := otelcoltest.NopFactories() require.NoError(t, err) factories.Receivers["otlp"] = otlpreceiver.NewFactory() @@ -94,14 +92,13 @@ func TestLoadConfig(t *testing.T) { factories.Exporters["jaeger"] = jaegerexporter.NewFactory() // Test - cfg, err := servicetest.LoadConfigAndValidate(filepath.Join("testdata", tc.configFile), factories) + cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", tc.configFile), factories) // Verify require.NoError(t, err) require.NotNil(t, cfg) assert.Equal(t, &Config{ - ProcessorSettings: config.NewProcessorSettings(component.NewID(typeStr)), MetricsExporter: tc.wantMetricsExporter, LatencyHistogramBuckets: tc.wantLatencyHistogramBuckets, Dimensions: tc.wantDimensions, diff --git a/processor/signozspanmetricsprocessor/factory.go b/processor/signozspanmetricsprocessor/factory.go index eb0eff89..ce49f0db 100644 --- a/processor/signozspanmetricsprocessor/factory.go +++ b/processor/signozspanmetricsprocessor/factory.go @@ -19,9 +19,8 @@ import ( "github.com/google/uuid" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/featuregate" + "go.opentelemetry.io/collector/processor" ) const ( @@ -34,24 +33,23 @@ const ( ) // NewFactory creates a factory for the spanmetrics processor. -func NewFactory() component.ProcessorFactory { - return component.NewProcessorFactory( +func NewFactory() processor.Factory { + return processor.NewFactory( typeStr, createDefaultConfig, - component.WithTracesProcessor(createTracesProcessor, stability), + processor.WithTraces(createTracesProcessor, stability), ) } -func createDefaultConfig() component.ProcessorConfig { +func createDefaultConfig() component.Config { return &Config{ - ProcessorSettings: config.NewProcessorSettings(component.NewID(typeStr)), AggregationTemporality: "AGGREGATION_TEMPORALITY_CUMULATIVE", DimensionsCacheSize: defaultDimensionsCacheSize, - skipSanitizeLabel: featuregate.GetRegistry().IsEnabled(dropSanitizationGateID), + skipSanitizeLabel: dropSanitizationFeatureGate.IsEnabled(), } } -func createTracesProcessor(_ context.Context, params component.ProcessorCreateSettings, cfg component.ProcessorConfig, nextConsumer consumer.Traces) (component.TracesProcessor, error) { +func createTracesProcessor(_ context.Context, params processor.CreateSettings, cfg component.Config, nextConsumer consumer.Traces) (processor.Traces, error) { // TODO(srikanthccv): use the instanceID from params when it is added instanceUUID, _ := uuid.NewRandom() instanceID := instanceUUID.String() diff --git a/processor/signozspanmetricsprocessor/factory_test.go b/processor/signozspanmetricsprocessor/factory_test.go index bdcf462d..3fdb107a 100644 --- a/processor/signozspanmetricsprocessor/factory_test.go +++ b/processor/signozspanmetricsprocessor/factory_test.go @@ -20,9 +20,9 @@ import ( "time" "github.com/stretchr/testify/assert" - "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/processor/processortest" ) func TestNewProcessor(t *testing.T) { @@ -58,7 +58,7 @@ func TestNewProcessor(t *testing.T) { // Prepare factory := NewFactory() - creationParams := componenttest.NewNopProcessorCreateSettings() + creationParams := processortest.NewNopCreateSettings() cfg := factory.CreateDefaultConfig().(*Config) cfg.LatencyHistogramBuckets = tc.latencyHistogramBuckets cfg.Dimensions = tc.dimensions diff --git a/processor/signozspanmetricsprocessor/processor.go b/processor/signozspanmetricsprocessor/processor.go index 8f8b2629..c6ba2dc2 100644 --- a/processor/signozspanmetricsprocessor/processor.go +++ b/processor/signozspanmetricsprocessor/processor.go @@ -28,6 +28,7 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/pdata/ptrace" @@ -71,7 +72,7 @@ type processorImp struct { instanceID string config Config - metricsExporter component.MetricsExporter + metricsExporter exporter.Metrics nextConsumer consumer.Traces // Additional dimensions to add to metrics. @@ -136,7 +137,7 @@ type histogramData struct { exemplarsData []exemplarData } -func newProcessor(logger *zap.Logger, instanceID string, config component.ProcessorConfig, nextConsumer consumer.Traces) (*processorImp, error) { +func newProcessor(logger *zap.Logger, instanceID string, config component.Config, nextConsumer consumer.Traces) (*processorImp, error) { logger.Info("Building signozspanmetricsprocessor") pConfig := config.(*Config) @@ -160,7 +161,9 @@ func newProcessor(logger *zap.Logger, instanceID string, config component.Proces } dbCallDimensions = append(dbCallDimensions, pConfig.Dimensions...) - var externalCallDimensions []Dimension + var externalCallDimensions = []Dimension{ + {Name: tagHTTPStatusCode}, + } externalCallDimensions = append(externalCallDimensions, pConfig.Dimensions...) if pConfig.DimensionsCacheSize <= 0 { @@ -299,14 +302,14 @@ func (p *processorImp) shouldSkip(serviceName string, span ptrace.Span, resource // Start implements the component.Component interface. func (p *processorImp) Start(ctx context.Context, host component.Host) error { - p.logger.Info("Starting signozspanmetricsprocessor") + p.logger.Info("Starting signozspanmetricsprocessor with config", zap.Any("config", p.config)) exporters := host.GetExporters() var availableMetricsExporters []string // The available list of exporters come from any configured metrics pipelines' exporters. for k, exp := range exporters[component.DataTypeMetrics] { - metricsExp, ok := exp.(component.MetricsExporter) + metricsExp, ok := exp.(exporter.Metrics) if !ok { return fmt.Errorf("the exporter %q isn't a metrics exporter", k.String()) } @@ -458,12 +461,14 @@ func (p *processorImp) collectDBCallMetrics(ilm pmetric.ScopeMetrics) error { mDBCallSum := ilm.Metrics().AppendEmpty() mDBCallSum.SetName("signoz_db_latency_sum") mDBCallSum.SetUnit("1") - mDBCallSum.SetEmptySum().SetAggregationTemporality(p.config.GetAggregationTemporality()) + mDBCallSum.SetEmptySum().SetIsMonotonic(true) + mDBCallSum.Sum().SetAggregationTemporality(p.config.GetAggregationTemporality()) mDBCallCount := ilm.Metrics().AppendEmpty() mDBCallCount.SetName("signoz_db_latency_count") mDBCallCount.SetUnit("1") - mDBCallCount.SetEmptySum().SetAggregationTemporality(p.config.GetAggregationTemporality()) + mDBCallCount.SetEmptySum().SetIsMonotonic(true) + mDBCallCount.Sum().SetAggregationTemporality(p.config.GetAggregationTemporality()) callSumDps := mDBCallSum.Sum().DataPoints() callCountDps := mDBCallCount.Sum().DataPoints() @@ -498,12 +503,14 @@ func (p *processorImp) collectExternalCallMetrics(ilm pmetric.ScopeMetrics) erro mExternalCallSum := ilm.Metrics().AppendEmpty() mExternalCallSum.SetName("signoz_external_call_latency_sum") mExternalCallSum.SetUnit("1") - mExternalCallSum.SetEmptySum().SetAggregationTemporality(p.config.GetAggregationTemporality()) + mExternalCallSum.SetEmptySum().SetIsMonotonic(true) + mExternalCallSum.Sum().SetAggregationTemporality(p.config.GetAggregationTemporality()) mExternalCallCount := ilm.Metrics().AppendEmpty() mExternalCallCount.SetName("signoz_external_call_latency_count") mExternalCallCount.SetUnit("1") - mExternalCallCount.SetEmptySum().SetAggregationTemporality(p.config.GetAggregationTemporality()) + mExternalCallCount.SetEmptySum().SetIsMonotonic(true) + mExternalCallCount.Sum().SetAggregationTemporality(p.config.GetAggregationTemporality()) callSumDps := mExternalCallSum.Sum().DataPoints() callCountDps := mExternalCallCount.Sum().DataPoints() diff --git a/processor/signozspanmetricsprocessor/processor_test.go b/processor/signozspanmetricsprocessor/processor_test.go index de6c244f..27e9b8d0 100644 --- a/processor/signozspanmetricsprocessor/processor_test.go +++ b/processor/signozspanmetricsprocessor/processor_test.go @@ -27,14 +27,15 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/configgrpc" "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/exporter" + "go.opentelemetry.io/collector/exporter/exportertest" "go.opentelemetry.io/collector/exporter/otlpexporter" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/pdata/ptrace" + "go.opentelemetry.io/collector/processor/processortest" conventions "go.opentelemetry.io/collector/semconv/v1.6.1" "go.uber.org/zap" "go.uber.org/zap/zaptest" @@ -92,7 +93,7 @@ type span struct { func TestProcessorStart(t *testing.T) { // Create otlp exporters. - otlpConfig, mexp, texp := newOTLPExporters(t) + componentID, mexp, texp := newOTLPExporters(t) for _, tc := range []struct { name string @@ -108,7 +109,7 @@ func TestProcessorStart(t *testing.T) { // Prepare exporters := map[component.DataType]map[component.ID]component.Component{ component.DataTypeMetrics: { - otlpConfig.ID(): tc.exporter, + componentID: tc.exporter, }, } mhost := &mocks.Host{} @@ -119,7 +120,7 @@ func TestProcessorStart(t *testing.T) { cfg := factory.CreateDefaultConfig().(*Config) cfg.MetricsExporter = tc.metricsExporter - procCreationParams := componenttest.NewNopProcessorCreateSettings() + procCreationParams := processortest.NewNopCreateSettings() traceProcessor, err := factory.CreateTracesProcessor(context.Background(), procCreationParams, cfg, consumertest.NewNop()) require.NoError(t, err) @@ -727,20 +728,20 @@ func initSpan(span span, s ptrace.Span) { s.SetSpanID(pcommon.SpanID([8]byte{byte(42)})) } -func newOTLPExporters(t *testing.T) (*otlpexporter.Config, component.MetricsExporter, component.TracesExporter) { +func newOTLPExporters(t *testing.T) (component.ID, exporter.Metrics, exporter.Traces) { otlpExpFactory := otlpexporter.NewFactory() otlpConfig := &otlpexporter.Config{ - ExporterSettings: config.NewExporterSettings(component.NewID("otlp")), GRPCClientSettings: configgrpc.GRPCClientSettings{ Endpoint: "example.com:1234", }, } - expCreationParams := componenttest.NewNopExporterCreateSettings() + expCreationParams := exportertest.NewNopCreateSettings() mexp, err := otlpExpFactory.CreateMetricsExporter(context.Background(), expCreationParams, otlpConfig) require.NoError(t, err) texp, err := otlpExpFactory.CreateTracesExporter(context.Background(), expCreationParams, otlpConfig) require.NoError(t, err) - return otlpConfig, mexp, texp + otlpID := component.NewID("otlp") + return otlpID, mexp, texp } func TestBuildKeySameServiceOperationCharSequence(t *testing.T) { diff --git a/processor/signoztailsampler/README.md b/processor/signoztailsampler/README.md index bb7a9f68..836207f6 100644 --- a/processor/signoztailsampler/README.md +++ b/processor/signoztailsampler/README.md @@ -1,184 +1,40 @@ -# Tail Sampling Processor +# Signoz Tail Sampler -| Status | | -| ------------------------ | --------- | -| Stability | [beta] | -| Supported pipeline types | traces | -| Distributions | [contrib] | +This sampler is re-write of tail sampler from open-telemetry-contrib. The primary reason for re-write is to support hierachy of policies and priority based evaluation. -The tail sampling processor samples traces based on a set of defined policies. -Today, this processor only works with a single instance of the collector. -Technically, trace ID aware load balancing could be used to support multiple -collector instances, but this configuration has not been tested. Please refer to -[config.go](./config.go) for the config spec. +Although this has several elements common to upstream tail sampling processor, the policy structure significantly differs. Hence, this processor is not useful unless you want to support evaluation of a group of policies based on their priorities. -The following configuration options are required: -- `policies` (no default): Policies used to make a sampling decision +The upstream tail sampler has a different evaluation pattern. It always evaluates all the policies and takes a collaborative decision based on results of those policies. No Priorities are considered. Here we changed that. -Multiple policies exist today and it is straight forward to add more. These include: -- `always_sample`: Sample all traces -- `latency`: Sample based on the duration of the trace. The duration is determined by looking at the earliest start time and latest end time, without taking into consideration what happened in between. -- `numeric_attribute`: Sample based on number attributes -- `probabilistic`: Sample a percentage of traces. Read [a comparison with the Probabilistic Sampling Processor](#probabilistic-sampling-processor-compared-to-the-tail-sampling-processor-with-the-probabilistic-policy). -- `status_code`: Sample based upon the status code (`OK`, `ERROR` or `UNSET`) -- `string_attribute`: Sample based on string attributes value matches, both exact and regex value matches are supported -- `trace_state`: Sample based on [TraceState](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#tracestate) value matches -- `rate_limiting`: Sample based on rate -- `span_count`: Sample based on the minimum number of spans within a batch. If all traces within the batch have less number of spans than the threshold, the batch will not be sampled. -- `and`: Sample based on multiple policies, creates an AND policy -- `composite`: Sample based on a combination of above samplers, with ordering and rate allocation per sampler. Rate allocation allocates certain percentages of spans per policy order. - For example if we have set max_total_spans_per_second as 100 then we can set rate_allocation as follows - 1. test-composite-policy-1 = 50 % of max_total_spans_per_second = 50 spans_per_second - 2. test-composite-policy-2 = 25 % of max_total_spans_per_second = 25 spans_per_second - 3. To ensure remaining capacity is filled use always_sample as one of the policies +Typically we want to support policies in the following format: -The following configuration options can also be modified: -- `decision_wait` (default = 30s): Wait time since the first span of a trace before making a sampling decision -- `num_traces` (default = 50000): Number of traces kept in memory -- `expected_new_traces_per_sec` (default = 0): Expected number of new traces (helps in allocating data structures) - -Examples: - -```yaml -processors: - tail_sampling: - decision_wait: 10s - num_traces: 100 - expected_new_traces_per_sec: 10 - policies: - [ - { - name: test-policy-1, - type: always_sample - }, - { - name: test-policy-2, - type: latency, - latency: {threshold_ms: 5000} - }, - { - name: test-policy-3, - type: numeric_attribute, - numeric_attribute: {key: key1, min_value: 50, max_value: 100} - }, - { - name: test-policy-4, - type: probabilistic, - probabilistic: {sampling_percentage: 10} - }, - { - name: test-policy-5, - type: status_code, - status_code: {status_codes: [ERROR, UNSET]} - }, - { - name: test-policy-6, - type: string_attribute, - string_attribute: {key: key2, values: [value1, value2]} - }, - { - name: test-policy-7, - type: string_attribute, - string_attribute: {key: key2, values: [value1, val*], enabled_regex_matching: true, cache_max_size: 10} - }, - { - name: test-policy-8, - type: rate_limiting, - rate_limiting: {spans_per_second: 35} - }, - { - name: test-policy-9, - type: string_attribute, - string_attribute: {key: http.url, values: [\/health, \/metrics], enabled_regex_matching: true, invert_match: true} - }, - { - name: test-policy-10, - type: span_count, - span_count: {min_spans: 2} - }, - { - name: test-policy-11, - type: trace_state, - trace_state: { key: key3, values: [value1, value2] } - }, - { - name: and-policy-1, - type: and, - and: { - and_sub_policy: - [ - { - name: test-and-policy-1, - type: numeric_attribute, - numeric_attribute: { key: key1, min_value: 50, max_value: 100 } - }, - { - name: test-and-policy-2, - type: string_attribute, - string_attribute: { key: key2, values: [ value1, value2 ] } - }, - ] - } - }, - { - name: composite-policy-1, - type: composite, - composite: - { - max_total_spans_per_second: 1000, - policy_order: [test-composite-policy-1, test-composite-policy-2, test-composite-policy-3], - composite_sub_policy: - [ - { - name: test-composite-policy-1, - type: numeric_attribute, - numeric_attribute: {key: key1, min_value: 50, max_value: 100} - }, - { - name: test-composite-policy-2, - type: string_attribute, - string_attribute: {key: key2, values: [value1, value2]} - }, - { - name: test-composite-policy-3, - type: always_sample - } - ], - rate_allocation: - [ - { - policy: test-composite-policy-1, - percent: 50 - }, - { - policy: test-composite-policy-2, - percent: 25 - } - ] - } - }, - ] +``` +Policy 1 (root) + - Priority: 1 + - Filter: (Source: Audit) + - Default Sampling Rate: 50 + - Sub-Policy 1: + - priority: 1 + - Filter: (threat: true) + - Sampling Rate: 100 + - Sub-policy 2: + - priority: 2 + - Filter: (log: true) + - Sampling Rate: 0 + +Policy 2 (root): + - Priority: 2 + - Filter: (serviceName: auth) + - Default Sampling Rate: 100 + - Sub-Policy 1: + - priority: 1 + - Filter: (statusCode: 400 or statusCode: 200 ) + - Sampling Rate: 5 ``` -Refer to [tail_sampling_config.yaml](./testdata/tail_sampling_config.yaml) for detailed -examples on using the processor. - -### Probabilistic Sampling Processor compared to the Tail Sampling Processor with the Probabilistic policy - -The [probabilistic sampling processor][probabilistic_sampling_processor] and the probabilistic tail sampling processor policy work very similar: -based upon a configurable sampling percentage they will sample a fixed ratio of received traces. -But depending on the overall processing pipeline you should prefer using one over the other. - -As a rule of thumb, if you want to add probabilistic sampling and... - -...you are not using the tail sampling processor already: use the [probabilistic sampling processor][probabilistic_sampling_processor]. -Running the probabilistic sampling processor is more efficient than the tail sampling processor. -The probabilistic sampling policy makes decision based upon the trace ID, so waiting until more spans have arrived will not influence its decision. +In above setup, we want to evaluate policies in order of priority. The policies are evaluated in depth-first pattern. This means if a root policy filter evaluates to true, we scan the sub-policies one at a time. If sub-policy evaluates to true we pick the sampling config from that it, if none of the sub-policies match but except root then we pick the sampling config from the root policy. -...you are already using the tail sampling processor: add the probabilistic sampling policy. -You are already incurring the cost of running the tail sampling processor, adding the probabilistic policy will be negligible. -Additionally, using the policy within the tail sampling processor will ensure traces that are sampled by other policies will not be dropped. +If root policy fitler does not evaluate to true, we move to the next policy. -[beta]: https://github.com/open-telemetry/opentelemetry-collector#beta -[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib -[probabilistic_sampling_processor]: ../probabilisticsamplerprocessor \ No newline at end of file +At the end of evaluation if none of the policies match, then we sample by default. + diff --git a/processor/signoztailsampler/and_helper.go b/processor/signoztailsampler/and_helper.go deleted file mode 100644 index 530617c3..00000000 --- a/processor/signoztailsampler/and_helper.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tailsamplingprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" - -import ( - "go.uber.org/zap" - - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" -) - -func getNewAndPolicy(logger *zap.Logger, config *AndCfg) (sampling.PolicyEvaluator, error) { - var subPolicyEvaluators []sampling.PolicyEvaluator - for i := range config.SubPolicyCfg { - policyCfg := &config.SubPolicyCfg[i] - policy, err := getAndSubPolicyEvaluator(logger, policyCfg) - if err != nil { - return nil, err - } - subPolicyEvaluators = append(subPolicyEvaluators, policy) - } - return sampling.NewAnd(logger, subPolicyEvaluators), nil -} - -// Return instance of and sub-policy -func getAndSubPolicyEvaluator(logger *zap.Logger, cfg *AndSubPolicyCfg) (sampling.PolicyEvaluator, error) { - return getSharedPolicyEvaluator(logger, &cfg.sharedPolicyCfg) -} diff --git a/processor/signoztailsampler/and_helper_test.go b/processor/signoztailsampler/and_helper_test.go deleted file mode 100644 index 6e3031a8..00000000 --- a/processor/signoztailsampler/and_helper_test.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tailsamplingprocessor - -import ( - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.uber.org/zap" - - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" -) - -func TestAndHelper(t *testing.T) { - t.Run("valid", func(t *testing.T) { - actual, err := getNewAndPolicy(zap.NewNop(), &AndCfg{ - SubPolicyCfg: []AndSubPolicyCfg{ - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-and-policy-1", - Type: Latency, - LatencyCfg: LatencyCfg{ThresholdMs: 100}, - }, - }, - }, - }) - require.NoError(t, err) - - expected := sampling.NewAnd(zap.NewNop(), []sampling.PolicyEvaluator{ - sampling.NewLatency(zap.NewNop(), 100), - }) - assert.Equal(t, expected, actual) - }) - - t.Run("unsupported sampling policy type", func(t *testing.T) { - _, err := getNewAndPolicy(zap.NewNop(), &AndCfg{ - SubPolicyCfg: []AndSubPolicyCfg{ - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-and-policy-2", - Type: And, // nested and is not allowed - }, - }, - }, - }) - require.EqualError(t, err, "unknown sampling policy type and") - }) -} diff --git a/processor/signoztailsampler/composite_helper.go b/processor/signoztailsampler/composite_helper.go deleted file mode 100644 index 833aaede..00000000 --- a/processor/signoztailsampler/composite_helper.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tailsamplingprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" - -import ( - "go.uber.org/zap" - - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" -) - -func getNewCompositePolicy(logger *zap.Logger, config *CompositeCfg) (sampling.PolicyEvaluator, error) { - var subPolicyEvalParams []sampling.SubPolicyEvalParams - rateAllocationsMap := getRateAllocationMap(config) - for i := range config.SubPolicyCfg { - policyCfg := &config.SubPolicyCfg[i] - policy, err := getCompositeSubPolicyEvaluator(logger, policyCfg) - if err != nil { - return nil, err - } - - evalParams := sampling.SubPolicyEvalParams{ - Evaluator: policy, - MaxSpansPerSecond: int64(rateAllocationsMap[policyCfg.Name]), - } - subPolicyEvalParams = append(subPolicyEvalParams, evalParams) - } - return sampling.NewComposite(logger, config.MaxTotalSpansPerSecond, subPolicyEvalParams, sampling.MonotonicClock{}), nil -} - -// Apply rate allocations to the sub-policies -func getRateAllocationMap(config *CompositeCfg) map[string]float64 { - rateAllocationsMap := make(map[string]float64) - maxTotalSPS := float64(config.MaxTotalSpansPerSecond) - // Default SPS determined by equally diving number of sub policies - defaultSPS := maxTotalSPS / float64(len(config.SubPolicyCfg)) - for _, rAlloc := range config.RateAllocation { - if rAlloc.Percent > 0 { - rateAllocationsMap[rAlloc.Policy] = (float64(rAlloc.Percent) / 100) * maxTotalSPS - } else { - rateAllocationsMap[rAlloc.Policy] = defaultSPS - } - } - return rateAllocationsMap -} - -// Return instance of composite sub-policy -func getCompositeSubPolicyEvaluator(logger *zap.Logger, cfg *CompositeSubPolicyCfg) (sampling.PolicyEvaluator, error) { - switch cfg.Type { - case And: - return getNewAndPolicy(logger, &cfg.AndCfg) - default: - return getSharedPolicyEvaluator(logger, &cfg.sharedPolicyCfg) - } -} diff --git a/processor/signoztailsampler/composite_helper_test.go b/processor/signoztailsampler/composite_helper_test.go deleted file mode 100644 index 6258924c..00000000 --- a/processor/signoztailsampler/composite_helper_test.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tailsamplingprocessor - -import ( - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.uber.org/zap" - - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" -) - -func TestCompositeHelper(t *testing.T) { - t.Run("valid", func(t *testing.T) { - actual, err := getNewCompositePolicy(zap.NewNop(), &CompositeCfg{ - MaxTotalSpansPerSecond: 1000, - PolicyOrder: []string{"test-composite-policy-1"}, - SubPolicyCfg: []CompositeSubPolicyCfg{ - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-composite-policy-1", - Type: Latency, - LatencyCfg: LatencyCfg{ThresholdMs: 100}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-composite-policy-2", - Type: Latency, - LatencyCfg: LatencyCfg{ThresholdMs: 200}, - }, - }, - }, - RateAllocation: []RateAllocationCfg{ - { - Policy: "test-composite-policy-1", - Percent: 25, - }, - { - Policy: "test-composite-policy-2", - Percent: 0, // will be populated with default - }, - }, - }) - require.NoError(t, err) - - expected := sampling.NewComposite(zap.NewNop(), 1000, []sampling.SubPolicyEvalParams{ - { - Evaluator: sampling.NewLatency(zap.NewNop(), 100), - MaxSpansPerSecond: 250, - }, - { - Evaluator: sampling.NewLatency(zap.NewNop(), 200), - MaxSpansPerSecond: 500, - }, - }, sampling.MonotonicClock{}) - assert.Equal(t, expected, actual) - }) - - t.Run("unsupported sampling policy type", func(t *testing.T) { - _, err := getNewCompositePolicy(zap.NewNop(), &CompositeCfg{ - SubPolicyCfg: []CompositeSubPolicyCfg{ - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-composite-policy-1", - Type: Composite, // nested composite is not allowed - }, - }, - }, - }) - require.EqualError(t, err, "unknown sampling policy type composite") - }) -} diff --git a/processor/signoztailsampler/config.go b/processor/signoztailsampler/config.go index 672c3437..e06af67f 100644 --- a/processor/signoztailsampler/config.go +++ b/processor/signoztailsampler/config.go @@ -12,12 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -package tailsamplingprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" +package signoztailsampler import ( + "fmt" "time" - "go.opentelemetry.io/collector/config" + "go.uber.org/multierr" ) // PolicyType indicates the type of sampling policy. @@ -26,110 +27,23 @@ type PolicyType string const ( // AlwaysSample samples all traces, typically used for debugging. AlwaysSample PolicyType = "always_sample" - // Latency sample traces that are longer than a given threshold. - Latency PolicyType = "latency" + + NeverSample PolicyType = "never_sample" + // NumericAttribute sample traces that have a given numeric attribute in a specified // range, e.g.: attribute "http.status_code" >= 399 and <= 999. NumericAttribute PolicyType = "numeric_attribute" + // Probabilistic samples a given percentage of traces. Probabilistic PolicyType = "probabilistic" - // StatusCode sample traces that have a given status code. - StatusCode PolicyType = "status_code" + // StringAttribute sample traces that a attribute, of type string, matching // one of the listed values. StringAttribute PolicyType = "string_attribute" - // RateLimiting allows all traces until the specified limits are satisfied. - RateLimiting PolicyType = "rate_limiting" - // Composite allows defining a composite policy, combining the other policies in one - Composite PolicyType = "composite" - // And allows defining a And policy, combining the other policies in one - And PolicyType = "and" - // SpanCount sample traces that are have more spans per Trace than a given threshold. - SpanCount PolicyType = "span_count" - // TraceState sample traces with specified values by the given key - TraceState PolicyType = "trace_state" -) - -// sharedPolicyCfg holds the common configuration to all policies that are used in derivative policy configurations -// such as the and & composite policies. -type sharedPolicyCfg struct { - // Name given to the instance of the policy to make easy to identify it in metrics and logs. - Name string `mapstructure:"name"` - // Type of the policy this will be used to match the proper configuration of the policy. - Type PolicyType `mapstructure:"type"` - // Configs for latency filter sampling policy evaluator. - LatencyCfg LatencyCfg `mapstructure:"latency"` - // Configs for numeric attribute filter sampling policy evaluator. - NumericAttributeCfg NumericAttributeCfg `mapstructure:"numeric_attribute"` - // Configs for probabilistic sampling policy evaluator. - ProbabilisticCfg ProbabilisticCfg `mapstructure:"probabilistic"` - // Configs for status code filter sampling policy evaluator. - StatusCodeCfg StatusCodeCfg `mapstructure:"status_code"` - // Configs for string attribute filter sampling policy evaluator. - StringAttributeCfg StringAttributeCfg `mapstructure:"string_attribute"` - // Configs for rate limiting filter sampling policy evaluator. - RateLimitingCfg RateLimitingCfg `mapstructure:"rate_limiting"` - // Configs for span count filter sampling policy evaluator. - SpanCountCfg SpanCountCfg `mapstructure:"span_count"` - // Configs for defining trace_state policy - TraceStateCfg TraceStateCfg `mapstructure:"trace_state"` -} - -// CompositeSubPolicyCfg holds the common configuration to all policies under composite policy. -type CompositeSubPolicyCfg struct { - sharedPolicyCfg `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct - - // Configs for and policy evaluator. - AndCfg AndCfg `mapstructure:"and"` -} - -// AndSubPolicyCfg holds the common configuration to all policies under and policy. -type AndSubPolicyCfg struct { - sharedPolicyCfg `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct -} - -type TraceStateCfg struct { - // Tag that the filter is going to be matching against. - Key string `mapstructure:"key"` - // Values indicate the set of values to use when matching against trace_state values. - Values []string `mapstructure:"values"` -} - -type AndCfg struct { - SubPolicyCfg []AndSubPolicyCfg `mapstructure:"and_sub_policy"` -} - -// CompositeCfg holds the configurable settings to create a composite -// sampling policy evaluator. -type CompositeCfg struct { - MaxTotalSpansPerSecond int64 `mapstructure:"max_total_spans_per_second"` - PolicyOrder []string `mapstructure:"policy_order"` - SubPolicyCfg []CompositeSubPolicyCfg `mapstructure:"composite_sub_policy"` - RateAllocation []RateAllocationCfg `mapstructure:"rate_allocation"` -} -// RateAllocationCfg used within composite policy -type RateAllocationCfg struct { - Policy string `mapstructure:"policy"` - Percent int64 `mapstructure:"percent"` -} - -// PolicyCfg holds the common configuration to all policies. -type PolicyCfg struct { - sharedPolicyCfg `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct - - // Configs for defining composite policy - CompositeCfg CompositeCfg `mapstructure:"composite"` - // Configs for defining and policy - AndCfg AndCfg `mapstructure:"and"` -} - -// LatencyCfg holds the configurable settings to create a latency filter sampling policy -// evaluator -type LatencyCfg struct { - // ThresholdMs in milliseconds. - ThresholdMs int64 `mapstructure:"threshold_ms"` -} + // PolicyGroup allows grouping of rules and priority based sampling + PolicyGroup = "policy_group" +) // NumericAttributeCfg holds the configurable settings to create a numeric attribute filter // sampling policy evaluator. @@ -154,12 +68,6 @@ type ProbabilisticCfg struct { SamplingPercentage float64 `mapstructure:"sampling_percentage"` } -// StatusCodeCfg holds the configurable settings to create a status code filter sampling -// policy evaluator. -type StatusCodeCfg struct { - StatusCodes []string `mapstructure:"status_codes"` -} - // StringAttributeCfg holds the configurable settings to create a string attribute filter // sampling policy evaluator. type StringAttributeCfg struct { @@ -180,23 +88,40 @@ type StringAttributeCfg struct { InvertMatch bool `mapstructure:"invert_match"` } -// RateLimitingCfg holds the configurable settings to create a rate limiting -// sampling policy evaluator. -type RateLimitingCfg struct { - // SpansPerSecond sets the limit on the maximum nuber of spans that can be processed each second. - SpansPerSecond int64 `mapstructure:"spans_per_second"` +// PolicyFilterCfg is evaluated before applying a policy +type PolicyFilterCfg struct { + // values: and | or . when empty defaults to or + FilterOp string `mapstructure:"filter_op"` + + StringAttributeCfgs []StringAttributeCfg `mapstructure:"string_attributes"` + NumericAttributeCfgs []NumericAttributeCfg `mapstructure:"numeric_attributes"` } -// SpanCountCfg holds the configurable settings to create a Span Count filter sampling policy -// sampling policy evaluator -type SpanCountCfg struct { - // Minimum number of spans in a Trace - MinSpans int32 `mapstructure:"min_spans"` +// BasePolicy identifies policy rules in (sub-)policy group +type BasePolicy struct { + // name of the policy + Name string `mapstructure:"name"` + + // Type of the policy this will be used to match the proper configuration of the policy. + Type PolicyType `mapstructure:"type"` + + Priority int `mapstructure:"priority"` + + // sampling applied when PolicyFilter matches + ProbabilisticCfg `mapstructure:"sampling"` + + // filter to activate policy + PolicyFilterCfg `mapstructure:"policy_filter"` +} + +// PolicyGroupCfg identifies policy rules in policy group +type PolicyGroupCfg struct { + BasePolicy `mapstructure:",squash"` + SubPolicies []BasePolicy `mapstructure:"sub_policies"` } // Config holds the configuration for tail-based sampling. type Config struct { - config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct // DecisionWait is the desired wait time from the arrival of the first span of // trace until the decision about sampling it or not is evaluated. DecisionWait time.Duration `mapstructure:"decision_wait"` @@ -208,5 +133,25 @@ type Config struct { ExpectedNewTracesPerSec uint64 `mapstructure:"expected_new_traces_per_sec"` // PolicyCfgs sets the tail-based sampling policy which makes a sampling decision // for a given trace when requested. - PolicyCfgs []PolicyCfg `mapstructure:"policies"` + PolicyCfgs []PolicyGroupCfg `mapstructure:"policies"` + + // read only version number (optional) + Version int `mapstructure:"version"` +} + +// Validate returns errors with config +func (c *Config) Validate() error { + var errs []error + for _, p := range c.PolicyCfgs { + if p.Priority == 0 { + // priority must be explicitly assigned + errs = append(errs, fmt.Errorf("%s: %s", p.Name, "priority must be greater than 1")) + } + } + + if len(errs) != 0 { + return multierr.Combine(errs...) + } + + return nil } diff --git a/processor/signoztailsampler/config_test.go b/processor/signoztailsampler/config_test.go index 34b63217..4b1df29a 100644 --- a/processor/signoztailsampler/config_test.go +++ b/processor/signoztailsampler/config_test.go @@ -1,18 +1,4 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tailsamplingprocessor +package signoztailsampler import ( "path/filepath" @@ -22,7 +8,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/confmap/confmaptest" ) @@ -37,141 +22,40 @@ func TestLoadConfig(t *testing.T) { sub, err := cm.Sub(component.NewIDWithName(typeStr, "").String()) require.NoError(t, err) - require.NoError(t, component.UnmarshalProcessorConfig(sub, cfg)) + require.NoError(t, component.UnmarshalConfig(sub, cfg)) assert.Equal(t, cfg, &Config{ - ProcessorSettings: config.NewProcessorSettings(component.NewID(typeStr)), + // ProcessorSettings: config.NewProcessorSettings(component.NewID(typeStr)), DecisionWait: 10 * time.Second, NumTraces: 100, ExpectedNewTracesPerSec: 10, - PolicyCfgs: []PolicyCfg{ - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-1", - Type: AlwaysSample, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-2", - Type: Latency, - LatencyCfg: LatencyCfg{ThresholdMs: 5000}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-3", - Type: NumericAttribute, - NumericAttributeCfg: NumericAttributeCfg{Key: "key1", MinValue: 50, MaxValue: 100}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-4", - Type: Probabilistic, - ProbabilisticCfg: ProbabilisticCfg{HashSalt: "custom-salt", SamplingPercentage: 0.1}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-5", - Type: StatusCode, - StatusCodeCfg: StatusCodeCfg{StatusCodes: []string{"ERROR", "UNSET"}}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-6", - Type: StringAttribute, - StringAttributeCfg: StringAttributeCfg{Key: "key2", Values: []string{"value1", "value2"}}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-7", - Type: RateLimiting, - RateLimitingCfg: RateLimitingCfg{SpansPerSecond: 35}, - }, - }, + PolicyCfgs: []PolicyGroupCfg{ { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-8", - Type: SpanCount, - SpanCountCfg: SpanCountCfg{MinSpans: 2}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-policy-9", - Type: TraceState, - TraceStateCfg: TraceStateCfg{Key: "key3", Values: []string{"value1", "value2"}}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "and-policy-1", - Type: And, - }, - AndCfg: AndCfg{ - SubPolicyCfg: []AndSubPolicyCfg{ - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-and-policy-1", - Type: NumericAttribute, - NumericAttributeCfg: NumericAttributeCfg{Key: "key1", MinValue: 50, MaxValue: 100}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-and-policy-2", - Type: StringAttribute, - StringAttributeCfg: StringAttributeCfg{Key: "key2", Values: []string{"value1", "value2"}}, - }, + BasePolicy: BasePolicy{ + Name: "test-policy-1", + Type: PolicyGroup, + Priority: 1, + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 100, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + {Key: "source", Values: []string{"security"}}, }, }, }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "composite-policy-1", - Type: Composite, - }, - CompositeCfg: CompositeCfg{ - MaxTotalSpansPerSecond: 1000, - PolicyOrder: []string{"test-composite-policy-1", "test-composite-policy-2", "test-composite-policy-3"}, - SubPolicyCfg: []CompositeSubPolicyCfg{ - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-composite-policy-1", - Type: NumericAttribute, - NumericAttributeCfg: NumericAttributeCfg{Key: "key1", MinValue: 50, MaxValue: 100}, - }, - }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-composite-policy-2", - Type: StringAttribute, - StringAttributeCfg: StringAttributeCfg{Key: "key2", Values: []string{"value1", "value2"}}, + SubPolicies: []BasePolicy{ + { + Name: "condition-1", + Type: PolicyGroup, + Priority: 1, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + {Key: "source", Values: []string{"security"}}, }, }, - { - sharedPolicyCfg: sharedPolicyCfg{ - Name: "test-composite-policy-3", - Type: AlwaysSample, - }, - }, - }, - RateAllocation: []RateAllocationCfg{ - { - Policy: "test-composite-policy-1", - Percent: 50, - }, - { - Policy: "test-composite-policy-2", - Percent: 25, - }, }, }, }, diff --git a/processor/signoztailsampler/evaluator.go b/processor/signoztailsampler/evaluator.go new file mode 100644 index 00000000..0582fa7b --- /dev/null +++ b/processor/signoztailsampler/evaluator.go @@ -0,0 +1,161 @@ +package signoztailsampler + +import ( + "sort" + "strings" + + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/sampling" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.uber.org/zap" +) + +// default evaluator for policyCfg. +type defaultEvaluator struct { + name string + + priority int + + // in case probalistic sampling to be done when filter matches + sampler sampling.PolicyEvaluator + + // can be probabilistic, always_include, always_exclude + samplingMethod string + + // filter operator can be "and" | "or". empty resolves to or + filterOperator string + filters []sampling.PolicyEvaluator + + // the subpolicy evaluators will be processed in order of priority. + // the sub-policies will be evaluated prior to evaluating top-level policy, + // if any of subpolicy filters match, the sampling method associated with that + // sub-policy will be applied. and no further processing will be performed. + subEvaluators []sampling.PolicyEvaluator + logger *zap.Logger +} + +func NewDefaultEvaluator(logger *zap.Logger, policyCfg BasePolicy, subpolicies []BasePolicy) sampling.PolicyEvaluator { + + // condition operator to apply on filters (AND | OR) + filterOperator := policyCfg.PolicyFilterCfg.FilterOp + + // list of filter evaluators used to decide if this policy + // should be applied + filters := prepareFilterEvaluators(logger, policyCfg.PolicyFilterCfg) + // todo(amol): need to handle situations with zero filters + + // list of sub-policies evaluators + sort.Slice(subpolicies, func(i, j int) bool { + return subpolicies[i].Priority < subpolicies[j].Priority + }) + + subEvaluators := make([]sampling.PolicyEvaluator, 0) + for _, subRule := range subpolicies { + subEvaluator := NewDefaultEvaluator(logger, subRule, nil) + subEvaluators = append(subEvaluators, subEvaluator) + } + + // sampling is applied only when filter conditions are met + var sampler sampling.PolicyEvaluator + var samplingMethod string + + // todo(amol): need to handle cases where percent is not set by + // the user + switch policyCfg.SamplingPercentage { + case 0: + samplingMethod = "exclude_all" + sampler = sampling.NewNeverSample(logger) + case 100: + samplingMethod = "include_all" + sampler = sampling.NewAlwaysSample(logger) + default: + samplingMethod = "probabilistic" + sampler = sampling.NewProbabilisticSampler(logger, "", policyCfg.SamplingPercentage) + } + + return &defaultEvaluator{ + name: policyCfg.Name, + sampler: sampler, + samplingMethod: samplingMethod, + filterOperator: filterOperator, + filters: filters, + subEvaluators: subEvaluators, + } +} + +func prepareFilterEvaluators(logger *zap.Logger, policyFilterCfg PolicyFilterCfg) []sampling.PolicyEvaluator { + var filterEvaluators []sampling.PolicyEvaluator + for _, s := range policyFilterCfg.StringAttributeCfgs { + filterEvaluators = append(filterEvaluators, sampling.NewStringAttributeFilter(logger, s.Key, s.Values, s.EnabledRegexMatching, s.CacheMaxSize, s.InvertMatch)) + } + + for _, n := range policyFilterCfg.NumericAttributeCfgs { + filterEvaluators = append(filterEvaluators, sampling.NewNumericAttributeFilter(logger, n.Key, n.MinValue, n.MaxValue)) + } + return filterEvaluators +} + +// Evaluate executes policy filter first to determine if the policy applies to current trace data +// and if it succeeds, then sampling is performed based on sampling params set on the +// selected policy. This method works for both root and sub-policies. +func (de *defaultEvaluator) Evaluate(traceId pcommon.TraceID, trace *sampling.TraceData) (sampling.Decision, error) { + + // capture if any of the filter in current policy matches + var filterMatched bool + + for _, fe := range de.filters { + // evaluate each filter from (sub-)policy + filterResult, err := fe.Evaluate(traceId, trace) + if err != nil { + return sampling.Error, nil + } + // since filters can also be sampling evaluators, + // here we consider "sampled = filter matched" and + // "no sampled == filter did not match" + + if filterResult == sampling.Sampled { + filterMatched = true + } + + if filterResult == sampling.NotSampled { + if strings.ToLower(de.filterOperator) == "and" { + // filter condition failed, return no op + // filter operator AND indcates all the filter condition + // must return a sample decision + return sampling.NoResult, nil + } + } + } + + if filterMatched { + + // here we evaluate sub-policies sequentially. and if any + // of them succeed we return that as sampling decision + for _, sp := range de.subEvaluators { + if sp == nil { + zap.S().Errorf("failed to evaluate subpolicy as evaluator is nil %s", de.name) + continue + } + decision, err := sp.Evaluate(traceId, trace) + if err != nil { + // todo: consider adding health for each evaluator + // to avoid printing log messages for each trace + zap.S().Errorf("failed to evaluate trace:", de.name) + continue + } + + // check if sub-policy evaluation has a useful result else continue + // to next + if decision != sampling.NoResult { + // found a result, exit + return decision, nil + } + } + + // filter conditions matched, we can + // apply sampling now + return de.sampler.Evaluate(traceId, trace) + + } + + return sampling.NoResult, nil +} diff --git a/processor/signoztailsampler/evaluator_test.go b/processor/signoztailsampler/evaluator_test.go new file mode 100644 index 00000000..7b39445a --- /dev/null +++ b/processor/signoztailsampler/evaluator_test.go @@ -0,0 +1,344 @@ +package signoztailsampler + +import ( + "encoding/binary" + "testing" + "time" + + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/sampling" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/ptrace" + "go.uber.org/atomic" + "go.uber.org/zap" +) + +func TestDefaultEvaluator(t *testing.T) { + cfg := PolicyGroupCfg{ + BasePolicy: BasePolicy{Name: "security", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 100, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "source", + Values: []string{"audit"}, + }, + }, + }, + }, + } + + e := NewDefaultEvaluator(zap.NewNop(), cfg.BasePolicy, cfg.SubPolicies) + traceIds, traces := generateTraceForTestEval(1, "source", "audit") + + eval := func(id pcommon.TraceID, td ptrace.Traces) (sampling.Decision, error) { + // store initiat decision for each policy + initialDecisions := make([]sampling.Decision, 1) + // there is only one policy, so set initiatDecisions + // for this policy to pending + initialDecisions[0] = sampling.Pending + + traceData := &sampling.TraceData{ + Decisions: initialDecisions, + ArrivalTime: time.Now(), + SpanCount: atomic.NewInt64(1), + ReceivedBatches: td, + } + + return e.Evaluate(id, traceData) + } + + decision, err := eval(traceIds[0], traces[0]) + + require.NoError(t, err, "failed to evalute trace for policy") + require.Equal(t, sampling.Sampled, decision, "expected to sample a valid trace as per policy") + + traceIds1, traces1 := generateTraceForTestEval(1, "source", "none") + decision1, err1 := eval(traceIds1[0], traces1[0]) + + require.NoError(t, err1, "failed to evalute trace for policy") + require.Equal(t, sampling.NoResult, decision1, "expected to not sampled decision for trace as per policy") +} + +func TestProbablisticCfg(t *testing.T) { + cfg := PolicyGroupCfg{ + BasePolicy: BasePolicy{ + Name: "security", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 100, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "source", + Values: []string{"audit"}, + }, + }, + }, + }, + } + + e := NewDefaultEvaluator(zap.NewNop(), cfg.BasePolicy, nil) + traceIds, traces := generateTraceForTestEval(1, "source", "audit") + + eval := func(e sampling.PolicyEvaluator, id pcommon.TraceID, td ptrace.Traces) (sampling.Decision, error) { + // store initiat decision for each policy + initialDecisions := make([]sampling.Decision, 1) + // there is only one policy, so set initiatDecisions + // for this policy to pending + initialDecisions[0] = sampling.Pending + + traceData := &sampling.TraceData{ + Decisions: initialDecisions, + ArrivalTime: time.Now(), + SpanCount: atomic.NewInt64(1), + ReceivedBatches: td, + } + + return e.Evaluate(id, traceData) + } + + decision, err := eval(e, traceIds[0], traces[0]) + + require.NoError(t, err, "failed to evalute trace for policy") + require.Equal(t, sampling.Sampled, decision, "expected to sample a valid trace as per policy") + + cfg.SamplingPercentage = 0 + zeroSamplingEvaluator := NewDefaultEvaluator(zap.NewNop(), cfg.BasePolicy, cfg.SubPolicies) + decision1, err1 := eval(zeroSamplingEvaluator, traceIds[0], traces[0]) + + require.NoError(t, err1, "failed to evaluate trace for policy with zero sampling") + require.Equal(t, sampling.NotSampled, decision1, "expected to not sampled as sampling percent is zero") + + cfg.SamplingPercentage = 99 + evaluator99 := NewDefaultEvaluator(zap.NewNop(), cfg.BasePolicy, cfg.SubPolicies) + decision99, err99 := eval(evaluator99, traceIds[0], traces[0]) + + require.NoError(t, err99, "failed to evaluate trace for policy with 99 percent sampling") + require.Equal(t, sampling.Sampled, decision99, "expected to sampled as sampling percent is 99, re-run the test to try again") +} + +func TestSubPolicyGroupCfg(t *testing.T) { + // this policy will omit all records with source audit (as sampling percent is 0 for root) + // except those filtered by sub-policy (which has sampling percent 100) + + cfg := PolicyGroupCfg{ + BasePolicy: BasePolicy{ + Name: "security", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 0, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "source", + Values: []string{"audit"}, + }, + }, + }}, + SubPolicies: []BasePolicy{ + { + Name: "sub-policy", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 100, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "threat", + Values: []string{"true"}, + }, + }, + }, + }, + }, + } + + e := NewDefaultEvaluator(zap.NewNop(), cfg.BasePolicy, cfg.SubPolicies) + decision, err := e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat"}, []string{"audit", "true"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.Sampled, decision, "expected sampling decision as sub-policy matches") + + failCase, err1 := e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat"}, []string{"audit", "false"})) + + assert.Nil(t, err1, "expected evaluation to complete successfully") + assert.Equal(t, sampling.NotSampled, failCase, "expected NotSampled decision as sub-policy does not match and root has sampling percent 0") + +} + +func TestSubPolicyGroupCfgStringFilters(t *testing.T) { + // this policy will omit all records with source audit (as sampling percent is 0 for root) + // except those filtered by sub-policy (which has sampling percent 100) + + cfg := PolicyGroupCfg{ + BasePolicy: BasePolicy{ + Name: "security", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 0, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "source", + Values: []string{"audit"}, + }, + }, + }, + }, + SubPolicies: []BasePolicy{ + { + Name: "sub-policy", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 100, + }, + PolicyFilterCfg: PolicyFilterCfg{ + FilterOp: "and", + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "threat", + Values: []string{"true"}, + }, + { + Key: "website", + Values: []string{"true"}, + }, + }, + }, + }, + }, + } + + e := NewDefaultEvaluator(zap.NewNop(), cfg.BasePolicy, cfg.SubPolicies) + decision, err := e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat", "website"}, []string{"audit", "true", "true"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.Sampled, decision, "expected sampling decision as sub-policy matches") + + missingAttrs, err := e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat"}, []string{"audit", "true"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.NotSampled, missingAttrs, "expected NotSampled decision") + + failCase, err := e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat"}, []string{"audit", "false"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.NotSampled, failCase, "expected NotSampled decision as sub-policy does not match and root has sampling percent 0") + +} + +func TestRootPolicyNotMatch(t *testing.T) { + // this policy will omit all records with source audit (as sampling percent is 0 for root) + // except those filtered by sub-policy (which has sampling percent 100) + + cfg := PolicyGroupCfg{ + BasePolicy: BasePolicy{Name: "security", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 100, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "source", + Values: []string{"audit"}, + }, + }, + }}, + SubPolicies: []BasePolicy{ + { + Name: "sub-policy", + ProbabilisticCfg: ProbabilisticCfg{ + SamplingPercentage: 100, + }, + PolicyFilterCfg: PolicyFilterCfg{ + StringAttributeCfgs: []StringAttributeCfg{ + { + Key: "threat", + Values: []string{"true"}, + }, + { + Key: "website", + Values: []string{"true"}, + }, + }, + }, + }, + }, + } + + e := NewDefaultEvaluator(zap.NewNop(), cfg.BasePolicy, nil) + + decision, err := e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"threat", "website"}, []string{"true", "true"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.NoResult, decision, "expected no result - sub-policy match to fail as root policy failed") + + decision, err = e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat", "website"}, []string{"unknown", "true", "true"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.NoResult, decision, "expected no result - sub-policy match to fail as root policy attrib does not match") + + decision, err = e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat", "website"}, []string{"audit", "true", "true"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.Sampled, decision, "expected sampled decision as subpolicy and root policy filter match") + + decision, err = e.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, []string{"source", "threat"}, []string{"audit", "false"})) + + assert.Nil(t, err, "expected evaluation to complete successfully") + assert.Equal(t, sampling.Sampled, decision, "expected sampled decision as root policy filters matches event if subpolicy doesnt") + +} + +func newTraceStringAttrs(nodeAttrs map[string]interface{}, spanAttrKey []string, spanAttrValue []string) *sampling.TraceData { + traces := ptrace.NewTraces() + rs := traces.ResourceSpans().AppendEmpty() + //nolint:errcheck + rs.Resource().Attributes().FromRaw(nodeAttrs) + ils := rs.ScopeSpans().AppendEmpty() + span := ils.Spans().AppendEmpty() + span.SetTraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}) + span.SetSpanID([8]byte{1, 2, 3, 4, 5, 6, 7, 8}) + for i, _ := range spanAttrKey { + span.Attributes().PutStr(spanAttrKey[i], spanAttrValue[i]) + } + + return &sampling.TraceData{ + ReceivedBatches: traces, + } +} +func generateTraceForTestEval(numIds int, key string, value string) ([]pcommon.TraceID, []ptrace.Traces) { + traceIds := make([]pcommon.TraceID, numIds) + spanID := 0 + var tds []ptrace.Traces + for i := 0; i < numIds; i++ { + traceID := [16]byte{} + binary.BigEndian.PutUint64(traceID[:8], 1) + binary.BigEndian.PutUint64(traceID[8:], uint64(i+1)) + traceIds[i] = pcommon.TraceID(traceID) + // Send each span in a separate batch + for j := 0; j <= i; j++ { + td := simpleTraces() + span := td.ResourceSpans().At(0).ScopeSpans().At(0).Spans().At(0) + span.SetTraceID(traceIds[i]) + span.Attributes().PutStr(key, value) + spanID++ + span.SetSpanID(uInt64ToSpanID(uint64(spanID))) + tds = append(tds, td) + } + } + + return traceIds, tds +} diff --git a/processor/signoztailsampler/factory.go b/processor/signoztailsampler/factory.go index d6133bfe..ca8ad3a0 100644 --- a/processor/signoztailsampler/factory.go +++ b/processor/signoztailsampler/factory.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package tailsamplingprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" +package signoztailsampler // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" import ( "context" @@ -21,14 +21,14 @@ import ( "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/configtelemetry" "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/processor" ) const ( // The value of "type" Tail Sampling in configuration. - typeStr = "tail_sampling" + typeStr = "signoz_tail_sampling" // The stability level of the processor. stability = component.StabilityLevelBeta ) @@ -36,32 +36,32 @@ const ( var onceMetrics sync.Once // NewFactory returns a new factory for the Tail Sampling processor. -func NewFactory() component.ProcessorFactory { +func NewFactory() processor.Factory { onceMetrics.Do(func() { // TODO: this is hardcoding the metrics level and skips error handling _ = view.Register(SamplingProcessorMetricViews(configtelemetry.LevelNormal)...) }) - return component.NewProcessorFactory( + return processor.NewFactory( typeStr, createDefaultConfig, - component.WithTracesProcessor(createTracesProcessor, stability)) + processor.WithTraces(createTracesProcessor, stability)) } -func createDefaultConfig() component.ProcessorConfig { +func createDefaultConfig() component.Config { return &Config{ - ProcessorSettings: config.NewProcessorSettings(component.NewID(typeStr)), - DecisionWait: 30 * time.Second, - NumTraces: 50000, + // ProcessorSettings: config.NewProcessorSettings(component.NewID(typeStr)), + DecisionWait: 30 * time.Second, + NumTraces: 50000, } } func createTracesProcessor( _ context.Context, - params component.ProcessorCreateSettings, - cfg component.ProcessorConfig, + params processor.CreateSettings, + cfg component.Config, nextConsumer consumer.Traces, -) (component.TracesProcessor, error) { +) (processor.Traces, error) { tCfg := cfg.(*Config) return newTracesProcessor(params.Logger, nextConsumer, *tCfg) } diff --git a/processor/signoztailsampler/factory_test.go b/processor/signoztailsampler/factory_test.go index 75612a6b..10467159 100644 --- a/processor/signoztailsampler/factory_test.go +++ b/processor/signoztailsampler/factory_test.go @@ -1,18 +1,4 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tailsamplingprocessor +package signoztailsampler import ( "context" @@ -25,6 +11,7 @@ import ( "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/confmap/confmaptest" "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/processor/processortest" ) func TestCreateDefaultConfig(t *testing.T) { @@ -42,9 +29,9 @@ func TestCreateProcessor(t *testing.T) { sub, err := cm.Sub(component.NewIDWithName(typeStr, "").String()) require.NoError(t, err) - require.NoError(t, component.UnmarshalProcessorConfig(sub, cfg)) + require.NoError(t, component.UnmarshalConfig(sub, cfg)) - params := componenttest.NewNopProcessorCreateSettings() + params := processortest.NewNopCreateSettings() tp, err := factory.CreateTracesProcessor(context.Background(), params, cfg, consumertest.NewNop()) assert.NotNil(t, tp) assert.NoError(t, err, "cannot create trace processor") diff --git a/processor/signoztailsampler/internal/idbatcher/id_batcher.go b/processor/signoztailsampler/internal/idbatcher/id_batcher.go index 5a482263..8a74a087 100644 --- a/processor/signoztailsampler/internal/idbatcher/id_batcher.go +++ b/processor/signoztailsampler/internal/idbatcher/id_batcher.go @@ -14,7 +14,7 @@ // Package idbatcher defines a pipeline of fixed size in which the // elements are batches of ids. -package idbatcher // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/idbatcher" +package idbatcher // import "github.com/SigNoz/signoz-otel-collector/processor/internal/idbatcher" import ( "errors" diff --git a/processor/signoztailsampler/internal/sampling/always_sample.go b/processor/signoztailsampler/internal/sampling/always_sample.go index 06534567..3ed74121 100644 --- a/processor/signoztailsampler/internal/sampling/always_sample.go +++ b/processor/signoztailsampler/internal/sampling/always_sample.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/sampling/and.go b/processor/signoztailsampler/internal/sampling/and.go index a0c7e3d5..9b7040d2 100644 --- a/processor/signoztailsampler/internal/sampling/and.go +++ b/processor/signoztailsampler/internal/sampling/and.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/sampling/composite.go b/processor/signoztailsampler/internal/sampling/composite.go index 07fcf968..024e53d0 100644 --- a/processor/signoztailsampler/internal/sampling/composite.go +++ b/processor/signoztailsampler/internal/sampling/composite.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/sampling/doc.go b/processor/signoztailsampler/internal/sampling/doc.go index c1a14f5d..c902fb5e 100644 --- a/processor/signoztailsampler/internal/sampling/doc.go +++ b/processor/signoztailsampler/internal/sampling/doc.go @@ -14,4 +14,4 @@ // Package sampling contains the interfaces and data types used to implement // the various sampling policies. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" diff --git a/processor/signoztailsampler/internal/sampling/latency.go b/processor/signoztailsampler/internal/sampling/latency.go index 0021e3c0..48798489 100644 --- a/processor/signoztailsampler/internal/sampling/latency.go +++ b/processor/signoztailsampler/internal/sampling/latency.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/sampling/never_sample.go b/processor/signoztailsampler/internal/sampling/never_sample.go new file mode 100644 index 00000000..1a5fbfe7 --- /dev/null +++ b/processor/signoztailsampler/internal/sampling/never_sample.go @@ -0,0 +1,25 @@ +package sampling + +import ( + "go.opentelemetry.io/collector/pdata/pcommon" + "go.uber.org/zap" +) + +type neverSample struct { + logger *zap.Logger +} + +var _ PolicyEvaluator = (*neverSample)(nil) + +// NewNeverSample creates a policy evaluator the samples all traces. +func NewNeverSample(logger *zap.Logger) PolicyEvaluator { + return &neverSample{ + logger: logger, + } +} + +// Evaluate looks at the trace data and returns a corresponding SamplingDecision. +func (aus *neverSample) Evaluate(pcommon.TraceID, *TraceData) (Decision, error) { + aus.logger.Debug("Evaluating spans in never-sample filter") + return NotSampled, nil +} diff --git a/processor/signoztailsampler/main_test.go b/processor/signoztailsampler/internal/sampling/never_sample_test.go similarity index 54% rename from processor/signoztailsampler/main_test.go rename to processor/signoztailsampler/internal/sampling/never_sample_test.go index fa95b582..7d3f049a 100644 --- a/processor/signoztailsampler/main_test.go +++ b/processor/signoztailsampler/internal/sampling/never_sample_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -12,14 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -package tailsamplingprocessor +package sampling import ( "testing" - "go.uber.org/goleak" + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.uber.org/zap" ) -func TestMain(m *testing.M) { - goleak.VerifyTestMain(m, goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start")) +func TestEvaluate_NeverSample(t *testing.T) { + filter := NewNeverSample(zap.NewNop()) + decision, err := filter.Evaluate(pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16}), newTraceStringAttrs(nil, "example", "value")) + assert.Nil(t, err) + assert.Equal(t, decision, NotSampled) } diff --git a/processor/signoztailsampler/internal/sampling/numeric_tag_filter.go b/processor/signoztailsampler/internal/sampling/numeric_tag_filter.go index 9bfa9ad5..4932be14 100644 --- a/processor/signoztailsampler/internal/sampling/numeric_tag_filter.go +++ b/processor/signoztailsampler/internal/sampling/numeric_tag_filter.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/sampling/policy.go b/processor/signoztailsampler/internal/sampling/policy.go index 6dc45442..f23baab0 100644 --- a/processor/signoztailsampler/internal/sampling/policy.go +++ b/processor/signoztailsampler/internal/sampling/policy.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "sync" @@ -36,6 +36,8 @@ type TraceData struct { SpanCount *atomic.Int64 // ReceivedBatches stores all the batches received for the trace. ReceivedBatches ptrace.Traces + // FinalDecision. + FinalDecision Decision } // Decision gives the status of sampling decision. @@ -63,6 +65,11 @@ const ( // InvertNotSampled is used on the invert match flow and indicates to not // sample the data. InvertNotSampled + + // No result indicates that a particular evaluation did not + // have an opinion about the trace. this is likely when + // the filters on policy dont match the trace + NoResult ) // PolicyEvaluator implements a tail-based sampling policy evaluator, diff --git a/processor/signoztailsampler/internal/sampling/probabilistic.go b/processor/signoztailsampler/internal/sampling/probabilistic.go index 951a0e65..014d873e 100644 --- a/processor/signoztailsampler/internal/sampling/probabilistic.go +++ b/processor/signoztailsampler/internal/sampling/probabilistic.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "hash/fnv" @@ -52,6 +52,7 @@ func NewProbabilisticSampler(logger *zap.Logger, hashSalt string, samplingPercen // Evaluate looks at the trace data and returns a corresponding SamplingDecision. func (s *probabilisticSampler) Evaluate(traceID pcommon.TraceID, _ *TraceData) (Decision, error) { + s.logger.Debug("Evaluating spans in probabilistic filter") if hashTraceID(s.hashSalt, traceID[:]) <= s.threshold { diff --git a/processor/signoztailsampler/internal/sampling/rate_limiting.go b/processor/signoztailsampler/internal/sampling/rate_limiting.go index 65233d7b..8d6847e9 100644 --- a/processor/signoztailsampler/internal/sampling/rate_limiting.go +++ b/processor/signoztailsampler/internal/sampling/rate_limiting.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "time" diff --git a/processor/signoztailsampler/internal/sampling/span_count_sampler.go b/processor/signoztailsampler/internal/sampling/span_count_sampler.go index 14d42bf0..e2b5bdb1 100644 --- a/processor/signoztailsampler/internal/sampling/span_count_sampler.go +++ b/processor/signoztailsampler/internal/sampling/span_count_sampler.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/sampling/status_code.go b/processor/signoztailsampler/internal/sampling/status_code.go index 7ac0dfc3..345d1b1a 100644 --- a/processor/signoztailsampler/internal/sampling/status_code.go +++ b/processor/signoztailsampler/internal/sampling/status_code.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "errors" diff --git a/processor/signoztailsampler/internal/sampling/string_tag_filter.go b/processor/signoztailsampler/internal/sampling/string_tag_filter.go index d5559502..9798e6c3 100644 --- a/processor/signoztailsampler/internal/sampling/string_tag_filter.go +++ b/processor/signoztailsampler/internal/sampling/string_tag_filter.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "regexp" diff --git a/processor/signoztailsampler/internal/sampling/time_provider.go b/processor/signoztailsampler/internal/sampling/time_provider.go index 3f13293d..39217086 100644 --- a/processor/signoztailsampler/internal/sampling/time_provider.go +++ b/processor/signoztailsampler/internal/sampling/time_provider.go @@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "time" diff --git a/processor/signoztailsampler/internal/sampling/trace_state_filter.go b/processor/signoztailsampler/internal/sampling/trace_state_filter.go index 0ebe4edd..2a3a25e7 100644 --- a/processor/signoztailsampler/internal/sampling/trace_state_filter.go +++ b/processor/signoztailsampler/internal/sampling/trace_state_filter.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/sampling/util.go b/processor/signoztailsampler/internal/sampling/util.go index b45f2c55..3c035a1a 100644 --- a/processor/signoztailsampler/internal/sampling/util.go +++ b/processor/signoztailsampler/internal/sampling/util.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package sampling // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" +package sampling // import "github.com/SigNoz/signoz-otel-collector/processor/internal/sampling" import ( "go.opentelemetry.io/collector/pdata/pcommon" diff --git a/processor/signoztailsampler/internal/timeutils/ticker.go b/processor/signoztailsampler/internal/timeutils/ticker.go new file mode 100644 index 00000000..905a4042 --- /dev/null +++ b/processor/signoztailsampler/internal/timeutils/ticker.go @@ -0,0 +1,65 @@ +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package timeutils + +import "time" + +// TTicker interface allows easier testing of Ticker related functionality +type TTicker interface { + // start sets the frequency of the Ticker and starts the periodic calls to OnTick. + Start(d time.Duration) + // OnTick is called when the Ticker fires. + OnTick() + // Stop firing the Ticker. + Stop() +} + +// Implements TTicker and abstracts underlying time ticker's functionality to make usage +// simpler. +type PolicyTicker struct { + Ticker *time.Ticker + OnTickFunc func() + StopCh chan struct{} +} + +// Ensure PolicyTicker implements TTicker interface +var _ TTicker = (*PolicyTicker)(nil) + +func (pt *PolicyTicker) Start(d time.Duration) { + pt.Ticker = time.NewTicker(d) + pt.StopCh = make(chan struct{}) + go func() { + for { + select { + case <-pt.Ticker.C: + pt.OnTick() + case <-pt.StopCh: + return + } + } + }() +} + +func (pt *PolicyTicker) OnTick() { + pt.OnTickFunc() +} + +func (pt *PolicyTicker) Stop() { + if pt.StopCh == nil { + return + } + close(pt.StopCh) + pt.Ticker.Stop() +} diff --git a/processor/signoztailsampler/metrics.go b/processor/signoztailsampler/metrics.go index d5ed4d19..01a9cbae 100644 --- a/processor/signoztailsampler/metrics.go +++ b/processor/signoztailsampler/metrics.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package tailsamplingprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" +package signoztailsampler // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" import ( "go.opencensus.io/stats" diff --git a/processor/signoztailsampler/processor.go b/processor/signoztailsampler/processor.go index 606ea94f..c705ba06 100644 --- a/processor/signoztailsampler/processor.go +++ b/processor/signoztailsampler/processor.go @@ -12,12 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -package tailsamplingprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" +package signoztailsampler // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" import ( "context" "fmt" "runtime" + "sort" "sync" "time" @@ -27,12 +28,13 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/ptrace" + "go.opentelemetry.io/collector/processor" "go.uber.org/atomic" "go.uber.org/zap" - "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils" - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/idbatcher" - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/idbatcher" + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/sampling" + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/timeutils" ) // policy combines a sampling policy evaluator with the destinations to be @@ -63,17 +65,22 @@ type tailSamplingSpanProcessor struct { } const ( - sourceFormat = "tail_sampling" + sourceFormat = "signoz_tail_sampling" ) // newTracesProcessor returns a processor.TracesProcessor that will perform tail sampling according to the given // configuration. -func newTracesProcessor(logger *zap.Logger, nextConsumer consumer.Traces, cfg Config) (component.TracesProcessor, error) { +func newTracesProcessor(logger *zap.Logger, nextConsumer consumer.Traces, cfg Config) (processor.Traces, error) { if nextConsumer == nil { return nil, component.ErrNilNextConsumer } + if err := cfg.Validate(); err != nil { + return nil, fmt.Errorf("config invalid: %v", err) + } + numDecisionBatches := uint64(cfg.DecisionWait.Seconds()) + inBatcher, err := idbatcher.New(numDecisionBatches, cfg.ExpectedNewTracesPerSec, uint64(2*runtime.NumCPU())) if err != nil { return nil, err @@ -81,13 +88,21 @@ func newTracesProcessor(logger *zap.Logger, nextConsumer consumer.Traces, cfg Co ctx := context.Background() var policies []*policy - for i := range cfg.PolicyCfgs { - policyCfg := &cfg.PolicyCfgs[i] + policyGroups := []PolicyGroupCfg{} + + copy(policyGroups, cfg.PolicyCfgs) + // sort the policies by priority + sort.Slice(policyGroups, func(i, j int) bool { + return policyGroups[i].Priority < policyGroups[j].Priority + }) + + for i := range policyGroups { + policyCfg := policyGroups[i] policyCtx, err := tag.New(ctx, tag.Upsert(tagPolicyKey, policyCfg.Name), tag.Upsert(tagSourceFormat, sourceFormat)) if err != nil { return nil, err } - eval, err := getPolicyEvaluator(logger, policyCfg) + eval := NewDefaultEvaluator(logger, policyCfg.BasePolicy, policyCfg.SubPolicies) if err != nil { return nil, err } @@ -98,6 +113,7 @@ func newTracesProcessor(logger *zap.Logger, nextConsumer consumer.Traces, cfg Co } policies = append(policies, p) } + logger.Debug("loadded policies:", zap.Int("policy count", len(policies))) tsp := &tailSamplingSpanProcessor{ ctx: ctx, @@ -116,50 +132,6 @@ func newTracesProcessor(logger *zap.Logger, nextConsumer consumer.Traces, cfg Co return tsp, nil } -func getPolicyEvaluator(logger *zap.Logger, cfg *PolicyCfg) (sampling.PolicyEvaluator, error) { - switch cfg.Type { - case Composite: - return getNewCompositePolicy(logger, &cfg.CompositeCfg) - case And: - return getNewAndPolicy(logger, &cfg.AndCfg) - default: - return getSharedPolicyEvaluator(logger, &cfg.sharedPolicyCfg) - } -} - -func getSharedPolicyEvaluator(logger *zap.Logger, cfg *sharedPolicyCfg) (sampling.PolicyEvaluator, error) { - switch cfg.Type { - case AlwaysSample: - return sampling.NewAlwaysSample(logger), nil - case Latency: - lfCfg := cfg.LatencyCfg - return sampling.NewLatency(logger, lfCfg.ThresholdMs), nil - case NumericAttribute: - nafCfg := cfg.NumericAttributeCfg - return sampling.NewNumericAttributeFilter(logger, nafCfg.Key, nafCfg.MinValue, nafCfg.MaxValue), nil - case Probabilistic: - pCfg := cfg.ProbabilisticCfg - return sampling.NewProbabilisticSampler(logger, pCfg.HashSalt, pCfg.SamplingPercentage), nil - case StringAttribute: - safCfg := cfg.StringAttributeCfg - return sampling.NewStringAttributeFilter(logger, safCfg.Key, safCfg.Values, safCfg.EnabledRegexMatching, safCfg.CacheMaxSize, safCfg.InvertMatch), nil - case StatusCode: - scfCfg := cfg.StatusCodeCfg - return sampling.NewStatusCodeFilter(logger, scfCfg.StatusCodes) - case RateLimiting: - rlfCfg := cfg.RateLimitingCfg - return sampling.NewRateLimiting(logger, rlfCfg.SpansPerSecond), nil - case SpanCount: - spCfg := cfg.SpanCountCfg - return sampling.NewSpanCount(logger, spCfg.MinSpans), nil - case TraceState: - tsfCfg := cfg.TraceStateCfg - return sampling.NewTraceStateFilter(logger, tsfCfg.Key, tsfCfg.Values), nil - default: - return nil, fmt.Errorf("unknown sampling policy type %s", cfg.Type) - } -} - type policyMetrics struct { idNotFoundOnMapCount, evaluateErrorCount, decisionSampled, decisionNotSampled int64 } @@ -185,7 +157,8 @@ func (tsp *tailSamplingSpanProcessor) samplingPolicyOnTick() { // Sampled or not, remove the batches trace.Lock() allSpans := ptrace.NewTraces() - trace.ReceivedBatches.MoveTo(allSpans) + trace.FinalDecision = decision + trace.ReceivedBatches.CopyTo(allSpans) trace.Unlock() if decision == sampling.Sampled { @@ -208,16 +181,10 @@ func (tsp *tailSamplingSpanProcessor) samplingPolicyOnTick() { ) } -func (tsp *tailSamplingSpanProcessor) makeDecision(id pcommon.TraceID, trace *sampling.TraceData, metrics *policyMetrics) (sampling.Decision, *policy) { - finalDecision := sampling.NotSampled +func (tsp *tailSamplingSpanProcessor) makeDecision(id pcommon.TraceID, trace *sampling.TraceData, metrics *policyMetrics) (d sampling.Decision, p *policy) { + + finalDecision := sampling.NoResult var matchingPolicy *policy - samplingDecision := map[sampling.Decision]bool{ - sampling.Error: false, - sampling.Sampled: false, - sampling.NotSampled: false, - sampling.InvertSampled: false, - sampling.InvertNotSampled: false, - } // Check all policies before making a final decision for i, p := range tsp.policies { @@ -227,72 +194,58 @@ func (tsp *tailSamplingSpanProcessor) makeDecision(id pcommon.TraceID, trace *sa p.ctx, statDecisionLatencyMicroSec.M(int64(time.Since(policyEvaluateStartTime)/time.Microsecond))) + trace.Decisions[i] = decision + if err != nil { - samplingDecision[sampling.Error] = true - trace.Decisions[i] = sampling.NotSampled metrics.evaluateErrorCount++ tsp.logger.Debug("Sampling policy error", zap.Error(err)) - } else { - switch decision { - case sampling.Sampled: - samplingDecision[sampling.Sampled] = true - trace.Decisions[i] = decision - - case sampling.NotSampled: - samplingDecision[sampling.NotSampled] = true - trace.Decisions[i] = decision - - case sampling.InvertSampled: - samplingDecision[sampling.InvertSampled] = true - trace.Decisions[i] = sampling.Sampled + } - case sampling.InvertNotSampled: - samplingDecision[sampling.InvertNotSampled] = true - trace.Decisions[i] = sampling.NotSampled - } + if decision == sampling.Sampled || decision == sampling.NotSampled { + finalDecision = decision + matchingPolicy = p + break } } - // InvertNotSampled takes precedence over any other decision - switch { - case samplingDecision[sampling.InvertNotSampled]: - finalDecision = sampling.NotSampled - case samplingDecision[sampling.Sampled]: - finalDecision = sampling.Sampled - case samplingDecision[sampling.InvertSampled] && !samplingDecision[sampling.NotSampled]: + // check if none of the policies matched + if finalDecision == sampling.NoResult { + // we default to always sample when no policies match finalDecision = sampling.Sampled - } - for _, p := range tsp.policies { - switch finalDecision { - case sampling.Sampled: - // any single policy that decides to sample will cause the decision to be sampled - // the nextConsumer will get the context from the first matching policy - if matchingPolicy == nil { - matchingPolicy = p - } - - _ = stats.RecordWithTags( - p.ctx, - []tag.Mutator{tag.Upsert(tagSampledKey, "true")}, - statCountTracesSampled.M(int64(1)), - ) - metrics.decisionSampled++ - - case sampling.NotSampled: - _ = stats.RecordWithTags( - p.ctx, - []tag.Mutator{tag.Upsert(tagSampledKey, "false")}, - statCountTracesSampled.M(int64(1)), - ) - metrics.decisionNotSampled++ + // this assignment is for reporting purpose only, + // no evaluation occurs after this point + matchingPolicy = &policy{ + name: string(AlwaysSample), + evaluator: sampling.NewAlwaysSample(tsp.logger), + ctx: tsp.ctx, } } + // always sample by default, hence no-result means sampled + switch finalDecision { + case sampling.Sampled: + + _ = stats.RecordWithTags( + matchingPolicy.ctx, + []tag.Mutator{tag.Upsert(tagSampledKey, "true")}, + statCountTracesSampled.M(int64(1)), + ) + metrics.decisionSampled++ + + case sampling.NotSampled: + _ = stats.RecordWithTags( + matchingPolicy.ctx, + []tag.Mutator{tag.Upsert(tagSampledKey, "false")}, + statCountTracesSampled.M(int64(1)), + ) + metrics.decisionNotSampled++ + } + return finalDecision, matchingPolicy } -// ConsumeTraces is required by the component.TracesProcessor interface. +// ConsumeTraces is required by the processor.Traces interface. func (tsp *tailSamplingSpanProcessor) ConsumeTraces(ctx context.Context, td ptrace.Traces) error { resourceSpans := td.ResourceSpans() for i := 0; i < resourceSpans.Len(); i++ { @@ -317,8 +270,10 @@ func (tsp *tailSamplingSpanProcessor) groupSpansByTraceKey(resourceSpans ptrace. } func (tsp *tailSamplingSpanProcessor) processTraces(resourceSpans ptrace.ResourceSpans) { + // Group spans per their traceId to minimize contention on idToTrace idToSpans := tsp.groupSpansByTraceKey(resourceSpans) + var newTraceIDs int64 for id, spans := range idToSpans { lenSpans := int64(len(spans)) @@ -356,47 +311,35 @@ func (tsp *tailSamplingSpanProcessor) processTraces(resourceSpans ptrace.Resourc } } - for i, p := range tsp.policies { - actualData.Lock() - actualDecision := actualData.Decisions[i] - // If decision is pending, we want to add the new spans still under the lock, so the decision doesn't happen - // in between the transition from pending. - if actualDecision == sampling.Pending { - // Add the spans to the trace, but only once for all policy, otherwise same spans will - // be duplicated in the final trace. - appendToTraces(actualData.ReceivedBatches, resourceSpans, spans) - actualData.Unlock() - break - } + // The only thing we really care about here is the final decision. + actualData.Lock() + finalDecision := actualData.FinalDecision + + if finalDecision == sampling.Unspecified { + // If the final decision hasn't been made, add the new spans under the lock. + appendToTraces(actualData.ReceivedBatches, resourceSpans, spans) + actualData.Unlock() + } else { actualData.Unlock() - switch actualDecision { + switch finalDecision { case sampling.Sampled: // Forward the spans to the policy destinations traceTd := ptrace.NewTraces() appendToTraces(traceTd, resourceSpans, spans) - if err := tsp.nextConsumer.ConsumeTraces(p.ctx, traceTd); err != nil { - tsp.logger.Warn("Error sending late arrived spans to destination", - zap.String("policy", p.name), + if err := tsp.nextConsumer.ConsumeTraces(tsp.ctx, traceTd); err != nil { + tsp.logger.Warn( + "Error sending late arrived spans to destination", zap.Error(err)) } case sampling.NotSampled: stats.Record(tsp.ctx, statLateSpanArrivalAfterDecision.M(int64(time.Since(actualData.DecisionTime)/time.Second))) - default: tsp.logger.Warn("Encountered unexpected sampling decision", - zap.String("policy", p.name), - zap.Int("decision", int(actualDecision))) - } - - // At this point the late arrival has been passed to nextConsumer. Need to break out of the policy loop - // so that it isn't sent to nextConsumer more than once when multiple policies chose to sample - if actualDecision == sampling.Sampled { - break + zap.Int("decision", int(finalDecision))) } } } - stats.Record(tsp.ctx, statNewTraceIDReceivedCount.M(newTraceIDs)) } diff --git a/processor/signoztailsampler/processor_test.go b/processor/signoztailsampler/processor_test.go index e99f17cf..3cea606e 100644 --- a/processor/signoztailsampler/processor_test.go +++ b/processor/signoztailsampler/processor_test.go @@ -1,18 +1,4 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tailsamplingprocessor +package signoztailsampler import ( "context" @@ -31,16 +17,21 @@ import ( "go.uber.org/atomic" "go.uber.org/zap" - "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils" - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/idbatcher" - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/sampling" + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/idbatcher" + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/sampling" + "github.com/SigNoz/signoz-otel-collector/processor/signoztailsampler/internal/timeutils" ) const ( defaultTestDecisionWait = 30 * time.Second ) -var testPolicy = []PolicyCfg{{sharedPolicyCfg: sharedPolicyCfg{Name: "test-policy", Type: AlwaysSample}}} +var testPolicy = []PolicyGroupCfg{ + { + BasePolicy: BasePolicy{Name: "test-policy", Type: AlwaysSample, Priority: 1}, + SubPolicies: []BasePolicy{}, + }, +} func TestSequentialTraceArrival(t *testing.T) { traceIds, batches := generateIdsAndBatches(128) @@ -48,7 +39,7 @@ func TestSequentialTraceArrival(t *testing.T) { DecisionWait: defaultTestDecisionWait, NumTraces: uint64(2 * len(traceIds)), ExpectedNewTracesPerSec: 64, - PolicyCfgs: testPolicy, + PolicyCfgs: []PolicyGroupCfg{}, } sp, _ := newTracesProcessor(zap.NewNop(), consumertest.NewNop(), cfg) tsp := sp.(*tailSamplingSpanProcessor) @@ -70,48 +61,6 @@ func TestSequentialTraceArrival(t *testing.T) { } } -func TestConcurrentTraceArrival(t *testing.T) { - t.Skip("Flaky Test - See https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/10205") - traceIds, batches := generateIdsAndBatches(128) - - var wg sync.WaitGroup - cfg := Config{ - DecisionWait: defaultTestDecisionWait, - NumTraces: uint64(2 * len(traceIds)), - ExpectedNewTracesPerSec: 64, - PolicyCfgs: testPolicy, - } - sp, _ := newTracesProcessor(zap.NewNop(), consumertest.NewNop(), cfg) - tsp := sp.(*tailSamplingSpanProcessor) - tsp.tickerFrequency = 100 * time.Millisecond - require.NoError(t, tsp.Start(context.Background(), componenttest.NewNopHost())) - defer func() { - require.NoError(t, tsp.Shutdown(context.Background())) - }() - - for _, batch := range batches { - // Add the same traceId twice. - wg.Add(2) - go func(td ptrace.Traces) { - require.NoError(t, tsp.ConsumeTraces(context.Background(), td)) - wg.Done() - }(batch) - go func(td ptrace.Traces) { - require.NoError(t, tsp.ConsumeTraces(context.Background(), td)) - wg.Done() - }(batch) - } - - wg.Wait() - - for i := range traceIds { - d, ok := tsp.idToTrace.Load(traceIds[i]) - require.True(t, ok, "Missing expected traceId") - v := d.(*sampling.TraceData) - require.Equal(t, int64(i+1)*2, v.SpanCount.Load(), "Incorrect number of spans for entry %d", i) - } -} - func TestSequentialTraceMapSize(t *testing.T) { traceIds, batches := generateIdsAndBatches(210) const maxSize = 100 @@ -140,45 +89,6 @@ func TestSequentialTraceMapSize(t *testing.T) { } } -func TestConcurrentTraceMapSize(t *testing.T) { - t.Skip("Flaky test, see https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/9126") - _, batches := generateIdsAndBatches(210) - const maxSize = 100 - var wg sync.WaitGroup - cfg := Config{ - DecisionWait: defaultTestDecisionWait, - NumTraces: uint64(maxSize), - ExpectedNewTracesPerSec: 64, - PolicyCfgs: testPolicy, - } - sp, _ := newTracesProcessor(zap.NewNop(), consumertest.NewNop(), cfg) - tsp := sp.(*tailSamplingSpanProcessor) - tsp.tickerFrequency = 100 * time.Millisecond - require.NoError(t, tsp.Start(context.Background(), componenttest.NewNopHost())) - defer func() { - require.NoError(t, tsp.Shutdown(context.Background())) - }() - - for _, batch := range batches { - wg.Add(1) - go func(td ptrace.Traces) { - require.NoError(t, tsp.ConsumeTraces(context.Background(), td)) - wg.Done() - }(batch) - } - - wg.Wait() - - // Since we can't guarantee the order of insertion the only thing that can be checked is - // if the number of traces on the map matches the expected value. - cnt := 0 - tsp.idToTrace.Range(func(_ interface{}, _ interface{}) bool { - cnt++ - return true - }) - require.Equal(t, maxSize, cnt, "Incorrect traces count on idToTrace") -} - func TestSamplingPolicyTypicalPath(t *testing.T) { const maxSize = 100 const decisionWaitSeconds = 5 @@ -240,7 +150,7 @@ func TestSamplingPolicyTypicalPath(t *testing.T) { require.Equal(t, expectedNumWithLateSpan, msp.SpanCount(), "late span was not accounted for") } -func TestSamplingPolicyInvertSampled(t *testing.T) { +func TestSamplingPolicySampled(t *testing.T) { const maxSize = 100 const decisionWaitSeconds = 5 // For this test explicitly control the timer calls and batcher, and set a mock @@ -283,7 +193,7 @@ func TestSamplingPolicyInvertSampled(t *testing.T) { } // Now the first batch that waited the decision period. - mpe.NextDecision = sampling.InvertSampled + mpe.NextDecision = sampling.Sampled tsp.samplingPolicyOnTick() require.False( t, @@ -301,6 +211,7 @@ func TestSamplingPolicyInvertSampled(t *testing.T) { require.Equal(t, expectedNumWithLateSpan, msp.SpanCount(), "late span was not accounted for") } +// in case of multiple policies, we exit when the first one evals to Sampled func TestSamplingMultiplePolicies(t *testing.T) { const maxSize = 100 const decisionWaitSeconds = 5 @@ -345,7 +256,7 @@ func TestSamplingMultiplePolicies(t *testing.T) { tsp.samplingPolicyOnTick() require.False( t, - msp.SpanCount() != 0 || mpe1.EvaluationCount != 0 || mpe2.EvaluationCount != 0, + msp.SpanCount() != 0 || mpe1.EvaluationCount+mpe2.EvaluationCount != 0, "policy for initial items was evaluated before decision wait period", ) } @@ -356,7 +267,7 @@ func TestSamplingMultiplePolicies(t *testing.T) { tsp.samplingPolicyOnTick() require.False( t, - msp.SpanCount() == 0 || mpe1.EvaluationCount == 0 || mpe2.EvaluationCount == 0, + msp.SpanCount() == 0 || mpe1.EvaluationCount+mpe2.EvaluationCount == 0, "policy should have been evaluated totalspans == %d and evaluationcount(1) == %d and evaluationcount(2) == %d", msp.SpanCount(), mpe1.EvaluationCount, @@ -423,78 +334,18 @@ func TestSamplingPolicyDecisionNotSampled(t *testing.T) { require.NoError(t, tsp.ConsumeTraces(context.Background(), batches[0])) require.Equal(t, 0, msp.SpanCount()) + // check that by default all spans are sampled unless a filter blocks them + // this behaviour is different than otel-contrib/tail sampler which blocks + // all spans by default. mpe.NextDecision = sampling.Unspecified mpe.NextError = errors.New("mock policy error") tsp.samplingPolicyOnTick() - require.EqualValues(t, 0, msp.SpanCount(), "exporter should have received zero spans") + require.EqualValues(t, 11, msp.SpanCount(), "exporter should have received zero spans") require.EqualValues(t, 6, mpe.EvaluationCount, "policy should have been evaluated 6 times") // Late span of a non-sampled trace should be ignored require.NoError(t, tsp.ConsumeTraces(context.Background(), batches[0])) - require.Equal(t, 0, msp.SpanCount()) -} - -func TestSamplingPolicyDecisionInvertNotSampled(t *testing.T) { - const maxSize = 100 - const decisionWaitSeconds = 5 - // For this test explicitly control the timer calls and batcher, and set a mock - // sampling policy evaluator. - msp := new(consumertest.TracesSink) - mpe := &mockPolicyEvaluator{} - mtt := &manualTTicker{} - tsp := &tailSamplingSpanProcessor{ - ctx: context.Background(), - nextConsumer: msp, - maxNumTraces: maxSize, - logger: zap.NewNop(), - decisionBatcher: newSyncIDBatcher(decisionWaitSeconds), - policies: []*policy{{name: "mock-policy", evaluator: mpe, ctx: context.TODO()}}, - deleteChan: make(chan pcommon.TraceID, maxSize), - policyTicker: mtt, - tickerFrequency: 100 * time.Millisecond, - numTracesOnMap: atomic.NewUint64(0), - } - require.NoError(t, tsp.Start(context.Background(), componenttest.NewNopHost())) - defer func() { - require.NoError(t, tsp.Shutdown(context.Background())) - }() - - _, batches := generateIdsAndBatches(210) - currItem := 0 - numSpansPerBatchWindow := 10 - // First evaluations shouldn't have anything to evaluate, until decision wait time passed. - for evalNum := 0; evalNum < decisionWaitSeconds; evalNum++ { - for ; currItem < numSpansPerBatchWindow*(evalNum+1); currItem++ { - require.NoError(t, tsp.ConsumeTraces(context.Background(), batches[currItem])) - require.True(t, mtt.Started, "Time ticker was expected to have started") - } - tsp.samplingPolicyOnTick() - require.False( - t, - msp.SpanCount() != 0 || mpe.EvaluationCount != 0, - "policy for initial items was evaluated before decision wait period", - ) - } - - // Now the first batch that waited the decision period. - mpe.NextDecision = sampling.InvertNotSampled - tsp.samplingPolicyOnTick() - require.EqualValues(t, 0, msp.SpanCount(), "exporter should have received zero spans") - require.EqualValues(t, 4, mpe.EvaluationCount, "policy should have been evaluated 4 times") - - // Late span of a non-sampled trace should be ignored - require.NoError(t, tsp.ConsumeTraces(context.Background(), batches[0])) - require.Equal(t, 0, msp.SpanCount()) - - mpe.NextDecision = sampling.Unspecified - mpe.NextError = errors.New("mock policy error") - tsp.samplingPolicyOnTick() - require.EqualValues(t, 0, msp.SpanCount(), "exporter should have received zero spans") - require.EqualValues(t, 6, mpe.EvaluationCount, "policy should have been evaluated 6 times") - - // Late span of a non-sampled trace should be ignored - require.NoError(t, tsp.ConsumeTraces(context.Background(), batches[0])) - require.Equal(t, 0, msp.SpanCount()) + require.Equal(t, 11, msp.SpanCount()) } func TestMultipleBatchesAreCombinedIntoOne(t *testing.T) { diff --git a/processor/signoztailsampler/testdata/tail_sampling_config.yaml b/processor/signoztailsampler/testdata/tail_sampling_config.yaml index 381cf6b4..80fb16df 100644 --- a/processor/signoztailsampler/testdata/tail_sampling_config.yaml +++ b/processor/signoztailsampler/testdata/tail_sampling_config.yaml @@ -1,4 +1,4 @@ -tail_sampling: +signoz_tail_sampling: decision_wait: 10s num_traces: 100 expected_new_traces_per_sec: 10 @@ -6,102 +6,25 @@ tail_sampling: [ { name: test-policy-1, - type: always_sample + type: policy_group, + priority: 1, + policy_filter: { + string_attributes: { + key: source, + values: ["security"] + } + }, + sampling: {sampling_percentage: 100}, + sub_policies: [{ + name: condition-1, + type: policy_group, + priority: 1, + policy_filter: { + string_attributes: { + key: source, + values: ["security"] + } + }, + }] }, - { - name: test-policy-2, - type: latency, - latency: {threshold_ms: 5000} - }, - { - name: test-policy-3, - type: numeric_attribute, - numeric_attribute: {key: key1, min_value: 50, max_value: 100} - }, - { - name: test-policy-4, - type: probabilistic, - probabilistic: {hash_salt: "custom-salt", sampling_percentage: 0.1} - }, - { - name: test-policy-5, - type: status_code, - status_code: {status_codes: [ERROR, UNSET]} - }, - { - name: test-policy-6, - type: string_attribute, - string_attribute: {key: key2, values: [value1, value2]} - }, - { - name: test-policy-7, - type: rate_limiting, - rate_limiting: {spans_per_second: 35} - }, - { - name: test-policy-8, - type: span_count, - span_count: {min_spans: 2} - }, - { - name: test-policy-9, - type: trace_state, - trace_state: { key: key3, values: [ value1, value2 ] } - }, - { - name: and-policy-1, - type: and, - and: { - and_sub_policy: - [ - { - name: test-and-policy-1, - type: numeric_attribute, - numeric_attribute: { key: key1, min_value: 50, max_value: 100 } - }, - { - name: test-and-policy-2, - type: string_attribute, - string_attribute: { key: key2, values: [ value1, value2 ] } - }, - ] - } - }, - { - name: composite-policy-1, - type: composite, - composite: - { - max_total_spans_per_second: 1000, - policy_order: [ test-composite-policy-1, test-composite-policy-2, test-composite-policy-3 ], - composite_sub_policy: - [ - { - name: test-composite-policy-1, - type: numeric_attribute, - numeric_attribute: { key: key1, min_value: 50, max_value: 100 } - }, - { - name: test-composite-policy-2, - type: string_attribute, - string_attribute: { key: key2, values: [ value1, value2 ] } - }, - { - name: test-composite-policy-3, - type: always_sample - } - ], - rate_allocation: - [ - { - policy: test-composite-policy-1, - percent: 50 - }, - { - policy: test-composite-policy-2, - percent: 25 - } - ] - } - }, ] diff --git a/signozcol/collector.go b/signozcol/collector.go index 04415995..2c9502a6 100644 --- a/signozcol/collector.go +++ b/signozcol/collector.go @@ -13,7 +13,7 @@ import ( "go.opentelemetry.io/collector/confmap/converter/expandconverter" "go.opentelemetry.io/collector/confmap/provider/fileprovider" - "go.opentelemetry.io/collector/service" + "go.opentelemetry.io/collector/otelcol" "go.uber.org/zap" ) @@ -79,7 +79,7 @@ func (wCol *WrappedCollector) Run(ctx context.Context) error { wCol.logger.Debug("Created new settings for collector", zap.Any("settings", settings)) // Create a new instance of collector to be used - svc, err := service.New(*settings) + svc, err := otelcol.NewCollector(*settings) if err != nil { return fmt.Errorf("failed to create a new OTel collector service: %w", err) } @@ -116,8 +116,12 @@ func (wCol *WrappedCollector) Run(ctx context.Context) error { go func() { for { state := svc.GetState() +<<<<<<< HEAD if state == service.StateRunning { wCol.logger.Info("Collector service is running") +======= + if state == otelcol.StateRunning { +>>>>>>> glue-up // TODO: collector may panic or exit unexpectedly, need to handle that colErrorChannel <- nil break @@ -171,17 +175,21 @@ func (wCol *WrappedCollector) ErrorChan() <-chan error { return wCol.errChan } -func (wCol *WrappedCollector) GetState() service.State { +func (wCol *WrappedCollector) GetState() otelcol.State { wCol.mux.Lock() defer wCol.mux.Unlock() if wCol.svc != nil { return wCol.svc.GetState() } +<<<<<<< HEAD return StateUknown +======= + return otelcol.StateClosed +>>>>>>> glue-up } -func newOtelColSettings(configPaths []string, version string, desc string, loggingOpts []zap.Option) (*service.CollectorSettings, error) { +func newOtelColSettings(configPaths []string, version string, desc string, loggingOpts []zap.Option) (*otelcol.CollectorSettings, error) { factories, err := components.Components() if err != nil { return nil, fmt.Errorf("error while setting up default factories: %w", err) @@ -194,19 +202,19 @@ func newOtelColSettings(configPaths []string, version string, desc string, loggi } fmp := fileprovider.New() - configProviderSettings := service.ConfigProviderSettings{ + configProviderSettings := otelcol.ConfigProviderSettings{ ResolverSettings: confmap.ResolverSettings{ URIs: configPaths, Providers: map[string]confmap.Provider{fmp.Scheme(): fmp}, Converters: []confmap.Converter{expandconverter.New()}, }, } - provider, err := service.NewConfigProvider(configProviderSettings) + provider, err := otelcol.NewConfigProvider(configProviderSettings) if err != nil { return nil, err } - return &service.CollectorSettings{ + return &otelcol.CollectorSettings{ Factories: factories, BuildInfo: buildInfo, LoggingOptions: loggingOpts, diff --git a/utils/utils.go b/utils/utils.go new file mode 100644 index 00000000..e4026ff9 --- /dev/null +++ b/utils/utils.go @@ -0,0 +1,21 @@ +package utils + +import ( + "encoding/hex" + + "go.opentelemetry.io/collector/pdata/pcommon" +) + +func TraceIDToHexOrEmptyString(traceID pcommon.TraceID) string { + if !traceID.IsEmpty() { + return hex.EncodeToString(traceID[:]) + } + return "" +} + +func SpanIDToHexOrEmptyString(spanID pcommon.SpanID) string { + if !spanID.IsEmpty() { + return hex.EncodeToString(spanID[:]) + } + return "" +}