From 6ed4f23d10d54c7a5c5f3444f5add8b95cec3efc Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Thu, 27 Jun 2024 04:44:52 +0530 Subject: [PATCH 01/60] Create setup for enabling SPM in v2 Signed-off-by: FlamingSaint --- Makefile | 4 ++ docker-compose/monitor/Makefile | 16 +++++- docker-compose/monitor/docker-compose-v2.yml | 53 ++++++++++++++++++++ docker-compose/monitor/jaeger-v2-config.yml | 38 ++++++++++++++ 4 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 docker-compose/monitor/docker-compose-v2.yml create mode 100644 docker-compose/monitor/jaeger-v2-config.yml diff --git a/Makefile b/Makefile index b4d181e2e2c..ad3ccfbbbe7 100644 --- a/Makefile +++ b/Makefile @@ -257,6 +257,10 @@ rebuild-ui: build-all-in-one-linux: GOOS=linux $(MAKE) build-all-in-one +.PHONY: build-jaeger-linux +build-jaeger-linux: + GOOS=linux $(MAKE) build-jaeger + # Requires variables: $(BIN_NAME) $(BIN_PATH) $(GO_TAGS) $(DISABLE_OPTIMIZATIONS) $(SUFFIX) $(GOOS) $(GOARCH) $(BUILD_INFO) # Other targets can depend on this one but with a unique suffix to ensure it is always executed. BIN_PATH = ./cmd/$(BIN_NAME) diff --git a/docker-compose/monitor/Makefile b/docker-compose/monitor/Makefile index f6628dffd3b..c23fe3abf6b 100644 --- a/docker-compose/monitor/Makefile +++ b/docker-compose/monitor/Makefile @@ -14,8 +14,8 @@ build: clean-jaeger # Note: the jaeger "dev" image can be built with "make build". .PHONY: dev dev: export JAEGER_IMAGE_TAG = dev -dev: - docker compose -f docker-compose.yml up $(DOCKER_COMPOSE_ARGS) +dev: build-v2 + docker compose -f docker-compose-v2.yml up $(DOCKER_COMPOSE_ARGS) .PHONY: clean-jaeger clean-jaeger: @@ -29,3 +29,15 @@ clean-all: clean-jaeger docker rmi -f otel/opentelemetry-collector-contrib:latest ; \ docker rmi -f prom/prometheus:latest ; \ docker rmi -f grafana/grafana:latest + +.PHONY: build-v2 +build: clean-jaeger + cd ../../ && make build-jaeger-linux + cd ../../ && make create-baseimg PLATFORMS=linux/$(shell go env GOARCH) + cd ../../ && docker buildx build --target release \ + --tag jaegertracing/jaeger:dev \ + --build-arg base_image=localhost:5000/baseimg_alpine:latest \ + --build-arg debug_image=not-used \ + --build-arg TARGETARCH=$(shell go env GOARCH) \ + --load \ + cmd/jaeger diff --git a/docker-compose/monitor/docker-compose-v2.yml b/docker-compose/monitor/docker-compose-v2.yml new file mode 100644 index 00000000000..7c1483725fa --- /dev/null +++ b/docker-compose/monitor/docker-compose-v2.yml @@ -0,0 +1,53 @@ +version: "3.5" +services: + jaeger: + networks: + - backend + image: jaegertracing/jaeger:${JAEGER_IMAGE_TAG:-latest} + volumes: + - "./jaeger-ui.json:/etc/jaeger/jaeger-ui.json" # Do we need this for v2 ? Seems to be running without this. + - "./jaeger-v2-config.yml:/etc/jaeger/jaeger-v2-config.yml" + command: ["--config", "/etc/jaeger/jaeger-v2-config.yml"] + environment: + - METRICS_STORAGE_TYPE=prometheus + - PROMETHEUS_SERVER_URL=http://prometheus:9090 + # - PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR=${PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR:-true} + - PROMETHEUS_QUERY_NAMESPACE=${PROMETHEUS_QUERY_NAMESPACE:-} + - PROMETHEUS_QUERY_DURATION_UNIT=${PROMETHEUS_QUERY_DURATION_UNIT:-} + - PROMETHEUS_QUERY_NORMALIZE_CALLS=true + - PROMETHEUS_QUERY_NORMALIZE_DURATION=true + ports: + - "16686:16686" + - "14278:14278" + microsim: + networks: + - backend + image: yurishkuro/microsim:0.3.0 + # TODO: Fix error - dial tcp [::1]:14278: connect: connection refused + command: "-j http://localhost:14278/api/traces -d 24h -s 500ms" + depends_on: + - jaeger + prometheus: + networks: + - backend + image: prom/prometheus:latest + volumes: + - "./prometheus.yml:/etc/prometheus/prometheus.yml" + ports: + - "9090:9090" + grafana: + networks: + - backend + image: grafana/grafana:latest + volumes: + - ./grafana.ini:/etc/grafana/grafana.ini + - ./datasource.yml:/etc/grafana/provisioning/datasources/datasource.yaml + environment: + - GF_AUTH_ANONYMOUS_ENABLED=true + - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin + - GF_AUTH_DISABLE_LOGIN_FORM=true + ports: + - 3000:3000 + +networks: + backend: diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml new file mode 100644 index 00000000000..d17c52fc850 --- /dev/null +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -0,0 +1,38 @@ +service: + extensions: [jaeger_storage, jaeger_query] + pipelines: + traces: + receivers: [otlp, jaeger, zipkin] + processors: [batch] + exporters: [jaeger_storage_exporter] + +extensions: + jaeger_query: + trace_storage: memstore + + jaeger_storage: + memory: + memstore: + max_traces: 100000 + +receivers: + otlp: + protocols: + grpc: + http: + + jaeger: + protocols: + grpc: + thrift_binary: + thrift_compact: + thrift_http: + + zipkin: + +processors: + batch: + +exporters: + jaeger_storage_exporter: + trace_storage: memstore From dc854613f23be8d4ccf6ca23fb59356e3eeb3eef Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Thu, 27 Jun 2024 07:51:54 +0530 Subject: [PATCH 02/60] Add connector to the config and add suggested changes to the Makefile Signed-off-by: FlamingSaint --- docker-compose/monitor/Makefile | 9 +++++++-- docker-compose/monitor/jaeger-v2-config.yml | 11 ++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/docker-compose/monitor/Makefile b/docker-compose/monitor/Makefile index c23fe3abf6b..fa34bc94d44 100644 --- a/docker-compose/monitor/Makefile +++ b/docker-compose/monitor/Makefile @@ -14,7 +14,12 @@ build: clean-jaeger # Note: the jaeger "dev" image can be built with "make build". .PHONY: dev dev: export JAEGER_IMAGE_TAG = dev -dev: build-v2 +dev: + docker compose -f docker-compose.yml up $(DOCKER_COMPOSE_ARGS) + +.PHONY: dev-v2 +dev-v2: export JAEGER_IMAGE_TAG = dev +dev-v2: build-v2 docker compose -f docker-compose-v2.yml up $(DOCKER_COMPOSE_ARGS) .PHONY: clean-jaeger @@ -31,7 +36,7 @@ clean-all: clean-jaeger docker rmi -f grafana/grafana:latest .PHONY: build-v2 -build: clean-jaeger +build-v2: clean-jaeger cd ../../ && make build-jaeger-linux cd ../../ && make create-baseimg PLATFORMS=linux/$(shell go env GOARCH) cd ../../ && docker buildx build --target release \ diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index d17c52fc850..7c0102da60c 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -4,7 +4,11 @@ service: traces: receivers: [otlp, jaeger, zipkin] processors: [batch] - exporters: [jaeger_storage_exporter] + exporters: [jaeger_storage_exporter, spanmetrics] + metrics/spanmetrics: + receivers: [spanmetrics] + exporters: [prometheus] + extensions: jaeger_query: @@ -15,6 +19,9 @@ extensions: memstore: max_traces: 100000 +connectors: + spanmetrics: + receivers: otlp: protocols: @@ -36,3 +43,5 @@ processors: exporters: jaeger_storage_exporter: trace_storage: memstore + prometheus: + endpoint: "0.0.0.0:8889" From e5d985041968708cdd7808db871e7555c84c0272 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Thu, 27 Jun 2024 09:52:52 +0530 Subject: [PATCH 03/60] Add integration test for SPM v2 Signed-off-by: FlamingSaint --- .github/workflows/ci-build-spm.yml | 22 ++++++++++++++++++---- scripts/spm-integration-test.sh | 30 +++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index 54095cb187f..51363b01059 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -18,6 +18,14 @@ permissions: jobs: spm: runs-on: ubuntu-latest + strategy: + matrix: + mode: + - name: v1 + binary: all-in-one + - name: v2 + binary: jaeger + steps: - name: Harden Runner uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1 @@ -40,9 +48,15 @@ jobs: uses: ./.github/actions/setup-node.js - name: Temporary - only run the build - run: - cd docker-compose/monitor && make build + run: | + case ${{ matrix.mode.version }} in + v1) + cd docker-compose/monitor && make build + ;; + v2) + cd docker-compose/monitor && make build-v2 + ;; + esac - name: Run SPM Test - run: ./scripts/spm-integration-test.sh - + run: bash scripts/spm-integration-test.sh -b ${{ matrix.mode.binary }} diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index a0270586130..7bab9375de4 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -2,7 +2,31 @@ set -euf -o pipefail +print_help() { + echo "Usage: $0 [-b binary]" + echo "-b: Which binary to build: 'all-in-one' (default) or 'jaeger' (v2)" + echo "-h: Print help" + exit 1 +} + +BINARY='all-in-one' compose_file=docker-compose/monitor/docker-compose.yml + +while getopts "b:h" opt; do + case "${opt}" in + b) + BINARY=${OPTARG} + ;; + ?) + print_help + ;; + esac +done + +if [ "$BINARY" == "jaeger" ]; then + compose_file=docker-compose/monitor/docker-compose-v2.yml +fi + timeout=300 end_time=$((SECONDS + timeout)) success="false" @@ -115,7 +139,11 @@ teardown_services() { } main() { - (cd docker-compose/monitor && make build && make dev DOCKER_COMPOSE_ARGS="-d") + if [ "$BINARY" == "jaeger" ]; then + (cd docker-compose/monitor && make build-v2 && make dev-v2 DOCKER_COMPOSE_ARGS="-d") + else + (cd docker-compose/monitor && make build && make dev DOCKER_COMPOSE_ARGS="-d") + fi wait_for_services check_spm success="true" From 1bf0ecea2f557741508a97d811b6b95962946746 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Thu, 27 Jun 2024 09:57:07 +0530 Subject: [PATCH 04/60] fix Signed-off-by: FlamingSaint --- .github/workflows/ci-build-spm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index 51363b01059..c8e3f71716a 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -49,7 +49,7 @@ jobs: - name: Temporary - only run the build run: | - case ${{ matrix.mode.version }} in + case ${{ matrix.mode.name }} in v1) cd docker-compose/monitor && make build ;; From 8ba9818e31a84ba5c89e47d13a2d18d482510556 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 05:31:26 +0530 Subject: [PATCH 05/60] Add suggested changes Signed-off-by: FlamingSaint --- docker-compose/monitor/Makefile | 3 +++ docker-compose/monitor/jaeger-v2-config.yml | 7 +------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docker-compose/monitor/Makefile b/docker-compose/monitor/Makefile index fa34bc94d44..2c4bed52c56 100644 --- a/docker-compose/monitor/Makefile +++ b/docker-compose/monitor/Makefile @@ -10,6 +10,9 @@ build: clean-jaeger --load \ cmd/all-in-one +.PHONY: build-v1 +build-v1: build + # starts up the system required for SPM using the latest otel image and a development jaeger image. # Note: the jaeger "dev" image can be built with "make build". .PHONY: dev diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index 7c0102da60c..b18e481efae 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -2,7 +2,7 @@ service: extensions: [jaeger_storage, jaeger_query] pipelines: traces: - receivers: [otlp, jaeger, zipkin] + receivers: [otlp, jaeger] processors: [batch] exporters: [jaeger_storage_exporter, spanmetrics] metrics/spanmetrics: @@ -31,11 +31,6 @@ receivers: jaeger: protocols: grpc: - thrift_binary: - thrift_compact: - thrift_http: - - zipkin: processors: batch: From 6f6168004ecceee8808e91ded4d71fe197369472 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 05:32:39 +0530 Subject: [PATCH 06/60] Add suggested changes Signed-off-by: FlamingSaint --- .github/workflows/ci-build-spm.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index c8e3f71716a..f9403d1d65b 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -48,15 +48,6 @@ jobs: uses: ./.github/actions/setup-node.js - name: Temporary - only run the build - run: | - case ${{ matrix.mode.name }} in - v1) - cd docker-compose/monitor && make build - ;; - v2) - cd docker-compose/monitor && make build-v2 - ;; - esac - + run: make build-${{ matrix.mode.name }} - name: Run SPM Test run: bash scripts/spm-integration-test.sh -b ${{ matrix.mode.binary }} From ff422242df7cc5e05661acab491626ad969445b9 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 05:37:03 +0530 Subject: [PATCH 07/60] fix CI Signed-off-by: FlamingSaint --- .github/workflows/ci-build-spm.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index f9403d1d65b..93ad3b84fa6 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -48,6 +48,7 @@ jobs: uses: ./.github/actions/setup-node.js - name: Temporary - only run the build - run: make build-${{ matrix.mode.name }} + run: cd docker-compose/monitor && make build-${{ matrix.mode.name }} + - name: Run SPM Test run: bash scripts/spm-integration-test.sh -b ${{ matrix.mode.binary }} From 0dbda146d0128872c620fac9495af5fcfbfdff34 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 06:07:16 +0530 Subject: [PATCH 08/60] Add changes Signed-off-by: FlamingSaint --- .github/workflows/ci-build-spm.yml | 2 +- Makefile | 4 ---- docker-compose/monitor/Makefile | 26 +++++++------------------- scripts/spm-integration-test.sh | 5 +++-- 4 files changed, 11 insertions(+), 26 deletions(-) diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index 93ad3b84fa6..69778332f3a 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -48,7 +48,7 @@ jobs: uses: ./.github/actions/setup-node.js - name: Temporary - only run the build - run: cd docker-compose/monitor && make build-${{ matrix.mode.name }} + run: cd docker-compose/monitor && make build BINARY = ${{ matrix.mode.binary }} - name: Run SPM Test run: bash scripts/spm-integration-test.sh -b ${{ matrix.mode.binary }} diff --git a/Makefile b/Makefile index ad3ccfbbbe7..b4d181e2e2c 100644 --- a/Makefile +++ b/Makefile @@ -257,10 +257,6 @@ rebuild-ui: build-all-in-one-linux: GOOS=linux $(MAKE) build-all-in-one -.PHONY: build-jaeger-linux -build-jaeger-linux: - GOOS=linux $(MAKE) build-jaeger - # Requires variables: $(BIN_NAME) $(BIN_PATH) $(GO_TAGS) $(DISABLE_OPTIMIZATIONS) $(SUFFIX) $(GOOS) $(GOARCH) $(BUILD_INFO) # Other targets can depend on this one but with a unique suffix to ensure it is always executed. BIN_PATH = ./cmd/$(BIN_NAME) diff --git a/docker-compose/monitor/Makefile b/docker-compose/monitor/Makefile index 2c4bed52c56..e5d53688124 100644 --- a/docker-compose/monitor/Makefile +++ b/docker-compose/monitor/Makefile @@ -1,17 +1,16 @@ +BINARY ?= all-in-one # Default value uses v1 binary + .PHONY: build build: clean-jaeger - cd ../../ && make build-all-in-one-linux + cd ../../ && make build-$(BINARY) GOOS=linux cd ../../ && make create-baseimg PLATFORMS=linux/$(shell go env GOARCH) cd ../../ && docker buildx build --target release \ - --tag jaegertracing/all-in-one:dev \ + --tag jaegertracing/$(BINARY):dev \ --build-arg base_image=localhost:5000/baseimg_alpine:latest \ --build-arg debug_image=not-used \ --build-arg TARGETARCH=$(shell go env GOARCH) \ --load \ - cmd/all-in-one - -.PHONY: build-v1 -build-v1: build + cmd/$(BINARY) # starts up the system required for SPM using the latest otel image and a development jaeger image. # Note: the jaeger "dev" image can be built with "make build". @@ -22,7 +21,8 @@ dev: .PHONY: dev-v2 dev-v2: export JAEGER_IMAGE_TAG = dev -dev-v2: build-v2 +dev-v2: export BINARY = jaeger +dev-v2: build docker compose -f docker-compose-v2.yml up $(DOCKER_COMPOSE_ARGS) .PHONY: clean-jaeger @@ -37,15 +37,3 @@ clean-all: clean-jaeger docker rmi -f otel/opentelemetry-collector-contrib:latest ; \ docker rmi -f prom/prometheus:latest ; \ docker rmi -f grafana/grafana:latest - -.PHONY: build-v2 -build-v2: clean-jaeger - cd ../../ && make build-jaeger-linux - cd ../../ && make create-baseimg PLATFORMS=linux/$(shell go env GOARCH) - cd ../../ && docker buildx build --target release \ - --tag jaegertracing/jaeger:dev \ - --build-arg base_image=localhost:5000/baseimg_alpine:latest \ - --build-arg debug_image=not-used \ - --build-arg TARGETARCH=$(shell go env GOARCH) \ - --load \ - cmd/jaeger diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 7bab9375de4..368c3a0cb62 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -139,10 +139,11 @@ teardown_services() { } main() { + (cd docker-compose/monitor && make build BINARY=$BINARY) if [ "$BINARY" == "jaeger" ]; then - (cd docker-compose/monitor && make build-v2 && make dev-v2 DOCKER_COMPOSE_ARGS="-d") + (make dev-v2 DOCKER_COMPOSE_ARGS="-d") else - (cd docker-compose/monitor && make build && make dev DOCKER_COMPOSE_ARGS="-d") + (make dev DOCKER_COMPOSE_ARGS="-d") fi wait_for_services check_spm From 591fda9b5f66335ab1de5eebee142904f9d9fd1e Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 06:10:34 +0530 Subject: [PATCH 09/60] fix Signed-off-by: FlamingSaint --- .github/workflows/ci-build-spm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index 69778332f3a..83938a942b3 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -48,7 +48,7 @@ jobs: uses: ./.github/actions/setup-node.js - name: Temporary - only run the build - run: cd docker-compose/monitor && make build BINARY = ${{ matrix.mode.binary }} + run: cd docker-compose/monitor && make build BINARY=${{ matrix.mode.binary }} - name: Run SPM Test run: bash scripts/spm-integration-test.sh -b ${{ matrix.mode.binary }} From 31ffea58a5e41ea0e28c960df21e6af4065a43f0 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 06:12:02 +0530 Subject: [PATCH 10/60] Add quotes Signed-off-by: FlamingSaint --- scripts/spm-integration-test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 368c3a0cb62..052c890754c 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -139,7 +139,7 @@ teardown_services() { } main() { - (cd docker-compose/monitor && make build BINARY=$BINARY) + (cd docker-compose/monitor && make build BINARY="$BINARY") if [ "$BINARY" == "jaeger" ]; then (make dev-v2 DOCKER_COMPOSE_ARGS="-d") else From ea0d5ec85d81e29a53c07e4c39c40cc24e89065b Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 06:21:58 +0530 Subject: [PATCH 11/60] Fix CI Signed-off-by: FlamingSaint --- scripts/spm-integration-test.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 052c890754c..b87b7a6a32f 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -139,12 +139,11 @@ teardown_services() { } main() { - (cd docker-compose/monitor && make build BINARY="$BINARY") if [ "$BINARY" == "jaeger" ]; then - (make dev-v2 DOCKER_COMPOSE_ARGS="-d") + (cd docker-compose/monitor && make build BINARY="$BINARY" && make dev-v2 DOCKER_COMPOSE_ARGS="-d") else - (make dev DOCKER_COMPOSE_ARGS="-d") - fi + (cd docker-compose/monitor && make build BINARY="$BINARY" && make dev DOCKER_COMPOSE_ARGS="-d") + fi wait_for_services check_spm success="true" From fb4b0ceb1e658b49b7712b91ec5a6f26d54b877d Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Fri, 28 Jun 2024 10:51:24 +0530 Subject: [PATCH 12/60] Add prometheusexporter to components.go Signed-off-by: FlamingSaint --- .github/workflows/ci-build-spm.yml | 3 --- cmd/jaeger/internal/components.go | 2 ++ go.mod | 6 ++++++ go.sum | 6 ++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index 83938a942b3..1629f612323 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -46,9 +46,6 @@ jobs: - name: Setup Node.js version uses: ./.github/actions/setup-node.js - - - name: Temporary - only run the build - run: cd docker-compose/monitor && make build BINARY=${{ matrix.mode.binary }} - name: Run SPM Test run: bash scripts/spm-integration-test.sh -b ${{ matrix.mode.binary }} diff --git a/cmd/jaeger/internal/components.go b/cmd/jaeger/internal/components.go index c7b9957dbd8..f187e731c07 100644 --- a/cmd/jaeger/internal/components.go +++ b/cmd/jaeger/internal/components.go @@ -6,6 +6,7 @@ package internal import ( "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter" + "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver" @@ -88,6 +89,7 @@ func (b builders) build() (otelcol.Factories, error) { // add-ons storageexporter.NewFactory(), // generic exporter to Jaeger v1 spanstore.SpanWriter kafkaexporter.NewFactory(), + prometheusexporter.NewFactory(), // elasticsearch.NewFactory(), ) if err != nil { diff --git a/go.mod b/go.mod index ad372ada143..e81c160b749 100644 --- a/go.mod +++ b/go.mod @@ -87,6 +87,11 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) +require ( + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0 // indirect +) + require ( github.com/IBM/sarama v1.43.2 // indirect github.com/aws/aws-sdk-go v1.53.11 // indirect @@ -147,6 +152,7 @@ require ( github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/onsi/ginkgo v1.16.5 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.103.0 // indirect diff --git a/go.sum b/go.sum index 553703b8505..a5146a74784 100644 --- a/go.sum +++ b/go.sum @@ -258,6 +258,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsc github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.103.0/go.mod h1:5bCbYY4xRBBIwzUOdBcezz6iff7+LtPNZBYYxk+cFro= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.103.0 h1:N4+Kxr4WZ4HNuU334NaqAAjngG/IRkSTGCl9c5H+QY0= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.103.0/go.mod h1:3rtBpjlTpg3s+bXPNM/7o7IQZQYtwytrz9PEF+ISz8E= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0 h1:NQCp4YFDJz5rqJ3PuecRVFIfqcZaZUacqaiSnPOyHGQ= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0/go.mod h1:8v8Pn7bLxFrWmer685QqLNe4f86fPIAsb+1rr2bahco= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.103.0 h1:txNSkgEEmDyrasuGO9egQ+58i+7P/mJKdHmSHg0sO4c= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.103.0/go.mod h1:XtRqfouM/9owDyCIi2TksmSc1sfLGmLRiFhyQ7KFS6w= github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.103.0 h1:olbjLOuCgVCiRNzdg0I9Lv7VuUHFbEuqP31fdriyqi0= @@ -272,10 +274,14 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.103.0/go.mod h1:hmeKPJaZjzOjcndDxpWnjt0781EMqvj3or01baNVoRI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.103.0 h1:1cZyMMLSpSWFdfITyVc9Bb+8rn175/GGwtWZQ3nClpc= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.103.0/go.mod h1:o8BPP4DM2SkdkPJxJOdmgxKz5DftGcuyUXgqf5MoWAw= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 h1:imXTMt9ravkIqcvvow0ya3aQh64OOiQpMOyWeG/SLDQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0/go.mod h1:DR/fbOxaIyobmsd8nbDzuwqwwSNX9+yONDWx8dF2qS4= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.103.0 h1:GiP0syg12+MrI5IpL8Qt+rQktWDMsP0/8Nu9qmMtscw= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.103.0/go.mod h1:akYmkj+fLA32/LkQTJM9KIqaOvtsyjLV1NZkFU1E6w8= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.103.0 h1:diJ27fBrfu/oOW0bv8q3BWbVmjNLMBJF2RgzSq6KRgI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.103.0/go.mod h1:u8Ell52AGRzNA5RjfaunzYQWBb+7tKb3ZlAQJyQzNXM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0 h1:mZbM5uIvfL4/Q0i9xKYps8AYe37MhwJJpk1Ojz9m6mw= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0/go.mod h1:+WiRcWZOrXV3B5Qk0KlF5Tm7BopRvLpoPYqTrt4iA7s= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.103.0 h1:2Fxuu4RbroXQFpUB/ZuZXyUb4QoL8XgOe7KlkK3TxHU= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.103.0/go.mod h1:o3ju9lTtG+PnSjffls/sEGvgfYMG1jZZeT1h0rzI+T4= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.103.0 h1:Hblr03Vde7jlnAsLSayhq1VG+gpTfVJNVvZqnx0fwDY= From 6f4259150534feb7f15f99450f0d34550e6b0316 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 3 Jul 2024 15:44:03 +0530 Subject: [PATCH 13/60] fix conflicts Signed-off-by: FlamingSaint --- go.sum | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/go.sum b/go.sum index ae3a62df84b..e8b66484ea4 100644 --- a/go.sum +++ b/go.sum @@ -258,6 +258,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsc github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.104.0/go.mod h1:MfSM6mt9qH3vHCaj2rlX6IY/7fN+zCLzNJC25XG9rNU= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0 h1:xDA/V4cZ4LXj70la1uzvGaX/xfzeGIEq3txhF7W6TAg= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0/go.mod h1:BxDMJl5xzSbCwcuVFs9jIrBwc1sflBVdihNJxcEKkOE= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0 h1:NQCp4YFDJz5rqJ3PuecRVFIfqcZaZUacqaiSnPOyHGQ= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0/go.mod h1:8v8Pn7bLxFrWmer685QqLNe4f86fPIAsb+1rr2bahco= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0 h1:VD2R4q2XziQCJIAsQG2qhlSKyDoT9XaTR2LNkJHs2C0= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0/go.mod h1:sOdPmcOeSXXqZeBflu3Oa+0aWFL8QkAKpr/X1txJYSs= github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.104.0 h1:4ke4j/y7AQnRAyYveB+KGcdjVYEKVrwTxc3BDHagdd0= @@ -272,10 +274,14 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.104.0/go.mod h1:tImy4FWNu1qpaXRVaNi2BU+TmZHtYgLO6LbB6mspZio= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0 h1:Pl4rXXpRG/xJuNWUS3I/w1jViHcrssMf47bGX/Ug/KY= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0/go.mod h1:tP4dyc5+g/qoXYb8lmNj+y+Nhphn4MkL23/np0Zhx2g= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 h1:imXTMt9ravkIqcvvow0ya3aQh64OOiQpMOyWeG/SLDQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0/go.mod h1:DR/fbOxaIyobmsd8nbDzuwqwwSNX9+yONDWx8dF2qS4= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0 h1:V58XfkZBVuOcNL/+US/ZnG8mVy5AbVHV49mGDIgIMo8= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0/go.mod h1:HpEqZW6TOsujFvvOSkcCFj7N2NEW4LP/Q6X7/ryfSnA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0 h1:3joQv7QiLvsVfrpqYAxHvq3bKUaUEpgg93fMLW+TU2w= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0/go.mod h1:aUAgxXQQPiSajwMXQv4LobDTc16ezeF9S1Xh53yHbOg= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0 h1:mZbM5uIvfL4/Q0i9xKYps8AYe37MhwJJpk1Ojz9m6mw= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0/go.mod h1:+WiRcWZOrXV3B5Qk0KlF5Tm7BopRvLpoPYqTrt4iA7s= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0 h1:oIYYjBh2kNi7APSArA/9YCQzLwOlMdUhqMxUoMoTChY= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0/go.mod h1:hRayDDoU1e1POXuDO7RpwcqIirFJoCdSgHgICY0hNNI= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.104.0 h1:9HJ3ejNoiMFWxTRy9gobdurEocf79QlxwlYrOY9tMIQ= From 0cb5f7afb7b17f7a91bd42ba0e1ecc3b21b9a269 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 3 Jul 2024 19:14:19 +0530 Subject: [PATCH 14/60] Use microsim v0.4.1 in docker-compose-v2.yml Signed-off-by: FlamingSaint --- docker-compose/monitor/docker-compose-v2.yml | 9 +++++---- docker-compose/monitor/jaeger-v2-config.yml | 13 +++++++------ go.mod | 6 +++--- go.sum | 6 ++++++ 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/docker-compose/monitor/docker-compose-v2.yml b/docker-compose/monitor/docker-compose-v2.yml index 7c1483725fa..2e6c14e917f 100644 --- a/docker-compose/monitor/docker-compose-v2.yml +++ b/docker-compose/monitor/docker-compose-v2.yml @@ -18,13 +18,14 @@ services: - PROMETHEUS_QUERY_NORMALIZE_DURATION=true ports: - "16686:16686" - - "14278:14278" microsim: networks: - backend - image: yurishkuro/microsim:0.3.0 - # TODO: Fix error - dial tcp [::1]:14278: connect: connection refused - command: "-j http://localhost:14278/api/traces -d 24h -s 500ms" + image: yurishkuro/microsim:v0.4.1 + command: "-d 24h -s 500ms" + environment: + - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://jaeger:4318/v1/traces + - OTEL_EXPORTER_OTLP_INSECURE=true depends_on: - jaeger prometheus: diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index b18e481efae..901c95092c8 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -12,12 +12,13 @@ service: extensions: jaeger_query: - trace_storage: memstore + trace_storage: some_storage jaeger_storage: - memory: - memstore: - max_traces: 100000 + backends: + some_storage: + memory: + max_traces: 100000 connectors: spanmetrics: @@ -27,7 +28,7 @@ receivers: protocols: grpc: http: - + endpoint: "0.0.0.0:4318" jaeger: protocols: grpc: @@ -37,6 +38,6 @@ processors: exporters: jaeger_storage_exporter: - trace_storage: memstore + trace_storage: some_storage prometheus: endpoint: "0.0.0.0:8889" diff --git a/go.mod b/go.mod index a0a7fb5a245..757eb268a25 100644 --- a/go.mod +++ b/go.mod @@ -91,8 +91,8 @@ require ( ) require ( - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0 // indirect ) require ( @@ -155,7 +155,7 @@ require ( github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/onsi/ginkgo v1.16.5 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.104.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.104.0 // indirect diff --git a/go.sum b/go.sum index e8b66484ea4..d97865463e9 100644 --- a/go.sum +++ b/go.sum @@ -260,6 +260,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0/go.mod h1:BxDMJl5xzSbCwcuVFs9jIrBwc1sflBVdihNJxcEKkOE= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0 h1:NQCp4YFDJz5rqJ3PuecRVFIfqcZaZUacqaiSnPOyHGQ= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0/go.mod h1:8v8Pn7bLxFrWmer685QqLNe4f86fPIAsb+1rr2bahco= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0 h1:wYyuqDy0m//cH6pi9W2QKtxDyROzCrcQrRZ8efoW8qo= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0/go.mod h1:OkI4zQzqxqBvpgeXyl4bYEJ+hLtQ14jryeDraVXD4zA= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0 h1:VD2R4q2XziQCJIAsQG2qhlSKyDoT9XaTR2LNkJHs2C0= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0/go.mod h1:sOdPmcOeSXXqZeBflu3Oa+0aWFL8QkAKpr/X1txJYSs= github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.104.0 h1:4ke4j/y7AQnRAyYveB+KGcdjVYEKVrwTxc3BDHagdd0= @@ -276,12 +278,16 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0/go.mod h1:tP4dyc5+g/qoXYb8lmNj+y+Nhphn4MkL23/np0Zhx2g= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 h1:imXTMt9ravkIqcvvow0ya3aQh64OOiQpMOyWeG/SLDQ= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0/go.mod h1:DR/fbOxaIyobmsd8nbDzuwqwwSNX9+yONDWx8dF2qS4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0 h1:dNDjrDhJmSv2JoK3n2hX/nyf/twTTnLuvAhQTMHGQ5M= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0/go.mod h1:SyCZC+vcI2lnyb7iqH0/6dGgCihuqtCxGmLaZToxSHk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0 h1:V58XfkZBVuOcNL/+US/ZnG8mVy5AbVHV49mGDIgIMo8= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0/go.mod h1:HpEqZW6TOsujFvvOSkcCFj7N2NEW4LP/Q6X7/ryfSnA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0 h1:3joQv7QiLvsVfrpqYAxHvq3bKUaUEpgg93fMLW+TU2w= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0/go.mod h1:aUAgxXQQPiSajwMXQv4LobDTc16ezeF9S1Xh53yHbOg= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0 h1:mZbM5uIvfL4/Q0i9xKYps8AYe37MhwJJpk1Ojz9m6mw= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0/go.mod h1:+WiRcWZOrXV3B5Qk0KlF5Tm7BopRvLpoPYqTrt4iA7s= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0 h1:eCceBGaatwEKLiOzYjrYc4zNSMMfb+5Of9VNUnTYU80= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0/go.mod h1:/mkH8dlZxnFRoccQoXkN/XOP6Q7G/1F8XTUO9+xZw7U= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0 h1:oIYYjBh2kNi7APSArA/9YCQzLwOlMdUhqMxUoMoTChY= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0/go.mod h1:hRayDDoU1e1POXuDO7RpwcqIirFJoCdSgHgICY0hNNI= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.104.0 h1:9HJ3ejNoiMFWxTRy9gobdurEocf79QlxwlYrOY9tMIQ= From 91987df0026e178af4d42459f36229639b234028 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 3 Jul 2024 22:00:26 +0530 Subject: [PATCH 15/60] Added suggested changes and ran go mod tidy Signed-off-by: FlamingSaint --- docker-compose/monitor/docker-compose-v2.yml | 1 - docker-compose/monitor/jaeger-v2-config.yml | 7 +- go.mod | 9 +- go.sum | 172 ++++++++++++++++++- 4 files changed, 171 insertions(+), 18 deletions(-) diff --git a/docker-compose/monitor/docker-compose-v2.yml b/docker-compose/monitor/docker-compose-v2.yml index 2e6c14e917f..e1b2ea23d34 100644 --- a/docker-compose/monitor/docker-compose-v2.yml +++ b/docker-compose/monitor/docker-compose-v2.yml @@ -25,7 +25,6 @@ services: command: "-d 24h -s 500ms" environment: - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://jaeger:4318/v1/traces - - OTEL_EXPORTER_OTLP_INSECURE=true depends_on: - jaeger prometheus: diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index 901c95092c8..1c8c7aa3c54 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -2,7 +2,7 @@ service: extensions: [jaeger_storage, jaeger_query] pipelines: traces: - receivers: [otlp, jaeger] + receivers: [otlp] processors: [batch] exporters: [jaeger_storage_exporter, spanmetrics] metrics/spanmetrics: @@ -28,10 +28,7 @@ receivers: protocols: grpc: http: - endpoint: "0.0.0.0:4318" - jaeger: - protocols: - grpc: + # endpoint: "0.0.0.0:4318" processors: batch: diff --git a/go.mod b/go.mod index 757eb268a25..711d84f11a6 100644 --- a/go.mod +++ b/go.mod @@ -25,6 +25,7 @@ require ( github.com/olivere/elastic v6.2.37+incompatible github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.104.0 @@ -90,11 +91,6 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) -require ( - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0 // indirect -) - require ( github.com/IBM/sarama v1.43.2 // indirect github.com/aws/aws-sdk-go v1.53.11 // indirect @@ -155,14 +151,15 @@ require ( github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/onsi/ginkgo v1.16.5 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.104.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.104.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.104.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.104.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/openzipkin/zipkin-go v0.4.3 // indirect diff --git a/go.sum b/go.sum index d97865463e9..93a388b295b 100644 --- a/go.sum +++ b/go.sum @@ -1,18 +1,42 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.5.0 h1:MxA59PGoCFb+vCwRQi3PhQEwHj4+r2dhuv9HG+vM7iM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.5.0/go.mod h1:uYt4CfhkJA9o0FN7jfE5minm/i4nUE4MjGUJkzB6Zs8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 h1:bXwSugBiSbgtz7rOtbfGf+woewp4f06orW9OP5BjHLA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0/go.mod h1:Y/HgrePTmGy9HjdSGTqZNa+apUpTVIEVKXJyARP2lrk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= 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/Code-Hex/go-generics-cache v1.3.1 h1:i8rLwyhoyhaerr7JpjtYjJZUcCbWOdiYO3fZXLiEC4g= +github.com/Code-Hex/go-generics-cache v1.3.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/IBM/sarama v1.43.2 h1:HABeEqRUh32z8yzY2hGB/j8mHSzC/HA9zlEjqFNCzSw= github.com/IBM/sarama v1.43.2/go.mod h1:Kyo4WkF24Z+1nz7xeVUFWIuKVV8RS3wM8mkvPKMdXFQ= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Shopify/sarama v1.33.0 h1:2K4mB9M4fo46sAM7t6QTsmSO8dLX1OqznLM7vn3OjZ8= github.com/Shopify/sarama v1.33.0/go.mod h1:lYO7LwEBkE0iAeTl94UfPSrDaavFzSFlmn+5isARATQ= github.com/Shopify/toxiproxy/v2 v2.3.0 h1:62YkpiP4bzdhKMH+6uC5E95y608k3zDwdzuBMsnn3uQ= github.com/Shopify/toxiproxy/v2 v2.3.0/go.mod h1:KvQTtB6RjCJY4zqNJn7C7JDFgsG5uoHYDirfUfpIm0c= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9 h1:ez/4by2iGztzR4L0zgAOR8lTQK9VlyBVVd7G4omaOQs= +github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/apache/thrift v0.20.0 h1:631+KvYbsBZxmuJjYwhezVsrfc/TbqtZV4QcxOX1fOI= github.com/apache/thrift v0.20.0/go.mod h1:hOk1BQqcp2OLzGsyVXdfMk7YFlMxK3aoEVhjD06QhB8= +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/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.53.11 h1:KcmduYvX15rRqt4ZU/7jKkmDxU/G87LJ9MUI0yQJh00= @@ -33,6 +57,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= 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.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -43,12 +69,24 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= +github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/digitalocean/godo v1.109.0 h1:4W97RJLJSUQ3veRZDNbp1Ol3Rbn6Lmt9bKGvfqYI5SU= +github.com/digitalocean/godo v1.109.0/go.mod h1:R6EmmWI8CT1+fCtjWY9UCB+L5uufuZH13wk3YhxycCs= +github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= +github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE= +github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -63,10 +101,18 @@ github.com/elastic/elastic-transport-go/v8 v8.6.0 h1:Y2S/FBjx1LlCv5m6pWAF2kDJAHo github.com/elastic/elastic-transport-go/v8 v8.6.0/go.mod h1:YLHer5cj0csTzNFXoNQ8qhtGY1GTvSqPnKWKaqQE3Hk= github.com/elastic/go-elasticsearch/v8 v8.14.0 h1:1ywU8WFReLLcxE1WJqii3hTtbPUE2hc38ZK/j4mMFow= github.com/elastic/go-elasticsearch/v8 v8.14.0/go.mod h1:WRvnlGkSuZyp83M2U8El/LGXpCjYLrvlkSgkAH4O5I4= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/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= +github.com/envoyproxy/go-control-plane v0.12.0 h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjletLK6K0rbxyZI= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -80,6 +126,10 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +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 v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -89,15 +139,27 @@ github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= 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.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= +github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= +github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= +github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= +github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE= +github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE= +github.com/go-resty/resty/v2 v2.12.0 h1:rsVL8P90LFvkUYq/V5BTVe203WfRIU4gvcf+yfzJzGA= +github.com/go-resty/resty/v2 v2.12.0/go.mod h1:o0yGPrkS3lOe1+eFajk6kBW8ScXzwU3hD69/gt2yB/0= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +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/gocql/gocql v1.6.0 h1:IdFdOTbnpbd0pDhl4REKQDM+Q0SzKXQ1Yh+YZZ8T/qU= github.com/gocql/gocql v1.6.0/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= 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.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= @@ -123,6 +185,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= 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= @@ -134,10 +198,22 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= +github.com/gophercloud/gophercloud v1.8.0 h1:TM3Jawprb2NrdOnvcHhWJalmKmAmOGgfZElM/3oBYCk= +github.com/gophercloud/gophercloud v1.8.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= @@ -145,17 +221,35 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +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-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= +github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= +github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= +github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= +github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +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.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= +github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -167,9 +261,19 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= 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/nomad/api v0.0.0-20240306004928-3e7191ccb702 h1:fI1LXuBaS1d9z1kmb++Og6YD8uMRwadXorCwE+xgOFA= +github.com/hashicorp/nomad/api v0.0.0-20240306004928-3e7191ccb702/go.mod h1:z71gkJdrkAt/Rl6C7Q79VE7AwJ5lUF+M+fzFTyIHYB0= +github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= +github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/hetznercloud/hcloud-go/v2 v2.6.0 h1:RJOA2hHZ7rD1pScA4O1NF6qhkHyUdbbxjHgFNot8928= +github.com/hetznercloud/hcloud-go/v2 v2.6.0/go.mod h1:4J1cSE57+g0WS93IiHLV7ubTHItcp+awzeBp5bM9mfA= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/ionos-cloud/sdk-go/v6 v6.1.11 h1:J/uRN4UWO3wCyGOeDdMKv8LWRzKu6UIkLEaes38Kzh8= +github.com/ionos-cloud/sdk-go/v6 v6.1.11/go.mod h1:EzEgRIDxBELvfoa/uBN0kOQaqovLjUWEB7iW4/Q+t4k= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= @@ -206,6 +310,8 @@ github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPgh github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= github.com/knadh/koanf/v2 v2.1.1/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= +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/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= @@ -215,16 +321,30 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= 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/linode/linodego v1.33.0 h1:cX2FYry7r6CA1ujBMsdqiM4VhvIQtnWsOuVblzfBhCw= +github.com/linode/linodego v1.33.0/go.mod h1:dSJJgIwqZCF5wnpuC6w5cyIbRtcexAm7uVvuJopGB40= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c h1:VtwQ41oftZwlMnOEbMWQtSEUgU64U4s+GHk7hZK+jtY= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= 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.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +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-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= +github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= +github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= @@ -258,8 +378,6 @@ github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsc github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.104.0/go.mod h1:MfSM6mt9qH3vHCaj2rlX6IY/7fN+zCLzNJC25XG9rNU= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0 h1:xDA/V4cZ4LXj70la1uzvGaX/xfzeGIEq3txhF7W6TAg= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0/go.mod h1:BxDMJl5xzSbCwcuVFs9jIrBwc1sflBVdihNJxcEKkOE= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0 h1:NQCp4YFDJz5rqJ3PuecRVFIfqcZaZUacqaiSnPOyHGQ= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.103.0/go.mod h1:8v8Pn7bLxFrWmer685QqLNe4f86fPIAsb+1rr2bahco= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0 h1:wYyuqDy0m//cH6pi9W2QKtxDyROzCrcQrRZ8efoW8qo= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0/go.mod h1:OkI4zQzqxqBvpgeXyl4bYEJ+hLtQ14jryeDraVXD4zA= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0 h1:VD2R4q2XziQCJIAsQG2qhlSKyDoT9XaTR2LNkJHs2C0= @@ -276,16 +394,12 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.104.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.104.0/go.mod h1:tImy4FWNu1qpaXRVaNi2BU+TmZHtYgLO6LbB6mspZio= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0 h1:Pl4rXXpRG/xJuNWUS3I/w1jViHcrssMf47bGX/Ug/KY= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0/go.mod h1:tP4dyc5+g/qoXYb8lmNj+y+Nhphn4MkL23/np0Zhx2g= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 h1:imXTMt9ravkIqcvvow0ya3aQh64OOiQpMOyWeG/SLDQ= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0/go.mod h1:DR/fbOxaIyobmsd8nbDzuwqwwSNX9+yONDWx8dF2qS4= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0 h1:dNDjrDhJmSv2JoK3n2hX/nyf/twTTnLuvAhQTMHGQ5M= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0/go.mod h1:SyCZC+vcI2lnyb7iqH0/6dGgCihuqtCxGmLaZToxSHk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0 h1:V58XfkZBVuOcNL/+US/ZnG8mVy5AbVHV49mGDIgIMo8= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0/go.mod h1:HpEqZW6TOsujFvvOSkcCFj7N2NEW4LP/Q6X7/ryfSnA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0 h1:3joQv7QiLvsVfrpqYAxHvq3bKUaUEpgg93fMLW+TU2w= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0/go.mod h1:aUAgxXQQPiSajwMXQv4LobDTc16ezeF9S1Xh53yHbOg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0 h1:mZbM5uIvfL4/Q0i9xKYps8AYe37MhwJJpk1Ojz9m6mw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0/go.mod h1:+WiRcWZOrXV3B5Qk0KlF5Tm7BopRvLpoPYqTrt4iA7s= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0 h1:eCceBGaatwEKLiOzYjrYc4zNSMMfb+5Of9VNUnTYU80= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0/go.mod h1:/mkH8dlZxnFRoccQoXkN/XOP6Q7G/1F8XTUO9+xZw7U= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0 h1:oIYYjBh2kNi7APSArA/9YCQzLwOlMdUhqMxUoMoTChY= @@ -294,18 +408,28 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceive github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.104.0/go.mod h1:Ax4DroNn/xKyjWoJCd3FQE9xOZqHSTdDEj1I3HLNOeQ= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.104.0 h1:sE+B+i3m9sMecnJZkljnUrykzkRkEFvXJWPckwbQOVc= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.104.0/go.mod h1:cyzp/19NsVmEz7mTS/LHf2m8e26MnlGK8x1kga3rX9I= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.104.0 h1:Nwkj5EFH90NxWPcl4qeef5AX+A1COWn1Xy1mkzuyIHE= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.104.0/go.mod h1:NJwlpVFJu2Dd1mEqCHzSXSNmd5JDhWGVDqo1Oi3RZKk= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.104.0 h1:U04Ezl3Keb1j6bcVktvgvAbbMEyPDkM5sNboQgPYI1w= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.104.0/go.mod h1:GbpsurP8UERCcHyIB/gUMKcAK3kIypKGE0O+aqbNa/c= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.4.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg= github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c= +github.com/ovh/go-ovh v1.4.3 h1:Gs3V823zwTFpzgGLZNI6ILS4rmxZgJwJCz54Er9LwD0= +github.com/ovh/go-ovh v1.4.3/go.mod h1:AkPXVtgwB6xlKblMjRKJJmjRp+ogrE7fz2lVgcQY8SY= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -323,8 +447,12 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +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.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/prometheus v0.51.2-0.20240405174432-b4a973753c6e h1:UmqAuY2OyDoog8+l5FybViJE5B2r+UxVGCUwFTsY5AA= +github.com/prometheus/prometheus v0.51.2-0.20240405174432-b4a973753c6e/go.mod h1:+0ld+ozir7zWFcHA2vVpWAKxXakIioEjPPNOqH+J3ZA= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/relvacode/iso8601 v1.4.0 h1:GsInVSEJfkYuirYFxa80nMLbH2aydgZpIf52gYZXUJs= @@ -342,6 +470,8 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.25 h1:/8rfZAdFfafRXOgz+ZpMZZWZ5pYggCY9t7e/BvjaBHM= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.25/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/shirou/gopsutil/v4 v4.24.5 h1:gGsArG5K6vmsh5hcFOHaPm87UD003CaDMkAOweSQjhM= github.com/shirou/gopsutil/v4 v4.24.5/go.mod h1:aoebb2vxetJ/yIDZISmduFvVNPHqXQ9SEJwRXxkf0RA= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -394,6 +524,8 @@ github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMW github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +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= 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.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= @@ -572,6 +704,8 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -633,6 +767,8 @@ golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -641,6 +777,8 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 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= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -654,6 +792,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -664,6 +804,8 @@ gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= 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= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -717,4 +859,22 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= +k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= +k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= +k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= +k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= +k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= +k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +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.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From 43b2e729c05f7f90faf36149ff8df635db159870 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 3 Jul 2024 22:16:41 +0530 Subject: [PATCH 16/60] Add back the endpoint Signed-off-by: FlamingSaint --- docker-compose/monitor/jaeger-v2-config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index 1c8c7aa3c54..618b7339d27 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -28,7 +28,7 @@ receivers: protocols: grpc: http: - # endpoint: "0.0.0.0:4318" + endpoint: "0.0.0.0:4318" processors: batch: From 4ba0ad0caaa42ab50c16e1681a33ac56e4013f61 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 7 Jul 2024 01:11:39 +0530 Subject: [PATCH 17/60] Add config for metrics_storage Signed-off-by: FlamingSaint --- .../exporters/storageexporter/config.go | 3 ++- .../internal/extension/jaegerquery/config.go | 1 + .../internal/extension/jaegerstorage/config.go | 2 ++ docker-compose/monitor/docker-compose-v2.yml | 17 +++++++++-------- docker-compose/monitor/jaeger-v2-config.yml | 4 +++- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/cmd/jaeger/internal/exporters/storageexporter/config.go b/cmd/jaeger/internal/exporters/storageexporter/config.go index c6b171ecba7..25a2ba15245 100644 --- a/cmd/jaeger/internal/exporters/storageexporter/config.go +++ b/cmd/jaeger/internal/exporters/storageexporter/config.go @@ -15,7 +15,8 @@ var ( // Config defines configuration for jaeger_storage_exporter. type Config struct { - TraceStorage string `valid:"required" mapstructure:"trace_storage"` + TraceStorage string `valid:"required" mapstructure:"trace_storage"` + MetricsStorage string `valid:"required" mapstructure:"metrics_storage"` } func (cfg *Config) Validate() error { diff --git a/cmd/jaeger/internal/extension/jaegerquery/config.go b/cmd/jaeger/internal/extension/jaegerquery/config.go index e5640c2710b..64395342e1c 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/config.go +++ b/cmd/jaeger/internal/extension/jaegerquery/config.go @@ -20,6 +20,7 @@ type Config struct { TraceStoragePrimary string `valid:"required" mapstructure:"trace_storage"` TraceStorageArchive string `valid:"optional" mapstructure:"trace_storage_archive"` + MetricsStorage string `valid:"optional" mapstructure:"metrics_storage"` confighttp.ServerConfig `mapstructure:",squash"` Tenancy tenancy.Options `mapstructure:"multi_tenancy"` } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index 42d4630d29d..27475a4b5e6 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -13,6 +13,7 @@ import ( casCfg "github.com/jaegertracing/jaeger/pkg/cassandra/config" esCfg "github.com/jaegertracing/jaeger/pkg/es/config" + promCfg "github.com/jaegertracing/jaeger/pkg/prometheus/config" "github.com/jaegertracing/jaeger/plugin/storage/badger" "github.com/jaegertracing/jaeger/plugin/storage/cassandra" "github.com/jaegertracing/jaeger/plugin/storage/es" @@ -41,6 +42,7 @@ type Backend struct { Cassandra *cassandra.Options `mapstructure:"cassandra"` Elasticsearch *esCfg.Configuration `mapstructure:"elasticsearch"` Opensearch *esCfg.Configuration `mapstructure:"opensearch"` + Prometheus *promCfg.Configuration `mapstructure:"prometheus"` } // Unmarshal implements confmap.Unmarshaler. This allows us to provide diff --git a/docker-compose/monitor/docker-compose-v2.yml b/docker-compose/monitor/docker-compose-v2.yml index e1b2ea23d34..060f37d9efb 100644 --- a/docker-compose/monitor/docker-compose-v2.yml +++ b/docker-compose/monitor/docker-compose-v2.yml @@ -8,14 +8,15 @@ services: - "./jaeger-ui.json:/etc/jaeger/jaeger-ui.json" # Do we need this for v2 ? Seems to be running without this. - "./jaeger-v2-config.yml:/etc/jaeger/jaeger-v2-config.yml" command: ["--config", "/etc/jaeger/jaeger-v2-config.yml"] - environment: - - METRICS_STORAGE_TYPE=prometheus - - PROMETHEUS_SERVER_URL=http://prometheus:9090 - # - PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR=${PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR:-true} - - PROMETHEUS_QUERY_NAMESPACE=${PROMETHEUS_QUERY_NAMESPACE:-} - - PROMETHEUS_QUERY_DURATION_UNIT=${PROMETHEUS_QUERY_DURATION_UNIT:-} - - PROMETHEUS_QUERY_NORMALIZE_CALLS=true - - PROMETHEUS_QUERY_NORMALIZE_DURATION=true + # TODO: Need to pass this through config + # environment: + # - METRICS_STORAGE_TYPE=prometheus + # - PROMETHEUS_SERVER_URL=http://prometheus:9090 + # # - PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR=${PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR:-true} + # - PROMETHEUS_QUERY_NAMESPACE=${PROMETHEUS_QUERY_NAMESPACE:-} + # - PROMETHEUS_QUERY_DURATION_UNIT=${PROMETHEUS_QUERY_DURATION_UNIT:-} + # - PROMETHEUS_QUERY_NORMALIZE_CALLS=true + # - PROMETHEUS_QUERY_NORMALIZE_DURATION=true ports: - "16686:16686" microsim: diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index 618b7339d27..e5bf1f09024 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -13,12 +13,13 @@ service: extensions: jaeger_query: trace_storage: some_storage - + metrics_storage: prometheus jaeger_storage: backends: some_storage: memory: max_traces: 100000 + prometheus: connectors: spanmetrics: @@ -36,5 +37,6 @@ processors: exporters: jaeger_storage_exporter: trace_storage: some_storage + metrics_storage: prometheus prometheus: endpoint: "0.0.0.0:8889" From 5675055fc5bee0c070fb04a29a25fbbe68779a29 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 7 Jul 2024 01:37:22 +0530 Subject: [PATCH 18/60] Separate TracesBackend and MetricsBackend Signed-off-by: FlamingSaint --- cmd/jaeger/internal/exporters/storageexporter/config.go | 3 +-- cmd/jaeger/internal/extension/jaegerstorage/config.go | 8 ++++++-- docker-compose/monitor/jaeger-v2-config.yml | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cmd/jaeger/internal/exporters/storageexporter/config.go b/cmd/jaeger/internal/exporters/storageexporter/config.go index 25a2ba15245..c6b171ecba7 100644 --- a/cmd/jaeger/internal/exporters/storageexporter/config.go +++ b/cmd/jaeger/internal/exporters/storageexporter/config.go @@ -15,8 +15,7 @@ var ( // Config defines configuration for jaeger_storage_exporter. type Config struct { - TraceStorage string `valid:"required" mapstructure:"trace_storage"` - MetricsStorage string `valid:"required" mapstructure:"metrics_storage"` + TraceStorage string `valid:"required" mapstructure:"trace_storage"` } func (cfg *Config) Validate() error { diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index 27475a4b5e6..4ce1558c03f 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -32,7 +32,8 @@ var ( // We tried to alias this type directly to a map, but conf did not populated it correctly. // Note also that the Backend struct has a custom unmarshaler. type Config struct { - Backends map[string]Backend `mapstructure:"backends"` + Backends map[string]Backend `mapstructure:"backends"` + MetricsBackend map[string]MetricsBackend `mapstructure:"metrics_backends"` } type Backend struct { @@ -42,7 +43,10 @@ type Backend struct { Cassandra *cassandra.Options `mapstructure:"cassandra"` Elasticsearch *esCfg.Configuration `mapstructure:"elasticsearch"` Opensearch *esCfg.Configuration `mapstructure:"opensearch"` - Prometheus *promCfg.Configuration `mapstructure:"prometheus"` +} + +type MetricsBackend struct { + Prometheus *promCfg.Configuration `mapstructure:"prometheus"` } // Unmarshal implements confmap.Unmarshaler. This allows us to provide diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index e5bf1f09024..99c5db076c2 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -19,7 +19,8 @@ extensions: some_storage: memory: max_traces: 100000 - prometheus: + metrics_backends: + prometheus: connectors: spanmetrics: @@ -37,6 +38,5 @@ processors: exporters: jaeger_storage_exporter: trace_storage: some_storage - metrics_storage: prometheus prometheus: endpoint: "0.0.0.0:8889" From 647983657ce20d6bdb291837a69b07866d6355d4 Mon Sep 17 00:00:00 2001 From: Raghuram Kannan <78465537+FlamingSaint@users.noreply.github.com> Date: Sun, 7 Jul 2024 01:51:42 +0530 Subject: [PATCH 19/60] Add suggested change Co-authored-by: Yuri Shkuro Signed-off-by: Raghuram Kannan <78465537+FlamingSaint@users.noreply.github.com> --- docker-compose/monitor/jaeger-v2-config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index 99c5db076c2..cbe4cacf0ef 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -20,7 +20,8 @@ extensions: memory: max_traces: 100000 metrics_backends: - prometheus: + some_metrics_storage: + prometheus: connectors: spanmetrics: From 14b94fe96978b984ccaab865f60b98cbd8491822 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 7 Jul 2024 22:38:52 +0530 Subject: [PATCH 20/60] Initialize the metrics storage in extensions.go Signed-off-by: FlamingSaint --- .../extension/jaegerstorage/config.go | 9 ++++++++ .../extension/jaegerstorage/extension.go | 21 ++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index 4ce1558c03f..fe9aa7a90a7 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -104,3 +104,12 @@ func (cfg *Config) Validate() error { } return nil } + +func (cfg *MetricsBackend) Unmarshal(conf *confmap.Conf) error { + // apply defaults + if conf.IsSet("prometheus") { + // cfg.Prometheus = &prometheus.Configuration{ TODO: Need to implement this, Need to add prometheus as a v2 storage ?? + // } + } + return conf.Unmarshal(cfg) +} diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 9ca2dba178d..44c1f13219c 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -31,9 +31,10 @@ type Extension interface { } type storageExt struct { - config *Config - telset component.TelemetrySettings - factories map[string]storage.Factory + config *Config + telset component.TelemetrySettings + factories map[string]storage.Factory + metricsFactories map[string]storage.MetricsFactory } // GetStorageFactory locates the extension in Host and retrieves a storage factory from it with the given name. @@ -104,6 +105,20 @@ func (s *storageExt) Start(_ context.Context, _ component.Host) error { } s.factories[storageName] = factory } + + for metricsStorageName, cfg := range s.config.MetricsBackend { + s.telset.Logger.Sugar().Infof("Initializing metrics storage '%s'", metricsStorageName) + var metricsFactory storage.MetricsFactory + var err error = errors.New("empty configuration") + if cfg.Prometheus != nil { + // metricsFactory, err = prometheus.NewFactoryWithConfig(*cfg.Prometheus, mf, s.telset.Logger) // TODO: Need to implement NewFactoryWithConfig) + } + if err != nil { + return fmt.Errorf("failed to initialize storage '%s': %w", metricsStorageName, err) + } + s.metricsFactories[metricsStorageName] = metricsFactory + } + return nil } From c986181f4fd38a0684c7e072f1c3dd678abe7de7 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 8 Jul 2024 06:31:13 +0530 Subject: [PATCH 21/60] Use singular naming Signed-off-by: FlamingSaint --- cmd/jaeger/internal/extension/jaegerquery/config.go | 2 +- cmd/jaeger/internal/extension/jaegerstorage/config.go | 8 ++++---- cmd/jaeger/internal/extension/jaegerstorage/extension.go | 2 +- docker-compose/monitor/jaeger-v2-config.yml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/config.go b/cmd/jaeger/internal/extension/jaegerquery/config.go index 64395342e1c..5b1ebec67f7 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/config.go +++ b/cmd/jaeger/internal/extension/jaegerquery/config.go @@ -20,7 +20,7 @@ type Config struct { TraceStoragePrimary string `valid:"required" mapstructure:"trace_storage"` TraceStorageArchive string `valid:"optional" mapstructure:"trace_storage_archive"` - MetricsStorage string `valid:"optional" mapstructure:"metrics_storage"` + MetricStorage string `valid:"optional" mapstructure:"metric_storage"` confighttp.ServerConfig `mapstructure:",squash"` Tenancy tenancy.Options `mapstructure:"multi_tenancy"` } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index fe9aa7a90a7..f8ed886388b 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -32,8 +32,8 @@ var ( // We tried to alias this type directly to a map, but conf did not populated it correctly. // Note also that the Backend struct has a custom unmarshaler. type Config struct { - Backends map[string]Backend `mapstructure:"backends"` - MetricsBackend map[string]MetricsBackend `mapstructure:"metrics_backends"` + Backends map[string]Backend `mapstructure:"backends"` + MetricBackend map[string]MetricBackend `mapstructure:"metric_backends"` } type Backend struct { @@ -45,7 +45,7 @@ type Backend struct { Opensearch *esCfg.Configuration `mapstructure:"opensearch"` } -type MetricsBackend struct { +type MetricBackend struct { Prometheus *promCfg.Configuration `mapstructure:"prometheus"` } @@ -105,7 +105,7 @@ func (cfg *Config) Validate() error { return nil } -func (cfg *MetricsBackend) Unmarshal(conf *confmap.Conf) error { +func (cfg *MetricBackend) Unmarshal(conf *confmap.Conf) error { // apply defaults if conf.IsSet("prometheus") { // cfg.Prometheus = &prometheus.Configuration{ TODO: Need to implement this, Need to add prometheus as a v2 storage ?? diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 44c1f13219c..39a690cc025 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -106,7 +106,7 @@ func (s *storageExt) Start(_ context.Context, _ component.Host) error { s.factories[storageName] = factory } - for metricsStorageName, cfg := range s.config.MetricsBackend { + for metricsStorageName, cfg := range s.config.MetricBackend { s.telset.Logger.Sugar().Infof("Initializing metrics storage '%s'", metricsStorageName) var metricsFactory storage.MetricsFactory var err error = errors.New("empty configuration") diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index cbe4cacf0ef..0e5fd9997b7 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -13,13 +13,13 @@ service: extensions: jaeger_query: trace_storage: some_storage - metrics_storage: prometheus + metric_storage: prometheus jaeger_storage: backends: some_storage: memory: max_traces: 100000 - metrics_backends: + metric_backends: some_metrics_storage: prometheus: From 5c5d7019003ba0ddacc047951b5d3a14e29c9aee Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 8 Jul 2024 06:48:03 +0530 Subject: [PATCH 22/60] fix naming Signed-off-by: FlamingSaint --- cmd/jaeger/internal/extension/jaegerstorage/config.go | 8 ++++---- cmd/jaeger/internal/extension/jaegerstorage/extension.go | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index f8ed886388b..430a311cf92 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -32,8 +32,8 @@ var ( // We tried to alias this type directly to a map, but conf did not populated it correctly. // Note also that the Backend struct has a custom unmarshaler. type Config struct { - Backends map[string]Backend `mapstructure:"backends"` - MetricBackend map[string]MetricBackend `mapstructure:"metric_backends"` + Backends map[string]Backend `mapstructure:"backends"` + MetricBackends map[string]MetricBackends `mapstructure:"metric_backends"` } type Backend struct { @@ -45,7 +45,7 @@ type Backend struct { Opensearch *esCfg.Configuration `mapstructure:"opensearch"` } -type MetricBackend struct { +type MetricBackends struct { Prometheus *promCfg.Configuration `mapstructure:"prometheus"` } @@ -105,7 +105,7 @@ func (cfg *Config) Validate() error { return nil } -func (cfg *MetricBackend) Unmarshal(conf *confmap.Conf) error { +func (cfg *MetricBackends) Unmarshal(conf *confmap.Conf) error { // apply defaults if conf.IsSet("prometheus") { // cfg.Prometheus = &prometheus.Configuration{ TODO: Need to implement this, Need to add prometheus as a v2 storage ?? diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 39a690cc025..3f62f22182d 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -106,17 +106,17 @@ func (s *storageExt) Start(_ context.Context, _ component.Host) error { s.factories[storageName] = factory } - for metricsStorageName, cfg := range s.config.MetricBackend { - s.telset.Logger.Sugar().Infof("Initializing metrics storage '%s'", metricsStorageName) + for metricStorageName, cfg := range s.config.MetricBackends { + s.telset.Logger.Sugar().Infof("Initializing metrics storage '%s'", metricStorageName) var metricsFactory storage.MetricsFactory var err error = errors.New("empty configuration") if cfg.Prometheus != nil { // metricsFactory, err = prometheus.NewFactoryWithConfig(*cfg.Prometheus, mf, s.telset.Logger) // TODO: Need to implement NewFactoryWithConfig) } if err != nil { - return fmt.Errorf("failed to initialize storage '%s': %w", metricsStorageName, err) + return fmt.Errorf("failed to initialize storage '%s': %w", metricStorageName, err) } - s.metricsFactories[metricsStorageName] = metricsFactory + s.metricsFactories[metricStorageName] = metricsFactory } return nil From 21ea84778959e6a9492fab0815b0d01489e374d9 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 8 Jul 2024 17:23:35 +0530 Subject: [PATCH 23/60] Add config options for prometheus Signed-off-by: FlamingSaint --- .../internal/extension/jaegerstorage/config.go | 12 ++++++++---- .../extension/jaegerstorage/extension.go | 16 ++++++++-------- plugin/metrics/prometheus/options.go | 18 +++++++++++------- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index 430a311cf92..c32108e6a0a 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -13,7 +13,7 @@ import ( casCfg "github.com/jaegertracing/jaeger/pkg/cassandra/config" esCfg "github.com/jaegertracing/jaeger/pkg/es/config" - promCfg "github.com/jaegertracing/jaeger/pkg/prometheus/config" + "github.com/jaegertracing/jaeger/plugin/metrics/prometheus" "github.com/jaegertracing/jaeger/plugin/storage/badger" "github.com/jaegertracing/jaeger/plugin/storage/cassandra" "github.com/jaegertracing/jaeger/plugin/storage/es" @@ -46,7 +46,7 @@ type Backend struct { } type MetricBackends struct { - Prometheus *promCfg.Configuration `mapstructure:"prometheus"` + Prometheus *prometheus.Options `mapstructure:"prometheus"` } // Unmarshal implements confmap.Unmarshaler. This allows us to provide @@ -108,8 +108,12 @@ func (cfg *Config) Validate() error { func (cfg *MetricBackends) Unmarshal(conf *confmap.Conf) error { // apply defaults if conf.IsSet("prometheus") { - // cfg.Prometheus = &prometheus.Configuration{ TODO: Need to implement this, Need to add prometheus as a v2 storage ?? - // } + cfg.Prometheus = &prometheus.Options{ + Primary: prometheus.NamespaceConfig{ + Configuration: prometheus.DefaultConfig(), + }, + } + // TODO: Need to implement this, Need to add prometheus as a v2 storage ?? } return conf.Unmarshal(cfg) } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 3f62f22182d..624fcb6ad63 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -106,16 +106,16 @@ func (s *storageExt) Start(_ context.Context, _ component.Host) error { s.factories[storageName] = factory } - for metricStorageName, cfg := range s.config.MetricBackends { + for metricStorageName := range s.config.MetricBackends { s.telset.Logger.Sugar().Infof("Initializing metrics storage '%s'", metricStorageName) var metricsFactory storage.MetricsFactory - var err error = errors.New("empty configuration") - if cfg.Prometheus != nil { - // metricsFactory, err = prometheus.NewFactoryWithConfig(*cfg.Prometheus, mf, s.telset.Logger) // TODO: Need to implement NewFactoryWithConfig) - } - if err != nil { - return fmt.Errorf("failed to initialize storage '%s': %w", metricStorageName, err) - } + // var err error = errors.New("empty configuration") + // TODO: Need to implement + // if cfg.Prometheus != nil { + // } + // if err != nil { + // return fmt.Errorf("failed to initialize storage '%s': %w", metricStorageName, err) + // } s.metricsFactories[metricStorageName] = metricsFactory } diff --git a/plugin/metrics/prometheus/options.go b/plugin/metrics/prometheus/options.go index a9f8f98956b..b7c3e0d93f1 100644 --- a/plugin/metrics/prometheus/options.go +++ b/plugin/metrics/prometheus/options.go @@ -48,19 +48,18 @@ const ( defaultNormalizeDuration = false ) -type namespaceConfig struct { +type NamespaceConfig struct { config.Configuration `mapstructure:",squash"` namespace string } // Options stores the configuration entries for this storage. type Options struct { - Primary namespaceConfig `mapstructure:",squash"` + Primary NamespaceConfig `mapstructure:",squash"` } -// NewOptions creates a new Options struct. -func NewOptions(primaryNamespace string) *Options { - defaultConfig := config.Configuration{ +func DefaultConfig() config.Configuration { + return config.Configuration{ ServerURL: defaultServerURL, ConnectTimeout: defaultConnectTimeout, @@ -69,9 +68,14 @@ func NewOptions(primaryNamespace string) *Options { NormalizeCalls: defaultNormalizeCalls, NormalizeDuration: defaultNormalizeCalls, } +} + +// NewOptions creates a new Options struct. +func NewOptions(primaryNamespace string) *Options { + defaultConfig := DefaultConfig() return &Options{ - Primary: namespaceConfig{ + Primary: NamespaceConfig{ Configuration: defaultConfig, namespace: primaryNamespace, }, @@ -137,7 +141,7 @@ func (opt *Options) InitFromViper(v *viper.Viper) error { return nil } -func (config *namespaceConfig) getTLSFlagsConfig() tlscfg.ClientFlagsConfig { +func (config *NamespaceConfig) getTLSFlagsConfig() tlscfg.ClientFlagsConfig { return tlscfg.ClientFlagsConfig{ Prefix: config.namespace, } From 44f262711ecc4131b6f77acd83017fe3f3ff72f4 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 8 Jul 2024 23:43:58 +0530 Subject: [PATCH 24/60] Resolve conflicts Signed-off-by: FlamingSaint --- cmd/jaeger/internal/extension/jaegerstorage/config.go | 4 +--- plugin/metrics/prometheus/options.go | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index c32108e6a0a..b1f78a57b9e 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -109,9 +109,7 @@ func (cfg *MetricBackends) Unmarshal(conf *confmap.Conf) error { // apply defaults if conf.IsSet("prometheus") { cfg.Prometheus = &prometheus.Options{ - Primary: prometheus.NamespaceConfig{ - Configuration: prometheus.DefaultConfig(), - }, + Configuration: prometheus.DefaultConfig(), } // TODO: Need to implement this, Need to add prometheus as a v2 storage ?? } diff --git a/plugin/metrics/prometheus/options.go b/plugin/metrics/prometheus/options.go index b2cf1397c65..0e3d03bda03 100644 --- a/plugin/metrics/prometheus/options.go +++ b/plugin/metrics/prometheus/options.go @@ -68,7 +68,7 @@ func DefaultConfig() config.Configuration { } // NewOptions creates a new Options struct. -func NewOptions(primaryNamespace string) *Options { +func NewOptions() *Options { defaultConfig := DefaultConfig() return &Options{ From be421176fdcbeaa62065122a111f0604f732acf4 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 9 Jul 2024 00:11:20 +0530 Subject: [PATCH 25/60] initialize metrics storage in extension.go Signed-off-by: FlamingSaint --- .../internal/extension/jaegerstorage/config.go | 1 - .../extension/jaegerstorage/extension.go | 17 +++++++++-------- docker-compose/monitor/jaeger-v2-config.yml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index b1f78a57b9e..9a9554df3db 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -111,7 +111,6 @@ func (cfg *MetricBackends) Unmarshal(conf *confmap.Conf) error { cfg.Prometheus = &prometheus.Options{ Configuration: prometheus.DefaultConfig(), } - // TODO: Need to implement this, Need to add prometheus as a v2 storage ?? } return conf.Unmarshal(cfg) } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 624fcb6ad63..00626ca8fdb 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -14,6 +14,7 @@ import ( "github.com/jaegertracing/jaeger/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter" "github.com/jaegertracing/jaeger/internal/metrics/otelmetrics" + "github.com/jaegertracing/jaeger/plugin/metrics/prometheus" "github.com/jaegertracing/jaeger/plugin/storage/badger" "github.com/jaegertracing/jaeger/plugin/storage/cassandra" "github.com/jaegertracing/jaeger/plugin/storage/es" @@ -106,16 +107,16 @@ func (s *storageExt) Start(_ context.Context, _ component.Host) error { s.factories[storageName] = factory } - for metricStorageName := range s.config.MetricBackends { + for metricStorageName, cfg := range s.config.MetricBackends { s.telset.Logger.Sugar().Infof("Initializing metrics storage '%s'", metricStorageName) var metricsFactory storage.MetricsFactory - // var err error = errors.New("empty configuration") - // TODO: Need to implement - // if cfg.Prometheus != nil { - // } - // if err != nil { - // return fmt.Errorf("failed to initialize storage '%s': %w", metricStorageName, err) - // } + var err error = errors.New("empty configuration") + if cfg.Prometheus != nil { + metricsFactory = prometheus.NewFactory() + } + if err != nil { + return fmt.Errorf("failed to initialize metrics storage '%s': %w", metricStorageName, err) + } s.metricsFactories[metricStorageName] = metricsFactory } diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index 0e5fd9997b7..b5fad3c212f 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -13,7 +13,7 @@ service: extensions: jaeger_query: trace_storage: some_storage - metric_storage: prometheus + metric_storage: some_metrics_storage jaeger_storage: backends: some_storage: From c87229128aa9fb47f6954074bd625bf02e6f8a2c Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 9 Jul 2024 01:01:29 +0530 Subject: [PATCH 26/60] Add changes Signed-off-by: FlamingSaint --- .../extension/jaegerstorage/config.go | 9 +++--- .../extension/jaegerstorage/extension.go | 2 +- pkg/prometheus/config/config.go | 28 +++++++++++++++++++ plugin/metrics/prometheus/factory.go | 27 ++++++++++++++++++ 4 files changed, 61 insertions(+), 5 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config.go b/cmd/jaeger/internal/extension/jaegerstorage/config.go index 9a9554df3db..98d19d08270 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config.go @@ -13,6 +13,7 @@ import ( casCfg "github.com/jaegertracing/jaeger/pkg/cassandra/config" esCfg "github.com/jaegertracing/jaeger/pkg/es/config" + promCfg "github.com/jaegertracing/jaeger/pkg/prometheus/config" "github.com/jaegertracing/jaeger/plugin/metrics/prometheus" "github.com/jaegertracing/jaeger/plugin/storage/badger" "github.com/jaegertracing/jaeger/plugin/storage/cassandra" @@ -24,6 +25,7 @@ import ( var ( _ component.ConfigValidator = (*Config)(nil) _ confmap.Unmarshaler = (*Backend)(nil) + _ confmap.Unmarshaler = (*MetricBackends)(nil) ) // Config contains configuration(s) for jaeger trace storage. @@ -46,7 +48,7 @@ type Backend struct { } type MetricBackends struct { - Prometheus *prometheus.Options `mapstructure:"prometheus"` + Prometheus *promCfg.Configuration `mapstructure:"prometheus"` } // Unmarshal implements confmap.Unmarshaler. This allows us to provide @@ -108,9 +110,8 @@ func (cfg *Config) Validate() error { func (cfg *MetricBackends) Unmarshal(conf *confmap.Conf) error { // apply defaults if conf.IsSet("prometheus") { - cfg.Prometheus = &prometheus.Options{ - Configuration: prometheus.DefaultConfig(), - } + v := prometheus.DefaultConfig() + cfg.Prometheus = &v } return conf.Unmarshal(cfg) } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 00626ca8fdb..fb3a8b60878 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -112,7 +112,7 @@ func (s *storageExt) Start(_ context.Context, _ component.Host) error { var metricsFactory storage.MetricsFactory var err error = errors.New("empty configuration") if cfg.Prometheus != nil { - metricsFactory = prometheus.NewFactory() + metricsFactory, err = prometheus.NewFactoryWithConfig(*cfg.Prometheus, s.telset.Logger) } if err != nil { return fmt.Errorf("failed to initialize metrics storage '%s': %w", metricStorageName, err) diff --git a/pkg/prometheus/config/config.go b/pkg/prometheus/config/config.go index 122b831dea1..27233a9d3b7 100644 --- a/pkg/prometheus/config/config.go +++ b/pkg/prometheus/config/config.go @@ -17,6 +17,7 @@ package config import ( "time" + "github.com/asaskevich/govalidator" "github.com/jaegertracing/jaeger/pkg/config/tlscfg" ) @@ -33,3 +34,30 @@ type Configuration struct { NormalizeCalls bool NormalizeDuration bool } + +func (c *Configuration) Validate() error { + _, err := govalidator.ValidateStruct(c) + return err +} + +// ApplyDefaults copies settings from source unless its own value is non-zero. +func (c *Configuration) ApplyDefaults(source *Configuration) { + if c.ServerURL == "" { + c.ServerURL = source.ServerURL + } + if c.ConnectTimeout == 0 { + c.ConnectTimeout = source.ConnectTimeout + } + if c.MetricNamespace == "" { + c.MetricNamespace = source.MetricNamespace + } + if c.LatencyUnit == "" { + c.LatencyUnit = source.LatencyUnit + } + if c.NormalizeCalls == false { + c.NormalizeCalls = source.NormalizeCalls + } + if c.NormalizeDuration == false { + c.NormalizeDuration = source.NormalizeDuration + } +} diff --git a/plugin/metrics/prometheus/factory.go b/plugin/metrics/prometheus/factory.go index a806942eb46..9ac42a90d86 100644 --- a/plugin/metrics/prometheus/factory.go +++ b/plugin/metrics/prometheus/factory.go @@ -22,6 +22,7 @@ import ( "go.opentelemetry.io/otel/trace" "go.uber.org/zap" + "github.com/jaegertracing/jaeger/pkg/prometheus/config" "github.com/jaegertracing/jaeger/plugin" prometheusstore "github.com/jaegertracing/jaeger/plugin/metrics/prometheus/metricsstore" "github.com/jaegertracing/jaeger/storage/metricsstore" @@ -66,3 +67,29 @@ func (f *Factory) Initialize(logger *zap.Logger) error { func (f *Factory) CreateMetricsReader() (metricsstore.Reader, error) { return prometheusstore.NewMetricsReader(f.options.Configuration, f.logger, f.tracer) } + +func (f *Factory) configureFromOptions(o *Options) { + f.options = o +} + +func NewFactoryWithConfig( + cfg config.Configuration, + logger *zap.Logger, +) (*Factory, error) { + if err := cfg.Validate(); err != nil { + return nil, err + } + + defaultConfig := DefaultConfig() + cfg.ApplyDefaults(&defaultConfig) + + f := NewFactory() + f.configureFromOptions(&Options{ + Configuration: cfg, + }) + err := f.Initialize(logger) + if err != nil { + return nil, err + } + return f, nil +} From 85442e84b71d1026ae5680852e24b70b90117929 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 9 Jul 2024 01:15:04 +0530 Subject: [PATCH 27/60] fix Signed-off-by: FlamingSaint --- cmd/jaeger/internal/extension/jaegerstorage/extension.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index fb3a8b60878..39866925167 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -74,9 +74,10 @@ func GetStorageFactoryV2(name string, host component.Host) (spanstore.Factory, e func newStorageExt(config *Config, telset component.TelemetrySettings) *storageExt { return &storageExt{ - config: config, - telset: telset, - factories: make(map[string]storage.Factory), + config: config, + telset: telset, + factories: make(map[string]storage.Factory), + metricsFactories: make(map[string]storage.MetricsFactory), } } From 865d2eeb3fe2c8b470fd1fc102fab542495acd83 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 9 Jul 2024 09:19:31 +0530 Subject: [PATCH 28/60] Add changes Signed-off-by: FlamingSaint --- pkg/prometheus/config/config.go | 23 +---------------------- plugin/metrics/prometheus/factory.go | 11 ++--------- plugin/metrics/prometheus/options.go | 4 +--- 3 files changed, 4 insertions(+), 34 deletions(-) diff --git a/pkg/prometheus/config/config.go b/pkg/prometheus/config/config.go index 27233a9d3b7..8995a545151 100644 --- a/pkg/prometheus/config/config.go +++ b/pkg/prometheus/config/config.go @@ -18,6 +18,7 @@ import ( "time" "github.com/asaskevich/govalidator" + "github.com/jaegertracing/jaeger/pkg/config/tlscfg" ) @@ -39,25 +40,3 @@ func (c *Configuration) Validate() error { _, err := govalidator.ValidateStruct(c) return err } - -// ApplyDefaults copies settings from source unless its own value is non-zero. -func (c *Configuration) ApplyDefaults(source *Configuration) { - if c.ServerURL == "" { - c.ServerURL = source.ServerURL - } - if c.ConnectTimeout == 0 { - c.ConnectTimeout = source.ConnectTimeout - } - if c.MetricNamespace == "" { - c.MetricNamespace = source.MetricNamespace - } - if c.LatencyUnit == "" { - c.LatencyUnit = source.LatencyUnit - } - if c.NormalizeCalls == false { - c.NormalizeCalls = source.NormalizeCalls - } - if c.NormalizeDuration == false { - c.NormalizeDuration = source.NormalizeDuration - } -} diff --git a/plugin/metrics/prometheus/factory.go b/plugin/metrics/prometheus/factory.go index 9ac42a90d86..3ac09b963b9 100644 --- a/plugin/metrics/prometheus/factory.go +++ b/plugin/metrics/prometheus/factory.go @@ -68,10 +68,6 @@ func (f *Factory) CreateMetricsReader() (metricsstore.Reader, error) { return prometheusstore.NewMetricsReader(f.options.Configuration, f.logger, f.tracer) } -func (f *Factory) configureFromOptions(o *Options) { - f.options = o -} - func NewFactoryWithConfig( cfg config.Configuration, logger *zap.Logger, @@ -80,13 +76,10 @@ func NewFactoryWithConfig( return nil, err } - defaultConfig := DefaultConfig() - cfg.ApplyDefaults(&defaultConfig) - f := NewFactory() - f.configureFromOptions(&Options{ + f.options = &Options{ Configuration: cfg, - }) + } err := f.Initialize(logger) if err != nil { return nil, err diff --git a/plugin/metrics/prometheus/options.go b/plugin/metrics/prometheus/options.go index 0e3d03bda03..2b4bd221a94 100644 --- a/plugin/metrics/prometheus/options.go +++ b/plugin/metrics/prometheus/options.go @@ -69,10 +69,8 @@ func DefaultConfig() config.Configuration { // NewOptions creates a new Options struct. func NewOptions() *Options { - defaultConfig := DefaultConfig() - return &Options{ - Configuration: defaultConfig, + Configuration: DefaultConfig(), } } From c6abf8bb0f309d868e4f5b2ef12145017c0e4c83 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 14 Jul 2024 19:12:07 +0530 Subject: [PATCH 29/60] WIP: Passed metric storage to the query service Signed-off-by: FlamingSaint --- cmd/all-in-one/main.go | 2 +- .../storageexporter/exporter_test.go | 12 +++++-- .../internal/extension/jaegerquery/server.go | 32 +++++++++++++++++-- .../extension/jaegerquery/server_test.go | 23 +++++++++++++ .../extension/jaegerstorage/extension.go | 31 ++++++++++++++++++ .../storagereceiver/receiver_test.go | 12 +++++-- .../storagecleaner/extension_test.go | 12 +++++-- cmd/query/app/querysvc/query_service.go | 23 +++++++++++++ cmd/query/main.go | 2 +- plugin/metrics/disabled/factory.go | 2 +- plugin/metrics/disabled/factory_test.go | 4 +-- plugin/metrics/factory.go | 4 +-- plugin/metrics/factory_test.go | 2 +- plugin/metrics/prometheus/factory.go | 4 +-- plugin/metrics/prometheus/factory_test.go | 2 +- storage/factory.go | 10 +++++- storage/mocks/MetricsFactory.go | 2 +- 17 files changed, 157 insertions(+), 22 deletions(-) diff --git a/cmd/all-in-one/main.go b/cmd/all-in-one/main.go index 185c74a74ab..d45b63e1115 100644 --- a/cmd/all-in-one/main.go +++ b/cmd/all-in-one/main.go @@ -296,7 +296,7 @@ func createMetricsQueryService( logger *zap.Logger, metricsReaderMetricsFactory metrics.Factory, ) (querysvc.MetricsQueryService, error) { - if err := metricsReaderFactory.Initialize(logger); err != nil { + if err := metricsReaderFactory.InitializeMetricsFactory(logger); err != nil { return nil, fmt.Errorf("failed to init metrics reader factory: %w", err) } diff --git a/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go b/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go index 3693b8ef1fe..bdd1ce81a7c 100644 --- a/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go +++ b/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go @@ -39,8 +39,9 @@ import ( ) type mockStorageExt struct { - name string - factory *factoryMocks.Factory + name string + factory *factoryMocks.Factory + metricsFactory *factoryMocks.MetricsFactory } func (*mockStorageExt) Start(context.Context, component.Host) error { @@ -58,6 +59,13 @@ func (m *mockStorageExt) Factory(name string) (storage.Factory, bool) { return nil, false } +func (m *mockStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { + if m.name == name { + return m.metricsFactory, true + } + return nil, false +} + func TestExporterConfigError(t *testing.T) { config := createDefaultConfig().(*Config) err := config.Validate() diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index dc9fc29323d..b3f08134f2a 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -18,8 +18,8 @@ import ( "github.com/jaegertracing/jaeger/pkg/healthcheck" "github.com/jaegertracing/jaeger/pkg/jtracer" "github.com/jaegertracing/jaeger/pkg/tenancy" - "github.com/jaegertracing/jaeger/plugin/metrics/disabled" "github.com/jaegertracing/jaeger/ports" + "github.com/jaegertracing/jaeger/storage/metricsstore" ) var ( @@ -69,7 +69,14 @@ func (s *server) Start(_ context.Context, host component.Host) error { return err } qs := querysvc.NewQueryService(spanReader, depReader, opts) - metricsQueryService, _ := disabled.NewMetricsReader() + + var mqs querysvc.MetricsQueryService + mqs, err = s.addMetricStorage(&opts, host) + if err != nil { + return err + } + + // metricsQueryService, _ := disabled.NewMetricsReader() tm := tenancy.NewManager(&s.config.Tenancy) // TODO OTel-collector does not initialize the tracer currently @@ -87,7 +94,7 @@ func (s *server) Start(_ context.Context, host component.Host) error { // TODO propagate healthcheck updates up to the collector's runtime healthcheck.New(), qs, - metricsQueryService, + mqs, s.makeQueryOptions(), tm, s.jtracer, @@ -120,6 +127,25 @@ func (s *server) addArchiveStorage(opts *querysvc.QueryServiceOptions, host comp return nil } +func (s *server) addMetricStorage(opts *querysvc.QueryServiceOptions, host component.Host) (metricsstore.Reader, error) { + if s.config.MetricStorage == "" { + s.logger.Info("Metric storage not configured") + return nil, nil + } + + mf, err := jaegerstorage.GetMetricsFactory(s.config.MetricStorage, host) + if err != nil { + return nil, fmt.Errorf("cannot find metrics storage factory: %w", err) + } + + metricsReader, ok := opts.InitMetricStorage(mf, s.logger) + if !ok { + s.logger.Info("Metric storage not initialized") + return nil, nil + } + return metricsReader, nil +} + func (s *server) makeQueryOptions() *queryApp.QueryOptions { return &queryApp.QueryOptions{ QueryOptionsBase: s.config.QueryOptionsBase, diff --git a/cmd/jaeger/internal/extension/jaegerquery/server_test.go b/cmd/jaeger/internal/extension/jaegerquery/server_test.go index 36cc4d82c4c..71e2388da1a 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server_test.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server_test.go @@ -22,6 +22,8 @@ import ( "github.com/jaegertracing/jaeger/storage" "github.com/jaegertracing/jaeger/storage/dependencystore" depsmocks "github.com/jaegertracing/jaeger/storage/dependencystore/mocks" + "github.com/jaegertracing/jaeger/storage/metricsstore" + metricsstoremocks "github.com/jaegertracing/jaeger/storage/metricsstore/mocks" "github.com/jaegertracing/jaeger/storage/spanstore" spanstoremocks "github.com/jaegertracing/jaeger/storage/spanstore/mocks" ) @@ -51,6 +53,13 @@ func (ff fakeFactory) CreateSpanWriter() (spanstore.Writer, error) { return &spanstoremocks.Writer{}, nil } +func (ff fakeFactory) CreateMetricsReader() (metricsstore.Reader, error) { + if ff.name == "need-span-writer-error" { + return nil, fmt.Errorf("test-error") + } + return &metricsstoremocks.Reader{}, nil +} + func (ff fakeFactory) Initialize(metrics.Factory, *zap.Logger) error { if ff.name == "need-initialize-error" { return fmt.Errorf("test-error") @@ -58,6 +67,13 @@ func (ff fakeFactory) Initialize(metrics.Factory, *zap.Logger) error { return nil } +func (ff fakeFactory) InitializeMetricsFactory(*zap.Logger) error { + if ff.name == "need-initialize-error" { + return fmt.Errorf("test-error") + } + return nil +} + type fakeStorageExt struct{} var _ jaegerstorage.Extension = (*fakeStorageExt)(nil) @@ -69,6 +85,13 @@ func (fakeStorageExt) Factory(name string) (storage.Factory, bool) { return fakeFactory{name: name}, true } +func (fakeStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { + if name == "need-factory-error" { + return nil, false + } + return fakeFactory{name: name}, true +} + func (fakeStorageExt) Start(context.Context, component.Host) error { return nil } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 39866925167..a93f8eb178d 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -29,6 +29,7 @@ var _ Extension = (*storageExt)(nil) type Extension interface { extension.Extension Factory(name string) (storage.Factory, bool) + MetricsFactory(name string) (storage.MetricsFactory, bool) } type storageExt struct { @@ -63,6 +64,31 @@ func GetStorageFactory(name string, host component.Host) (storage.Factory, error return f, nil } +// GetMetricsFactory locates the extension in Host and retrieves a metrics factory from it with the given name. +func GetMetricsFactory(name string, host component.Host) (storage.MetricsFactory, error) { + var comp component.Component + for id, ext := range host.GetExtensions() { + if id.Type() == componentType { + comp = ext + break + } + } + if comp == nil { + return nil, fmt.Errorf( + "cannot find extension '%s' (make sure it's defined earlier in the config)", + componentType, + ) + } + mf, ok := comp.(Extension).MetricsFactory(name) + if !ok { + return nil, fmt.Errorf( + "cannot find metric storage '%s' declared by '%s' extension", + name, componentType, + ) + } + return mf, nil +} + func GetStorageFactoryV2(name string, host component.Host) (spanstore.Factory, error) { f, err := GetStorageFactory(name, host) if err != nil { @@ -141,3 +167,8 @@ func (s *storageExt) Factory(name string) (storage.Factory, bool) { f, ok := s.factories[name] return f, ok } + +func (s *storageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { + mf, ok := s.metricsFactories[name] + return mf, ok +} diff --git a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go b/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go index 794cfdbbfd2..787f8cbe7d9 100644 --- a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go +++ b/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go @@ -29,8 +29,9 @@ import ( var _ jaegerstorage.Extension = (*mockStorageExt)(nil) type mockStorageExt struct { - name string - factory *factoryMocks.Factory + name string + factory *factoryMocks.Factory + metricsFactory *factoryMocks.MetricsFactory } func (*mockStorageExt) Start(context.Context, component.Host) error { @@ -48,6 +49,13 @@ func (m *mockStorageExt) Factory(name string) (storage.Factory, bool) { return nil, false } +func (m *mockStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { + if m.name == name { + return m.metricsFactory, true + } + return nil, false +} + type receiverTest struct { storageName string receiveName string diff --git a/cmd/jaeger/internal/integration/storagecleaner/extension_test.go b/cmd/jaeger/internal/integration/storagecleaner/extension_test.go index a150e0f00ac..23d05c28e5c 100644 --- a/cmd/jaeger/internal/integration/storagecleaner/extension_test.go +++ b/cmd/jaeger/internal/integration/storagecleaner/extension_test.go @@ -36,8 +36,9 @@ func (f *PurgerFactory) Purge(_ context.Context) error { } type mockStorageExt struct { - name string - factory storage.Factory + name string + factory storage.Factory + metricsFactory storage.MetricsFactory } func (*mockStorageExt) Start(context.Context, component.Host) error { @@ -55,6 +56,13 @@ func (m *mockStorageExt) Factory(name string) (storage.Factory, bool) { return nil, false } +func (m *mockStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { + if m.name == name { + return m.metricsFactory, true + } + return nil, false +} + func TestStorageCleanerExtension(t *testing.T) { tests := []struct { name string diff --git a/cmd/query/app/querysvc/query_service.go b/cmd/query/app/querysvc/query_service.go index 2144928acb2..de3a45b9723 100644 --- a/cmd/query/app/querysvc/query_service.go +++ b/cmd/query/app/querysvc/query_service.go @@ -25,6 +25,7 @@ import ( "github.com/jaegertracing/jaeger/model/adjuster" "github.com/jaegertracing/jaeger/storage" "github.com/jaegertracing/jaeger/storage/dependencystore" + "github.com/jaegertracing/jaeger/storage/metricsstore" "github.com/jaegertracing/jaeger/storage/spanstore" ) @@ -38,12 +39,14 @@ const ( type QueryServiceOptions struct { ArchiveSpanReader spanstore.Reader ArchiveSpanWriter spanstore.Writer + MetricsReader metricsstore.Reader Adjuster adjuster.Adjuster } // StorageCapabilities is a feature flag for query service type StorageCapabilities struct { ArchiveStorage bool `json:"archiveStorage"` + // TODO: Maybe add metrics Storage here // SupportRegex bool // SupportTagFilter bool } @@ -166,6 +169,26 @@ func (opts *QueryServiceOptions) InitArchiveStorage(storageFactory storage.Facto return true } +// InitMetricStorage tries to initialize metric storage reader if storage factory supports them. +func (opts *QueryServiceOptions) InitMetricStorage(metricsFactory storage.MetricsFactory, logger *zap.Logger) (metricsstore.Reader, bool) { + // metricsFactory = metricsFactory.(storage.MetricsFactory) + // if !ok { + // logger.Info("Metric storage not supported by the factory") + // return false + // } + reader, err := metricsFactory.CreateMetricsReader() + if errors.Is(err, storage.ErrMetricStorageNotConfigured) || errors.Is(err, storage.ErrMetricStorageNotSupported) { + logger.Info("Metric storage not created", zap.String("reason", err.Error())) + return nil, false + } + if err != nil { + logger.Error("Cannot init metric storage reader", zap.Error(err)) + return nil, false + } + opts.MetricsReader = reader + return reader, true +} + // hasArchiveStorage returns true if archive storage reader/writer are initialized. func (opts *QueryServiceOptions) hasArchiveStorage() bool { return opts.ArchiveSpanReader != nil && opts.ArchiveSpanWriter != nil diff --git a/cmd/query/main.go b/cmd/query/main.go index 42f698669f0..dbde72076dc 100644 --- a/cmd/query/main.go +++ b/cmd/query/main.go @@ -164,7 +164,7 @@ func createMetricsQueryService( logger *zap.Logger, metricsReaderMetricsFactory metrics.Factory, ) (querysvc.MetricsQueryService, error) { - if err := metricsReaderFactory.Initialize(logger); err != nil { + if err := metricsReaderFactory.InitializeMetricsFactory(logger); err != nil { return nil, fmt.Errorf("failed to init metrics reader factory: %w", err) } diff --git a/plugin/metrics/disabled/factory.go b/plugin/metrics/disabled/factory.go index 48ca5de3e2f..88aaeb30a44 100644 --- a/plugin/metrics/disabled/factory.go +++ b/plugin/metrics/disabled/factory.go @@ -41,7 +41,7 @@ func (*Factory) AddFlags(_ *flag.FlagSet) {} func (*Factory) InitFromViper(_ *viper.Viper, _ *zap.Logger) {} // Initialize implements storage.MetricsFactory. -func (*Factory) Initialize(_ *zap.Logger) error { +func (*Factory) InitializeMetricsFactory(_ *zap.Logger) error { return nil } diff --git a/plugin/metrics/disabled/factory_test.go b/plugin/metrics/disabled/factory_test.go index 3504edbd723..f38252e3268 100644 --- a/plugin/metrics/disabled/factory_test.go +++ b/plugin/metrics/disabled/factory_test.go @@ -28,9 +28,9 @@ var _ storage.MetricsFactory = new(Factory) func TestPrometheusFactory(t *testing.T) { f := NewFactory() - require.NoError(t, f.Initialize(zap.NewNop())) + require.NoError(t, f.InitializeMetricsFactory(zap.NewNop())) - err := f.Initialize(nil) + err := f.InitializeMetricsFactory(nil) require.NoError(t, err) f.AddFlags(nil) diff --git a/plugin/metrics/factory.go b/plugin/metrics/factory.go index 48b54bc7866..764edd16907 100644 --- a/plugin/metrics/factory.go +++ b/plugin/metrics/factory.go @@ -74,9 +74,9 @@ func (*Factory) getFactoryOfType(factoryType string) (storage.MetricsFactory, er } // Initialize implements storage.MetricsFactory. -func (f *Factory) Initialize(logger *zap.Logger) error { +func (f *Factory) InitializeMetricsFactory(logger *zap.Logger) error { for _, factory := range f.factories { - factory.Initialize(logger) + factory.InitializeMetricsFactory(logger) } return nil } diff --git a/plugin/metrics/factory_test.go b/plugin/metrics/factory_test.go index 0cacf652612..b0134802e46 100644 --- a/plugin/metrics/factory_test.go +++ b/plugin/metrics/factory_test.go @@ -64,7 +64,7 @@ func TestCreateMetricsReader(t *testing.T) { require.NoError(t, err) require.NotNil(t, f) - require.NoError(t, f.Initialize(zap.NewNop())) + require.NoError(t, f.InitializeMetricsFactory(zap.NewNop())) reader, err := f.CreateMetricsReader() require.NoError(t, err) diff --git a/plugin/metrics/prometheus/factory.go b/plugin/metrics/prometheus/factory.go index 3ac09b963b9..62206969d0b 100644 --- a/plugin/metrics/prometheus/factory.go +++ b/plugin/metrics/prometheus/factory.go @@ -58,7 +58,7 @@ func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) { } // Initialize implements storage.MetricsFactory. -func (f *Factory) Initialize(logger *zap.Logger) error { +func (f *Factory) InitializeMetricsFactory(logger *zap.Logger) error { f.logger = logger return nil } @@ -80,7 +80,7 @@ func NewFactoryWithConfig( f.options = &Options{ Configuration: cfg, } - err := f.Initialize(logger) + err := f.InitializeMetricsFactory(logger) if err != nil { return nil, err } diff --git a/plugin/metrics/prometheus/factory_test.go b/plugin/metrics/prometheus/factory_test.go index bd49eca32d5..c63b77151d1 100644 --- a/plugin/metrics/prometheus/factory_test.go +++ b/plugin/metrics/prometheus/factory_test.go @@ -32,7 +32,7 @@ var _ storage.MetricsFactory = new(Factory) func TestPrometheusFactory(t *testing.T) { f := NewFactory() - require.NoError(t, f.Initialize(zap.NewNop())) + require.NoError(t, f.InitializeMetricsFactory(zap.NewNop())) assert.NotNil(t, f.logger) listener, err := net.Listen("tcp", "localhost:") diff --git a/storage/factory.go b/storage/factory.go index 462a626b64f..b7c7fa6e759 100644 --- a/storage/factory.go +++ b/storage/factory.go @@ -83,6 +83,14 @@ type ArchiveFactory interface { CreateArchiveSpanWriter() (spanstore.Writer, error) } +var ( + // ErrMetricStorageNotConfigured can be returned by the MetricsFactory when the metric storage is not configured. + ErrMetricStorageNotConfigured = errors.New("Metric storage not configured") + + // ErrMetricStorageNotSupported can be returned by the MetricsFactory when the metric storage is not supported by the backend. + ErrMetricStorageNotSupported = errors.New("Metric storage not supported") +) + // MetricsFactory defines an interface for a factory that can create implementations of different metrics storage components. // Implementations are also encouraged to implement plugin.Configurable interface. // @@ -92,7 +100,7 @@ type ArchiveFactory interface { type MetricsFactory interface { // Initialize performs internal initialization of the factory, such as opening connections to the backend store. // It is called after all configuration of the factory itself has been done. - Initialize(logger *zap.Logger) error + InitializeMetricsFactory(logger *zap.Logger) error // Tests will fail as MetricsFactory and Factory Interface require Initialize but with different param's // CreateMetricsReader creates a metricsstore.Reader. CreateMetricsReader() (metricsstore.Reader, error) diff --git a/storage/mocks/MetricsFactory.go b/storage/mocks/MetricsFactory.go index 4d5d5823450..907e9f52d11 100644 --- a/storage/mocks/MetricsFactory.go +++ b/storage/mocks/MetricsFactory.go @@ -50,7 +50,7 @@ func (_m *MetricsFactory) CreateMetricsReader() (metricsstore.Reader, error) { } // Initialize provides a mock function with given fields: logger -func (_m *MetricsFactory) Initialize(logger *zap.Logger) error { +func (_m *MetricsFactory) InitializeMetricsFactory(logger *zap.Logger) error { ret := _m.Called(logger) if len(ret) == 0 { From fa04c99582e33308bcd90be4553c0a24f97affc4 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 14 Jul 2024 19:24:41 +0530 Subject: [PATCH 30/60] Use telset.logger instead of logger Signed-off-by: FlamingSaint --- cmd/jaeger/internal/extension/jaegerquery/config.go | 12 ++++++------ cmd/jaeger/internal/extension/jaegerquery/server.go | 7 +++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/config.go b/cmd/jaeger/internal/extension/jaegerquery/config.go index ca02105d5cd..9abaf0c1a64 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/config.go +++ b/cmd/jaeger/internal/extension/jaegerquery/config.go @@ -18,12 +18,12 @@ var _ component.ConfigValidator = (*Config)(nil) // Config represents the configuration for jaeger-query, type Config struct { queryApp.QueryOptionsBase `mapstructure:",squash"` - TraceStoragePrimary string `valid:"required" mapstructure:"trace_storage"` - TraceStorageArchive string `valid:"optional" mapstructure:"trace_storage_archive"` - MetricStorage string `valid:"optional" mapstructure:"metric_storage"` - HTTP confighttp.ServerConfig `mapstructure:",squash"` - GRPC configgrpc.ServerConfig `mapstructure:",squash"` - Tenancy tenancy.Options `mapstructure:"multi_tenancy"` + TraceStoragePrimary string `valid:"required" mapstructure:"trace_storage"` + TraceStorageArchive string `valid:"optional" mapstructure:"trace_storage_archive"` + MetricStorage string `valid:"optional" mapstructure:"metric_storage"` + HTTP confighttp.ServerConfig `mapstructure:",squash"` + GRPC configgrpc.ServerConfig `mapstructure:",squash"` + Tenancy tenancy.Options `mapstructure:"multi_tenancy"` } func (cfg *Config) Validate() error { diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index 4d773099462..4c4bbb791b9 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -17,7 +17,6 @@ import ( "github.com/jaegertracing/jaeger/pkg/jtracer" "github.com/jaegertracing/jaeger/pkg/telemetery" "github.com/jaegertracing/jaeger/pkg/tenancy" - "github.com/jaegertracing/jaeger/ports" "github.com/jaegertracing/jaeger/storage/metricsstore" ) @@ -132,7 +131,7 @@ func (s *server) addArchiveStorage(opts *querysvc.QueryServiceOptions, host comp func (s *server) addMetricStorage(opts *querysvc.QueryServiceOptions, host component.Host) (metricsstore.Reader, error) { if s.config.MetricStorage == "" { - s.logger.Info("Metric storage not configured") + s.telset.Logger.Info("Metric storage not configured") return nil, nil } @@ -141,9 +140,9 @@ func (s *server) addMetricStorage(opts *querysvc.QueryServiceOptions, host compo return nil, fmt.Errorf("cannot find metrics storage factory: %w", err) } - metricsReader, ok := opts.InitMetricStorage(mf, s.logger) + metricsReader, ok := opts.InitMetricStorage(mf, s.telset.Logger) if !ok { - s.logger.Info("Metric storage not initialized") + s.telset.Logger.Info("Metric storage not initialized") return nil, nil } return metricsReader, nil From 636191b5a2652c2a22f1f57dde92ce38db706067 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 14 Jul 2024 19:42:55 +0530 Subject: [PATCH 31/60] fix: generate mocks Signed-off-by: FlamingSaint --- storage/mocks/MetricsFactory.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/storage/mocks/MetricsFactory.go b/storage/mocks/MetricsFactory.go index 907e9f52d11..b27d2c91631 100644 --- a/storage/mocks/MetricsFactory.go +++ b/storage/mocks/MetricsFactory.go @@ -49,12 +49,12 @@ func (_m *MetricsFactory) CreateMetricsReader() (metricsstore.Reader, error) { return r0, r1 } -// Initialize provides a mock function with given fields: logger +// InitializeMetricsFactory provides a mock function with given fields: logger func (_m *MetricsFactory) InitializeMetricsFactory(logger *zap.Logger) error { ret := _m.Called(logger) if len(ret) == 0 { - panic("no return value specified for Initialize") + panic("no return value specified for InitializeMetricsFactory") } var r0 error From c39f8ec27ee935d8e1da3e24fe0822667d1ce867 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 14 Jul 2024 22:11:13 +0530 Subject: [PATCH 32/60] Use Initialize instead of InitializeMetricsFactory Signed-off-by: FlamingSaint --- cmd/all-in-one/main.go | 2 +- .../extension/jaegerquery/server_test.go | 25 +++++++++++-------- cmd/query/main.go | 2 +- plugin/metrics/disabled/factory.go | 2 +- plugin/metrics/disabled/factory_test.go | 4 +-- plugin/metrics/factory.go | 4 +-- plugin/metrics/factory_test.go | 2 +- plugin/metrics/prometheus/factory.go | 4 +-- plugin/metrics/prometheus/factory_test.go | 2 +- storage/factory.go | 2 +- storage/mocks/MetricsFactory.go | 6 ++--- 11 files changed, 30 insertions(+), 25 deletions(-) diff --git a/cmd/all-in-one/main.go b/cmd/all-in-one/main.go index d19332b2614..a051573e5a6 100644 --- a/cmd/all-in-one/main.go +++ b/cmd/all-in-one/main.go @@ -302,7 +302,7 @@ func createMetricsQueryService( logger *zap.Logger, metricsReaderMetricsFactory metrics.Factory, ) (querysvc.MetricsQueryService, error) { - if err := metricsReaderFactory.InitializeMetricsFactory(logger); err != nil { + if err := metricsReaderFactory.Initialize(logger); err != nil { return nil, fmt.Errorf("failed to init metrics reader factory: %w", err) } diff --git a/cmd/jaeger/internal/extension/jaegerquery/server_test.go b/cmd/jaeger/internal/extension/jaegerquery/server_test.go index 55845bd46a8..c5107c4339d 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server_test.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server_test.go @@ -56,13 +56,6 @@ func (ff fakeFactory) CreateSpanWriter() (spanstore.Writer, error) { return &spanstoremocks.Writer{}, nil } -func (ff fakeFactory) CreateMetricsReader() (metricsstore.Reader, error) { - if ff.name == "need-span-writer-error" { - return nil, fmt.Errorf("test-error") - } - return &metricsstoremocks.Reader{}, nil -} - func (ff fakeFactory) Initialize(metrics.Factory, *zap.Logger) error { if ff.name == "need-initialize-error" { return fmt.Errorf("test-error") @@ -70,13 +63,25 @@ func (ff fakeFactory) Initialize(metrics.Factory, *zap.Logger) error { return nil } -func (ff fakeFactory) InitializeMetricsFactory(*zap.Logger) error { - if ff.name == "need-initialize-error" { +type fakeMetricsFactory struct { + name string +} + +// Initialize implements storage.MetricsFactory. +func (fmf fakeMetricsFactory) Initialize(*zap.Logger) error { + if fmf.name == "need-initialize-error" { return fmt.Errorf("test-error") } return nil } +func (fmf fakeMetricsFactory) CreateMetricsReader() (metricsstore.Reader, error) { + if fmf.name == "need-span-writer-error" { + return nil, fmt.Errorf("test-error") + } + return &metricsstoremocks.Reader{}, nil +} + type fakeStorageExt struct{} var _ jaegerstorage.Extension = (*fakeStorageExt)(nil) @@ -92,7 +97,7 @@ func (fakeStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) if name == "need-factory-error" { return nil, false } - return fakeFactory{name: name}, true + return fakeMetricsFactory{name: name}, true } func (fakeStorageExt) Start(context.Context, component.Host) error { diff --git a/cmd/query/main.go b/cmd/query/main.go index 249fc15cdb5..36c54c63197 100644 --- a/cmd/query/main.go +++ b/cmd/query/main.go @@ -170,7 +170,7 @@ func createMetricsQueryService( logger *zap.Logger, metricsReaderMetricsFactory metrics.Factory, ) (querysvc.MetricsQueryService, error) { - if err := metricsReaderFactory.InitializeMetricsFactory(logger); err != nil { + if err := metricsReaderFactory.Initialize(logger); err != nil { return nil, fmt.Errorf("failed to init metrics reader factory: %w", err) } diff --git a/plugin/metrics/disabled/factory.go b/plugin/metrics/disabled/factory.go index 88aaeb30a44..48ca5de3e2f 100644 --- a/plugin/metrics/disabled/factory.go +++ b/plugin/metrics/disabled/factory.go @@ -41,7 +41,7 @@ func (*Factory) AddFlags(_ *flag.FlagSet) {} func (*Factory) InitFromViper(_ *viper.Viper, _ *zap.Logger) {} // Initialize implements storage.MetricsFactory. -func (*Factory) InitializeMetricsFactory(_ *zap.Logger) error { +func (*Factory) Initialize(_ *zap.Logger) error { return nil } diff --git a/plugin/metrics/disabled/factory_test.go b/plugin/metrics/disabled/factory_test.go index f38252e3268..3504edbd723 100644 --- a/plugin/metrics/disabled/factory_test.go +++ b/plugin/metrics/disabled/factory_test.go @@ -28,9 +28,9 @@ var _ storage.MetricsFactory = new(Factory) func TestPrometheusFactory(t *testing.T) { f := NewFactory() - require.NoError(t, f.InitializeMetricsFactory(zap.NewNop())) + require.NoError(t, f.Initialize(zap.NewNop())) - err := f.InitializeMetricsFactory(nil) + err := f.Initialize(nil) require.NoError(t, err) f.AddFlags(nil) diff --git a/plugin/metrics/factory.go b/plugin/metrics/factory.go index 764edd16907..48b54bc7866 100644 --- a/plugin/metrics/factory.go +++ b/plugin/metrics/factory.go @@ -74,9 +74,9 @@ func (*Factory) getFactoryOfType(factoryType string) (storage.MetricsFactory, er } // Initialize implements storage.MetricsFactory. -func (f *Factory) InitializeMetricsFactory(logger *zap.Logger) error { +func (f *Factory) Initialize(logger *zap.Logger) error { for _, factory := range f.factories { - factory.InitializeMetricsFactory(logger) + factory.Initialize(logger) } return nil } diff --git a/plugin/metrics/factory_test.go b/plugin/metrics/factory_test.go index b0134802e46..0cacf652612 100644 --- a/plugin/metrics/factory_test.go +++ b/plugin/metrics/factory_test.go @@ -64,7 +64,7 @@ func TestCreateMetricsReader(t *testing.T) { require.NoError(t, err) require.NotNil(t, f) - require.NoError(t, f.InitializeMetricsFactory(zap.NewNop())) + require.NoError(t, f.Initialize(zap.NewNop())) reader, err := f.CreateMetricsReader() require.NoError(t, err) diff --git a/plugin/metrics/prometheus/factory.go b/plugin/metrics/prometheus/factory.go index 62206969d0b..3ac09b963b9 100644 --- a/plugin/metrics/prometheus/factory.go +++ b/plugin/metrics/prometheus/factory.go @@ -58,7 +58,7 @@ func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) { } // Initialize implements storage.MetricsFactory. -func (f *Factory) InitializeMetricsFactory(logger *zap.Logger) error { +func (f *Factory) Initialize(logger *zap.Logger) error { f.logger = logger return nil } @@ -80,7 +80,7 @@ func NewFactoryWithConfig( f.options = &Options{ Configuration: cfg, } - err := f.InitializeMetricsFactory(logger) + err := f.Initialize(logger) if err != nil { return nil, err } diff --git a/plugin/metrics/prometheus/factory_test.go b/plugin/metrics/prometheus/factory_test.go index c63b77151d1..bd49eca32d5 100644 --- a/plugin/metrics/prometheus/factory_test.go +++ b/plugin/metrics/prometheus/factory_test.go @@ -32,7 +32,7 @@ var _ storage.MetricsFactory = new(Factory) func TestPrometheusFactory(t *testing.T) { f := NewFactory() - require.NoError(t, f.InitializeMetricsFactory(zap.NewNop())) + require.NoError(t, f.Initialize(zap.NewNop())) assert.NotNil(t, f.logger) listener, err := net.Listen("tcp", "localhost:") diff --git a/storage/factory.go b/storage/factory.go index b7c7fa6e759..61ef31f969b 100644 --- a/storage/factory.go +++ b/storage/factory.go @@ -100,7 +100,7 @@ var ( type MetricsFactory interface { // Initialize performs internal initialization of the factory, such as opening connections to the backend store. // It is called after all configuration of the factory itself has been done. - InitializeMetricsFactory(logger *zap.Logger) error // Tests will fail as MetricsFactory and Factory Interface require Initialize but with different param's + Initialize(logger *zap.Logger) error // Tests will fail as MetricsFactory and Factory Interface require Initialize but with different param's // CreateMetricsReader creates a metricsstore.Reader. CreateMetricsReader() (metricsstore.Reader, error) diff --git a/storage/mocks/MetricsFactory.go b/storage/mocks/MetricsFactory.go index b27d2c91631..4d5d5823450 100644 --- a/storage/mocks/MetricsFactory.go +++ b/storage/mocks/MetricsFactory.go @@ -49,12 +49,12 @@ func (_m *MetricsFactory) CreateMetricsReader() (metricsstore.Reader, error) { return r0, r1 } -// InitializeMetricsFactory provides a mock function with given fields: logger -func (_m *MetricsFactory) InitializeMetricsFactory(logger *zap.Logger) error { +// Initialize provides a mock function with given fields: logger +func (_m *MetricsFactory) Initialize(logger *zap.Logger) error { ret := _m.Called(logger) if len(ret) == 0 { - panic("no return value specified for InitializeMetricsFactory") + panic("no return value specified for Initialize") } var r0 error From f871540c8d529c674c653a110e584236c58f184e Mon Sep 17 00:00:00 2001 From: Raghuram Kannan <78465537+FlamingSaint@users.noreply.github.com> Date: Sun, 14 Jul 2024 22:12:28 +0530 Subject: [PATCH 33/60] Remove comments Signed-off-by: Raghuram Kannan <78465537+FlamingSaint@users.noreply.github.com> --- storage/factory.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/factory.go b/storage/factory.go index 61ef31f969b..41e1527de59 100644 --- a/storage/factory.go +++ b/storage/factory.go @@ -100,7 +100,7 @@ var ( type MetricsFactory interface { // Initialize performs internal initialization of the factory, such as opening connections to the backend store. // It is called after all configuration of the factory itself has been done. - Initialize(logger *zap.Logger) error // Tests will fail as MetricsFactory and Factory Interface require Initialize but with different param's + Initialize(logger *zap.Logger) error // CreateMetricsReader creates a metricsstore.Reader. CreateMetricsReader() (metricsstore.Reader, error) From 78ca11f049f17197abef9b075ad78ccbc3a3dff2 Mon Sep 17 00:00:00 2001 From: Raghuram Kannan <78465537+FlamingSaint@users.noreply.github.com> Date: Sun, 14 Jul 2024 22:13:31 +0530 Subject: [PATCH 34/60] fix Signed-off-by: Raghuram Kannan <78465537+FlamingSaint@users.noreply.github.com> --- storage/factory.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/factory.go b/storage/factory.go index 41e1527de59..7ea98429bd3 100644 --- a/storage/factory.go +++ b/storage/factory.go @@ -100,7 +100,7 @@ var ( type MetricsFactory interface { // Initialize performs internal initialization of the factory, such as opening connections to the backend store. // It is called after all configuration of the factory itself has been done. - Initialize(logger *zap.Logger) error + Initialize(logger *zap.Logger) error // CreateMetricsReader creates a metricsstore.Reader. CreateMetricsReader() (metricsstore.Reader, error) From ed90e304449dc1411316ed594980bbc6b9604688 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 15 Jul 2024 00:37:37 +0530 Subject: [PATCH 35/60] add changes Signed-off-by: FlamingSaint --- .../internal/extension/jaegerquery/server.go | 23 ++++++++++++------- cmd/query/app/querysvc/query_service.go | 22 ------------------ docker-compose/monitor/docker-compose-v2.yml | 4 ++-- 3 files changed, 17 insertions(+), 32 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index 4c4bbb791b9..66d0895373a 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -10,6 +10,7 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/extension" + "go.uber.org/zap" "github.com/jaegertracing/jaeger/cmd/jaeger/internal/extension/jaegerstorage" queryApp "github.com/jaegertracing/jaeger/cmd/query/app" @@ -17,6 +18,8 @@ import ( "github.com/jaegertracing/jaeger/pkg/jtracer" "github.com/jaegertracing/jaeger/pkg/telemetery" "github.com/jaegertracing/jaeger/pkg/tenancy" + "github.com/jaegertracing/jaeger/plugin/metrics/disabled" + "github.com/jaegertracing/jaeger/storage" "github.com/jaegertracing/jaeger/storage/metricsstore" ) @@ -68,8 +71,7 @@ func (s *server) Start(_ context.Context, host component.Host) error { } qs := querysvc.NewQueryService(spanReader, depReader, opts) - var mqs querysvc.MetricsQueryService - mqs, err = s.addMetricStorage(&opts, host) + mqs, err := s.createMetricStorage(host) if err != nil { return err } @@ -129,10 +131,10 @@ func (s *server) addArchiveStorage(opts *querysvc.QueryServiceOptions, host comp return nil } -func (s *server) addMetricStorage(opts *querysvc.QueryServiceOptions, host component.Host) (metricsstore.Reader, error) { +func (s *server) createMetricStorage(host component.Host) (metricsstore.Reader, error) { if s.config.MetricStorage == "" { s.telset.Logger.Info("Metric storage not configured") - return nil, nil + return disabled.NewMetricsReader() } mf, err := jaegerstorage.GetMetricsFactory(s.config.MetricStorage, host) @@ -140,10 +142,15 @@ func (s *server) addMetricStorage(opts *querysvc.QueryServiceOptions, host compo return nil, fmt.Errorf("cannot find metrics storage factory: %w", err) } - metricsReader, ok := opts.InitMetricStorage(mf, s.telset.Logger) - if !ok { - s.telset.Logger.Info("Metric storage not initialized") - return nil, nil + // metricsReader, ok := opts.InitMetricStorage(mf, s.telset.Logger) + metricsReader, err := mf.CreateMetricsReader() + if errors.Is(err, storage.ErrMetricStorageNotConfigured) || errors.Is(err, storage.ErrMetricStorageNotSupported) { + s.telset.Logger.Info("Metric storage not created", zap.String("reason", err.Error())) + return disabled.NewMetricsReader() + } + if err != nil { + s.telset.Logger.Error("Cannot init metric storage reader", zap.Error(err)) + return disabled.NewMetricsReader() } return metricsReader, nil } diff --git a/cmd/query/app/querysvc/query_service.go b/cmd/query/app/querysvc/query_service.go index de3a45b9723..06ec79d94a4 100644 --- a/cmd/query/app/querysvc/query_service.go +++ b/cmd/query/app/querysvc/query_service.go @@ -25,7 +25,6 @@ import ( "github.com/jaegertracing/jaeger/model/adjuster" "github.com/jaegertracing/jaeger/storage" "github.com/jaegertracing/jaeger/storage/dependencystore" - "github.com/jaegertracing/jaeger/storage/metricsstore" "github.com/jaegertracing/jaeger/storage/spanstore" ) @@ -39,7 +38,6 @@ const ( type QueryServiceOptions struct { ArchiveSpanReader spanstore.Reader ArchiveSpanWriter spanstore.Writer - MetricsReader metricsstore.Reader Adjuster adjuster.Adjuster } @@ -169,26 +167,6 @@ func (opts *QueryServiceOptions) InitArchiveStorage(storageFactory storage.Facto return true } -// InitMetricStorage tries to initialize metric storage reader if storage factory supports them. -func (opts *QueryServiceOptions) InitMetricStorage(metricsFactory storage.MetricsFactory, logger *zap.Logger) (metricsstore.Reader, bool) { - // metricsFactory = metricsFactory.(storage.MetricsFactory) - // if !ok { - // logger.Info("Metric storage not supported by the factory") - // return false - // } - reader, err := metricsFactory.CreateMetricsReader() - if errors.Is(err, storage.ErrMetricStorageNotConfigured) || errors.Is(err, storage.ErrMetricStorageNotSupported) { - logger.Info("Metric storage not created", zap.String("reason", err.Error())) - return nil, false - } - if err != nil { - logger.Error("Cannot init metric storage reader", zap.Error(err)) - return nil, false - } - opts.MetricsReader = reader - return reader, true -} - // hasArchiveStorage returns true if archive storage reader/writer are initialized. func (opts *QueryServiceOptions) hasArchiveStorage() bool { return opts.ArchiveSpanReader != nil && opts.ArchiveSpanWriter != nil diff --git a/docker-compose/monitor/docker-compose-v2.yml b/docker-compose/monitor/docker-compose-v2.yml index 060f37d9efb..0707d75f554 100644 --- a/docker-compose/monitor/docker-compose-v2.yml +++ b/docker-compose/monitor/docker-compose-v2.yml @@ -6,8 +6,8 @@ services: image: jaegertracing/jaeger:${JAEGER_IMAGE_TAG:-latest} volumes: - "./jaeger-ui.json:/etc/jaeger/jaeger-ui.json" # Do we need this for v2 ? Seems to be running without this. - - "./jaeger-v2-config.yml:/etc/jaeger/jaeger-v2-config.yml" - command: ["--config", "/etc/jaeger/jaeger-v2-config.yml"] + - "./jaeger-v2-config.yml:/etc/jaeger/config.yml" + command: ["--config", "/etc/jaeger/config.yml"] # TODO: Need to pass this through config # environment: # - METRICS_STORAGE_TYPE=prometheus From 7d4ee8e4f56222a752607ec442c0e42d61febc7f Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 21 Jul 2024 01:47:50 +0530 Subject: [PATCH 36/60] resolve conflicts Signed-off-by: FlamingSaint --- .../{ci-build-spm.yml => ci-e2e-spm.yml} | 0 .../storagereceiver/receiver_test.go | 290 ------------- go.mod | 141 +++--- go.sum | 400 +++++++++--------- 4 files changed, 280 insertions(+), 551 deletions(-) rename .github/workflows/{ci-build-spm.yml => ci-e2e-spm.yml} (100%) delete mode 100644 cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-e2e-spm.yml similarity index 100% rename from .github/workflows/ci-build-spm.yml rename to .github/workflows/ci-e2e-spm.yml diff --git a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go b/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go deleted file mode 100644 index 787f8cbe7d9..00000000000 --- a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright (c) 2024 The Jaeger Authors. -// SPDX-License-Identifier: Apache-2.0 - -package storagereceiver - -import ( - "context" - "errors" - "testing" - "time" - - "github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/storagetest" - jaeger2otlp "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/consumer/consumertest" - "go.opentelemetry.io/collector/pdata/ptrace" - "go.opentelemetry.io/collector/receiver/receivertest" - - "github.com/jaegertracing/jaeger/cmd/jaeger/internal/extension/jaegerstorage" - "github.com/jaegertracing/jaeger/model" - "github.com/jaegertracing/jaeger/storage" - factoryMocks "github.com/jaegertracing/jaeger/storage/mocks" - spanStoreMocks "github.com/jaegertracing/jaeger/storage/spanstore/mocks" -) - -var _ jaegerstorage.Extension = (*mockStorageExt)(nil) - -type mockStorageExt struct { - name string - factory *factoryMocks.Factory - metricsFactory *factoryMocks.MetricsFactory -} - -func (*mockStorageExt) Start(context.Context, component.Host) error { - panic("not implemented") -} - -func (*mockStorageExt) Shutdown(context.Context) error { - panic("not implemented") -} - -func (m *mockStorageExt) Factory(name string) (storage.Factory, bool) { - if m.name == name { - return m.factory, true - } - return nil, false -} - -func (m *mockStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { - if m.name == name { - return m.metricsFactory, true - } - return nil, false -} - -type receiverTest struct { - storageName string - receiveName string - receiveInterval time.Duration - reportStatus func(*component.StatusEvent) - - reader *spanStoreMocks.Reader - factory *factoryMocks.Factory - host *storagetest.StorageHost - receiver *storageReceiver -} - -func withReceiver( - r *receiverTest, - fn func(r *receiverTest), -) { - reader := new(spanStoreMocks.Reader) - factory := new(factoryMocks.Factory) - host := storagetest.NewStorageHost() - host.WithExtension(jaegerstorage.ID, &mockStorageExt{ - name: r.storageName, - factory: factory, - }) - cfg := createDefaultConfig().(*Config) - cfg.TraceStorage = r.receiveName - cfg.PullInterval = r.receiveInterval - receiver, _ := newTracesReceiver( - cfg, - receivertest.NewNopSettings(), - consumertest.NewNop(), - ) - receiver.settings.ReportStatus = func(_ *component.StatusEvent) {} - - r.reader = reader - r.factory = factory - r.host = host - r.receiver = receiver - fn(r) -} - -var ( - services = []string{"example-service-1", "example-service-2"} - spans = []*model.Span{ - { - TraceID: model.NewTraceID(0, 1), - SpanID: model.NewSpanID(1), - Process: &model.Process{ - ServiceName: services[0], - }, - }, - { - TraceID: model.NewTraceID(0, 1), - SpanID: model.NewSpanID(2), - Process: &model.Process{ - ServiceName: services[0], - }, - }, - { - TraceID: model.NewTraceID(0, 2), - SpanID: model.NewSpanID(3), - Process: &model.Process{ - ServiceName: services[1], - }, - }, - { - TraceID: model.NewTraceID(0, 2), - SpanID: model.NewSpanID(4), - Process: &model.Process{ - ServiceName: services[1], - }, - }, - } -) - -func TestReceiver_NoStorageError(t *testing.T) { - r := &receiverTest{ - storageName: "", - receiveName: "foo", - } - withReceiver(r, func(r *receiverTest) { - err := r.receiver.Start(context.Background(), r.host) - require.ErrorContains(t, err, "cannot find storage factory") - }) -} - -func TestReceiver_CreateSpanReaderError(t *testing.T) { - r := &receiverTest{ - storageName: "foo", - receiveName: "foo", - } - withReceiver(r, func(r *receiverTest) { - r.factory.On("CreateSpanReader").Return(nil, errors.New("mocked error")) - - err := r.receiver.Start(context.Background(), r.host) - require.ErrorContains(t, err, "cannot create span reader") - }) -} - -func TestReceiver_GetServiceError(t *testing.T) { - r := &receiverTest{ - storageName: "external-storage", - receiveName: "external-storage", - } - withReceiver(r, func(r *receiverTest) { - r.reader.On("GetServices", mock.AnythingOfType("*context.cancelCtx")).Return([]string{}, errors.New("mocked error")) - r.factory.On("CreateSpanReader").Return(r.reader, nil) - r.receiver.spanReader = r.reader - r.reportStatus = func(se *component.StatusEvent) { - require.ErrorContains(t, se.Err(), "mocked error") - } - - require.NoError(t, r.receiver.Start(context.Background(), r.host)) - }) -} - -func TestReceiver_Shutdown(t *testing.T) { - withReceiver(&receiverTest{}, func(r *receiverTest) { - require.NoError(t, r.receiver.Shutdown(context.Background())) - }) -} - -func TestReceiver_Start(t *testing.T) { - r := &receiverTest{ - storageName: "external-storage", - receiveName: "external-storage", - receiveInterval: 50 * time.Millisecond, - } - withReceiver(r, func(r *receiverTest) { - r.reader.On("GetServices", mock.AnythingOfType("*context.cancelCtx")).Return([]string{}, nil) - r.factory.On("CreateSpanReader").Return(r.reader, nil) - - require.NoError(t, r.receiver.Start(context.Background(), r.host)) - // let the consumeLoop to reach the end of iteration and sleep - time.Sleep(100 * time.Millisecond) - require.NoError(t, r.receiver.Shutdown(context.Background())) - }) -} - -func TestReceiver_StartConsume(t *testing.T) { - tests := []struct { - name string - services []string - traces []*model.Trace - tracesErr error - expectedTraces []*model.Trace - }{ - { - name: "empty service", - }, - { - name: "find traces error", - services: []string{"example-service"}, - tracesErr: errors.New("failed to find traces"), - }, - { - name: "consume first trace", - services: []string{services[0]}, - traces: []*model.Trace{ - {Spans: []*model.Span{spans[0]}}, - }, - expectedTraces: []*model.Trace{ - {Spans: []*model.Span{spans[0]}}, - }, - }, - { - name: "consume second trace", - services: services, - traces: []*model.Trace{ - {Spans: []*model.Span{spans[0]}}, - {Spans: []*model.Span{spans[2], spans[3]}}, - }, - expectedTraces: []*model.Trace{ - {Spans: []*model.Span{spans[0]}}, - {Spans: []*model.Span{spans[2]}}, - {Spans: []*model.Span{spans[3]}}, - }, - }, - { - name: "re-consume first trace with new spans", - services: services, - traces: []*model.Trace{ - {Spans: []*model.Span{spans[0], spans[1]}}, - {Spans: []*model.Span{spans[2], spans[3]}}, - }, - expectedTraces: []*model.Trace{ - {Spans: []*model.Span{spans[0]}}, - {Spans: []*model.Span{spans[2]}}, - {Spans: []*model.Span{spans[3]}}, - // span at index 1 is consumed last - {Spans: []*model.Span{spans[1]}}, - }, - }, - } - - withReceiver(&receiverTest{}, func(r *receiverTest) { - sink := &consumertest.TracesSink{} - r.receiver.nextConsumer = sink - - ctx, cancelFunc := context.WithCancel(context.Background()) - r.receiver.cancelConsumeLoop = cancelFunc - - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - reader := new(spanStoreMocks.Reader) - reader.On("GetServices", mock.AnythingOfType("*context.cancelCtx")).Return(test.services, nil) - reader.On( - "FindTraces", - mock.AnythingOfType("*context.cancelCtx"), - mock.AnythingOfType("*spanstore.TraceQueryParameters"), - ).Return(test.traces, test.tracesErr) - r.receiver.spanReader = reader - - require.NoError(t, r.receiver.Shutdown(ctx)) - require.NoError(t, r.receiver.consumeLoop(ctx)) - - expectedTraces := make([]ptrace.Traces, 0) - for _, trace := range test.expectedTraces { - td, err := jaeger2otlp.ProtoToTraces([]*model.Batch{ - { - Spans: []*model.Span{trace.Spans[0]}, - Process: trace.Spans[0].Process, - }, - }) - require.NoError(t, err) - expectedTraces = append(expectedTraces, td) - } - actualTraces := sink.AllTraces() - assert.Equal(t, expectedTraces, actualTraces) - }) - } - }) -} diff --git a/go.mod b/go.mod index f639e9c8953..a7d408564d4 100644 --- a/go.mod +++ b/go.mod @@ -23,14 +23,14 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 github.com/kr/pretty v0.3.1 github.com/olivere/elastic v6.2.37+incompatible - github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.104.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.104.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.104.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.104.0 + github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.105.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.105.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.105.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.105.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.105.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.105.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.105.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.105.0 github.com/prometheus/client_golang v1.19.1 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.55.0 @@ -41,35 +41,35 @@ require ( github.com/stretchr/testify v1.9.0 github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/xdg-go/scram v1.1.2 - go.opentelemetry.io/collector/component v0.104.0 - go.opentelemetry.io/collector/config/configauth v0.104.0 - go.opentelemetry.io/collector/config/configgrpc v0.104.0 - go.opentelemetry.io/collector/config/confighttp v0.104.0 - go.opentelemetry.io/collector/config/configretry v1.11.0 - go.opentelemetry.io/collector/config/configtls v0.104.0 - go.opentelemetry.io/collector/confmap v0.104.0 - go.opentelemetry.io/collector/confmap/converter/expandconverter v0.104.0 - go.opentelemetry.io/collector/confmap/provider/envprovider v0.104.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v0.104.0 - go.opentelemetry.io/collector/confmap/provider/httpprovider v0.104.0 - go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.104.0 - go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.104.0 - go.opentelemetry.io/collector/connector v0.104.0 - go.opentelemetry.io/collector/connector/forwardconnector v0.104.0 - go.opentelemetry.io/collector/consumer v0.104.0 - go.opentelemetry.io/collector/exporter v0.104.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.104.0 - go.opentelemetry.io/collector/exporter/otlphttpexporter v0.104.0 - go.opentelemetry.io/collector/extension v0.104.0 - go.opentelemetry.io/collector/extension/ballastextension v0.104.0 - go.opentelemetry.io/collector/extension/zpagesextension v0.104.0 - go.opentelemetry.io/collector/otelcol v0.104.0 - go.opentelemetry.io/collector/pdata v1.11.0 - go.opentelemetry.io/collector/processor v0.104.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.104.0 - go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.104.0 - go.opentelemetry.io/collector/receiver v0.104.0 - go.opentelemetry.io/collector/receiver/otlpreceiver v0.104.0 + go.opentelemetry.io/collector/component v0.105.0 + go.opentelemetry.io/collector/config/configauth v0.105.0 + go.opentelemetry.io/collector/config/configgrpc v0.105.0 + go.opentelemetry.io/collector/config/confighttp v0.105.0 + go.opentelemetry.io/collector/config/configretry v1.12.0 + go.opentelemetry.io/collector/config/configtls v1.12.0 + go.opentelemetry.io/collector/confmap v0.105.0 + go.opentelemetry.io/collector/confmap/converter/expandconverter v0.105.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v0.105.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v0.105.0 + go.opentelemetry.io/collector/confmap/provider/httpprovider v0.105.0 + go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.105.0 + go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.105.0 + go.opentelemetry.io/collector/connector v0.105.0 + go.opentelemetry.io/collector/connector/forwardconnector v0.105.0 + go.opentelemetry.io/collector/consumer v0.105.0 + go.opentelemetry.io/collector/exporter v0.105.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.105.0 + go.opentelemetry.io/collector/exporter/otlphttpexporter v0.105.0 + go.opentelemetry.io/collector/extension v0.105.0 + go.opentelemetry.io/collector/extension/ballastextension v0.105.0 + go.opentelemetry.io/collector/extension/zpagesextension v0.105.0 + go.opentelemetry.io/collector/otelcol v0.105.0 + go.opentelemetry.io/collector/pdata v1.12.0 + go.opentelemetry.io/collector/processor v0.105.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.105.0 + go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.105.0 + go.opentelemetry.io/collector/receiver v0.105.0 + go.opentelemetry.io/collector/receiver/otlpreceiver v0.105.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 go.opentelemetry.io/contrib/samplers/jaegerremote v0.22.0 @@ -93,9 +93,18 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) +require ( + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.105.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.105.0 // indirect + go.opentelemetry.io/collector/internal/globalgates v0.105.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.4.0 // indirect + go.opentelemetry.io/otel/log v0.4.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.4.0 // indirect +) + require ( github.com/IBM/sarama v1.43.2 // indirect - github.com/aws/aws-sdk-go v1.53.11 // indirect + github.com/aws/aws-sdk-go v1.53.16 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -153,15 +162,13 @@ require ( github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/onsi/ginkgo v1.16.5 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.105.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.105.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.105.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.105.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.105.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.105.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.105.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/openzipkin/zipkin-go v0.4.3 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect @@ -174,11 +181,11 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/relvacode/iso8601 v1.4.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/cors v1.10.1 // indirect + github.com/rs/cors v1.11.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/shirou/gopsutil/v4 v4.24.5 // indirect + github.com/shirou/gopsutil/v4 v4.24.6 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect @@ -193,24 +200,24 @@ require ( github.com/xdg-go/stringprep v1.0.4 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector v0.104.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.11.0 // indirect - go.opentelemetry.io/collector/config/confignet v0.104.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.11.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.104.0 // indirect - go.opentelemetry.io/collector/config/internal v0.104.0 // indirect - go.opentelemetry.io/collector/exporter/debugexporter v0.104.0 - go.opentelemetry.io/collector/extension/auth v0.104.0 // indirect - go.opentelemetry.io/collector/featuregate v1.11.0 // indirect - go.opentelemetry.io/collector/semconv v0.104.0 // indirect - go.opentelemetry.io/collector/service v0.104.0 // indirect - go.opentelemetry.io/contrib/config v0.7.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.27.0 // indirect - go.opentelemetry.io/contrib/zpages v0.52.0 // indirect - go.opentelemetry.io/otel/bridge/opencensus v1.27.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.27.0 // indirect + go.opentelemetry.io/collector v0.105.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.12.0 // indirect + go.opentelemetry.io/collector/config/confignet v0.105.0 + go.opentelemetry.io/collector/config/configopaque v1.12.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.105.0 // indirect + go.opentelemetry.io/collector/config/internal v0.105.0 // indirect + go.opentelemetry.io/collector/exporter/debugexporter v0.105.0 + go.opentelemetry.io/collector/extension/auth v0.105.0 // indirect + go.opentelemetry.io/collector/featuregate v1.12.0 // indirect + go.opentelemetry.io/collector/semconv v0.105.0 // indirect + go.opentelemetry.io/collector/service v0.105.0 // indirect + go.opentelemetry.io/contrib/config v0.8.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.28.0 // indirect + go.opentelemetry.io/contrib/zpages v0.53.0 // indirect + go.opentelemetry.io/otel/bridge/opencensus v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.28.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/go.sum b/go.sum index 642a6bcf048..5269dcc2d67 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,9 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= +cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= @@ -10,16 +14,16 @@ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6Z github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.5.0 h1:MxA59PGoCFb+vCwRQi3PhQEwHj4+r2dhuv9HG+vM7iM= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.5.0/go.mod h1:uYt4CfhkJA9o0FN7jfE5minm/i4nUE4MjGUJkzB6Zs8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 h1:bXwSugBiSbgtz7rOtbfGf+woewp4f06orW9OP5BjHLA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0/go.mod h1:Y/HgrePTmGy9HjdSGTqZNa+apUpTVIEVKXJyARP2lrk= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= 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/Code-Hex/go-generics-cache v1.3.1 h1:i8rLwyhoyhaerr7JpjtYjJZUcCbWOdiYO3fZXLiEC4g= -github.com/Code-Hex/go-generics-cache v1.3.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= +github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= +github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/IBM/sarama v1.43.2 h1:HABeEqRUh32z8yzY2hGB/j8mHSzC/HA9zlEjqFNCzSw= @@ -39,8 +43,8 @@ github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJ github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.53.11 h1:KcmduYvX15rRqt4ZU/7jKkmDxU/G87LJ9MUI0yQJh00= -github.com/aws/aws-sdk-go v1.53.11/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go v1.53.16 h1:8oZjKQO/ml1WLUZw5hvF7pvYjPf8o9f57Wldoy/q9Qc= +github.com/aws/aws-sdk-go v1.53.16/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 h1:mXoPYz/Ul5HYEDvkta6I8/rnYM5gSdSV2tJ6XbZuEtY= @@ -77,12 +81,12 @@ github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWa github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/digitalocean/godo v1.109.0 h1:4W97RJLJSUQ3veRZDNbp1Ol3Rbn6Lmt9bKGvfqYI5SU= -github.com/digitalocean/godo v1.109.0/go.mod h1:R6EmmWI8CT1+fCtjWY9UCB+L5uufuZH13wk3YhxycCs= +github.com/digitalocean/godo v1.117.0 h1:WVlTe09melDYTd7VCVyvHcNWbgB+uI1O115+5LOtdSw= +github.com/digitalocean/godo v1.117.0/go.mod h1:Vk0vpCot2HOAJwc5WE8wljZGtJ3ZtWIc8MQ8rF38sdo= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE= -github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v26.1.4+incompatible h1:vuTpXDuoga+Z38m1OZHzl7NKisKWaWlhjQk7IDPSLsU= +github.com/docker/docker v26.1.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -111,8 +115,8 @@ github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/Ir github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -145,8 +149,8 @@ github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdX github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE= github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE= -github.com/go-resty/resty/v2 v2.12.0 h1:rsVL8P90LFvkUYq/V5BTVe203WfRIU4gvcf+yfzJzGA= -github.com/go-resty/resty/v2 v2.12.0/go.mod h1:o0yGPrkS3lOe1+eFajk6kBW8ScXzwU3hD69/gt2yB/0= +github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g= +github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= @@ -210,10 +214,10 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= -github.com/gophercloud/gophercloud v1.8.0 h1:TM3Jawprb2NrdOnvcHhWJalmKmAmOGgfZElM/3oBYCk= -github.com/gophercloud/gophercloud v1.8.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= +github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= +github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/gophercloud/gophercloud v1.12.0 h1:Jrz16vPAL93l80q16fp8NplrTCp93y7rZh2P3Q4Yq7g= +github.com/gophercloud/gophercloud v1.12.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= @@ -223,16 +227,16 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= 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-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= -github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= -github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= -github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= +github.com/hashicorp/consul/api v1.29.1 h1:UEwOjYJrd3lG1x5w7HxDRMGiAUPrb3f103EoeKuuEcc= +github.com/hashicorp/consul/api v1.29.1/go.mod h1:lumfRkY/coLuqMICkI7Fh3ylMG31mQSRZyef2c5YvJI= github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -240,14 +244,14 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -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-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= 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-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= -github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -261,12 +265,12 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= 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/nomad/api v0.0.0-20240306004928-3e7191ccb702 h1:fI1LXuBaS1d9z1kmb++Og6YD8uMRwadXorCwE+xgOFA= -github.com/hashicorp/nomad/api v0.0.0-20240306004928-3e7191ccb702/go.mod h1:z71gkJdrkAt/Rl6C7Q79VE7AwJ5lUF+M+fzFTyIHYB0= +github.com/hashicorp/nomad/api v0.0.0-20240604134157-e73d8bb1140d h1:KHq+mAzWSkumj4PDoXc5VZbycPGcmYu8tohgVLQ6SIc= +github.com/hashicorp/nomad/api v0.0.0-20240604134157-e73d8bb1140d/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hetznercloud/hcloud-go/v2 v2.6.0 h1:RJOA2hHZ7rD1pScA4O1NF6qhkHyUdbbxjHgFNot8928= -github.com/hetznercloud/hcloud-go/v2 v2.6.0/go.mod h1:4J1cSE57+g0WS93IiHLV7ubTHItcp+awzeBp5bM9mfA= +github.com/hetznercloud/hcloud-go/v2 v2.9.0 h1:s0N6R7Zoi2DPfMtUF5o9VeUBzTtHVY6MIkHOQnfu/AY= +github.com/hetznercloud/hcloud-go/v2 v2.9.0/go.mod h1:qtW/TuU7Bs16ibXl/ktJarWqU2LwHr7eGlwoilHxtgg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= @@ -325,8 +329,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= 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/linode/linodego v1.33.0 h1:cX2FYry7r6CA1ujBMsdqiM4VhvIQtnWsOuVblzfBhCw= -github.com/linode/linodego v1.33.0/go.mod h1:dSJJgIwqZCF5wnpuC6w5cyIbRtcexAm7uVvuJopGB40= +github.com/linode/linodego v1.35.0 h1:rIhUeCHBLEDlkoRnOTwzSGzljQ3ksXwLxacmXnrV+Do= +github.com/linode/linodego v1.35.0/go.mod h1:JxuhOEAMfSxun6RU5/MgTKH2GGTmFrhKRj3wL1NFin0= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c h1:VtwQ41oftZwlMnOEbMWQtSEUgU64U4s+GHk7hZK+jtY= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -335,20 +339,20 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= 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-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= -github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs= +github.com/miekg/dns v1.1.59/go.mod h1:nZpewl5p6IvctfgrckopVx2OlSEHPRO/U4SYkRklrEk= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= -github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= 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= @@ -374,44 +378,44 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.104.0 h1:6dvpPt8pCcV+TfMnnanFk2NQYf9HN1voSS9iIHdW+L8= -github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.104.0/go.mod h1:MfSM6mt9qH3vHCaj2rlX6IY/7fN+zCLzNJC25XG9rNU= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0 h1:xDA/V4cZ4LXj70la1uzvGaX/xfzeGIEq3txhF7W6TAg= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.104.0/go.mod h1:BxDMJl5xzSbCwcuVFs9jIrBwc1sflBVdihNJxcEKkOE= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0 h1:wYyuqDy0m//cH6pi9W2QKtxDyROzCrcQrRZ8efoW8qo= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.104.0/go.mod h1:OkI4zQzqxqBvpgeXyl4bYEJ+hLtQ14jryeDraVXD4zA= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0 h1:VD2R4q2XziQCJIAsQG2qhlSKyDoT9XaTR2LNkJHs2C0= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.104.0/go.mod h1:sOdPmcOeSXXqZeBflu3Oa+0aWFL8QkAKpr/X1txJYSs= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.104.0 h1:4ke4j/y7AQnRAyYveB+KGcdjVYEKVrwTxc3BDHagdd0= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.104.0/go.mod h1:I2zX9YBggIum9LAHXN1DqqbYOENrHXbXdkXouhwVCHw= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.104.0 h1:/koTWTWCFF7tBYkDX5UzCaEc/ceTU8jij/Yzuj0So3M= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.104.0/go.mod h1:KWVekIHTPScOrLKVYOiijxfEdGK5OBhD4EFNBh96ESg= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.104.0 h1:BGKkg/wBfDeKSMqj8tMC6v03XtMuL9lNltfZiMViBAU= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.104.0/go.mod h1:SqzW5R0kOIs6HAk18+zH+Ej7CehtLVKtyBifT1wqAt0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.104.0 h1:pH5vUaC85j8DcgfgFXlQW3QRoED9DCAGJ5lGw4J/UvE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.104.0/go.mod h1:BsappX8t6TNyk+M0UZ3xMwEtn2IIHy7hqXlThdBoKjI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.104.0 h1:bgS1X1UnUuYfKXsQPq3U50jsMNpN5lI+BcDeklPJOW8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.104.0/go.mod h1:tImy4FWNu1qpaXRVaNi2BU+TmZHtYgLO6LbB6mspZio= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0 h1:Pl4rXXpRG/xJuNWUS3I/w1jViHcrssMf47bGX/Ug/KY= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.104.0/go.mod h1:tP4dyc5+g/qoXYb8lmNj+y+Nhphn4MkL23/np0Zhx2g= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0 h1:dNDjrDhJmSv2JoK3n2hX/nyf/twTTnLuvAhQTMHGQ5M= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.104.0/go.mod h1:SyCZC+vcI2lnyb7iqH0/6dGgCihuqtCxGmLaZToxSHk= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0 h1:V58XfkZBVuOcNL/+US/ZnG8mVy5AbVHV49mGDIgIMo8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.104.0/go.mod h1:HpEqZW6TOsujFvvOSkcCFj7N2NEW4LP/Q6X7/ryfSnA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0 h1:3joQv7QiLvsVfrpqYAxHvq3bKUaUEpgg93fMLW+TU2w= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.104.0/go.mod h1:aUAgxXQQPiSajwMXQv4LobDTc16ezeF9S1Xh53yHbOg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0 h1:eCceBGaatwEKLiOzYjrYc4zNSMMfb+5Of9VNUnTYU80= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.104.0/go.mod h1:/mkH8dlZxnFRoccQoXkN/XOP6Q7G/1F8XTUO9+xZw7U= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0 h1:oIYYjBh2kNi7APSArA/9YCQzLwOlMdUhqMxUoMoTChY= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.104.0/go.mod h1:hRayDDoU1e1POXuDO7RpwcqIirFJoCdSgHgICY0hNNI= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.104.0 h1:9HJ3ejNoiMFWxTRy9gobdurEocf79QlxwlYrOY9tMIQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.104.0/go.mod h1:Ax4DroNn/xKyjWoJCd3FQE9xOZqHSTdDEj1I3HLNOeQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.104.0 h1:sE+B+i3m9sMecnJZkljnUrykzkRkEFvXJWPckwbQOVc= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.104.0/go.mod h1:cyzp/19NsVmEz7mTS/LHf2m8e26MnlGK8x1kga3rX9I= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.104.0 h1:Nwkj5EFH90NxWPcl4qeef5AX+A1COWn1Xy1mkzuyIHE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.104.0/go.mod h1:NJwlpVFJu2Dd1mEqCHzSXSNmd5JDhWGVDqo1Oi3RZKk= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.104.0 h1:U04Ezl3Keb1j6bcVktvgvAbbMEyPDkM5sNboQgPYI1w= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.104.0/go.mod h1:GbpsurP8UERCcHyIB/gUMKcAK3kIypKGE0O+aqbNa/c= +github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.105.0 h1:DVaUWxeO8VNH/zQrP9vqz8eZwaaVzWQNCmcWGxbFoWk= +github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.105.0/go.mod h1:45iX3DRsbK2XlbHzEWtIvud56FE2XdC7crKIne4DUaU= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.105.0 h1:HcFHS9xNt2nI9yphhvvgWekr9zsP2jVi8IQUckAxCUk= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.105.0/go.mod h1:DB9+mDKgg/nO+vZca48EWvCTcOjHyjOeJKAbP+WfPXU= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.105.0 h1:L3zHDcjdhyvZatjv0jGAR9ShWYY4a9sDCBcdxCxdKcU= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.105.0/go.mod h1:plLxFSlZzwEa06qc/1pVH1EQISsnSsMX9PwXYKEB/sg= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.105.0 h1:HmimWATFFNI8o6n52DXTS2EjFRa6aETNqmA3MBGAxSI= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.105.0/go.mod h1:DoCIQkjzSFD/rRq9rsI4kzYKcHRn6B7g7txILM18dHQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.105.0 h1:kHHL4A9wL6TxM2sIUEXUpFXGPxrW7u002FJK+majI0s= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.105.0/go.mod h1:I+fL3494NrarNgHHs2D7kz0v02KGCmwmp3L89KUqENA= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.105.0 h1:k89VhlOwi0uYkEOgoR0ISTct07GaBoQmhnI1yypKa4I= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.105.0/go.mod h1:6k6afq9nYwfBbo9z0XhS1AJzFtosTFHoBVJ5v/Ugv+8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.105.0 h1:xQfrUHMnTnXolFjIaMAoORoLRBl7/yD8oygjXF4Fdoo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.105.0/go.mod h1:S/+5qZ/2j2QmSpdgC97gLdXhuK71IGeJHoG2D/szuy8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.105.0 h1:HHQOzApli6RjBO0Ujh8OiBIXtFErojbCEBAzsyw/39Q= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.105.0/go.mod h1:96jBGagp5wck48k+qfJpxc3SIj3zLRXbP9E1m97gvLI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.105.0 h1:Zn3WKPLUXcIQTeu5K2elsi/Ncq14MBRZQPaVdJC+6cQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.105.0/go.mod h1:hzu5KvOYEH5W9OpVc+iRXUAvj7GHcLyyR4qjIH+hOhQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.105.0 h1:hs7TaJClEAhHrj71XcaYqlYnIOpOYQgoHqhnnBNrOK8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.105.0/go.mod h1:ehzaiDdkrww7l1Stvse5GCOAsAZOpFcgeIbB/2PqFs4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.105.0 h1:wKujcXESoQPBWIxYIET7YP6lN2idX8oZRsNl8iWXum0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.105.0/go.mod h1:n9awPzI+erPm8NB8yL/UusWvF5P741BbHv5bcWYMXrc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.105.0 h1:PfbW/oTNBNOCzantcwnGXMuc+qhMSUhdcWnfO0qXEhs= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.105.0/go.mod h1:NZsH4m+WpkVKuUYK6Te0Z012jjhfmVcVL3M1W/0Hw4w= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.105.0 h1:EIMptO6ZZeP734nBLxNVftrWA+OEGtgsxarNH7rao2A= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.105.0/go.mod h1:/2F91Hsx7RAn/FENz/7MRbHBkBYQ/uX6t4tYJfyeBfM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.105.0 h1:hKpdsx8wzn/wA3hAavSEVKLUBfkYkpfXpudT+VUxucA= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.105.0/go.mod h1:1Tq47AVtrvxnohU1Is3EV/zv2ifPwdRSW735xG+zvFU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.105.0 h1:60worMGZbZFw6djolg/CVExX6DPQoXgfM4pmdZj2b7E= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.105.0/go.mod h1:Nhq0L1GhTdyl/Td94xCiys0kJMO9lOsezhYRXz0MTvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.105.0 h1:KGvKn2n/tV5aG3JlryEgXnnSVnY0O6YFWGOY72OI8MY= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.105.0/go.mod h1:NKh0a5RFTHnvxRRmjlV96ZzSc5xZrHr1yPRWxskjBB0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.105.0 h1:JADJYzFGjD3c7eVKYYAHxMFE9rBtMTEPM/4t8C8ww3Q= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.105.0/go.mod h1:rGyiKbLfQyHk5Q+ZSGs4wH8kb2J+SbIlEiytjB/cDdI= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.105.0 h1:s2kcmrILHXgutAl3Slol4xlDUMJTYjEU7kppk3DkZ2s= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.105.0/go.mod h1:gBmEBZB1odOni3kBpY+EbOBcXOK3tDu2eoqegdSeXtY= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.105.0 h1:JLYDrRk4oJB5CZY49Q1AhvpN8Tnl8faPG0CqpnDOFIw= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.105.0/go.mod h1:73LyO27uXzwtEZrSq/7b1wi5FG9aHx6TUVcCDaxJ5mw= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -420,8 +424,8 @@ 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.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg= github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c= -github.com/ovh/go-ovh v1.4.3 h1:Gs3V823zwTFpzgGLZNI6ILS4rmxZgJwJCz54Er9LwD0= -github.com/ovh/go-ovh v1.4.3/go.mod h1:AkPXVtgwB6xlKblMjRKJJmjRp+ogrE7fz2lVgcQY8SY= +github.com/ovh/go-ovh v1.5.1 h1:P8O+7H+NQuFK9P/j4sFW5C0fvSS2DnHYGPwdVCp45wI= +github.com/ovh/go-ovh v1.5.1/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= @@ -451,8 +455,8 @@ github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdD github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/prometheus/prometheus v0.51.2-0.20240405174432-b4a973753c6e h1:UmqAuY2OyDoog8+l5FybViJE5B2r+UxVGCUwFTsY5AA= -github.com/prometheus/prometheus v0.51.2-0.20240405174432-b4a973753c6e/go.mod h1:+0ld+ozir7zWFcHA2vVpWAKxXakIioEjPPNOqH+J3ZA= +github.com/prometheus/prometheus v0.53.0 h1:vOnhpUKrDv954jnVBvhG/ZQJ3kqscnKI+Hbdwo2tAhc= +github.com/prometheus/prometheus v0.53.0/go.mod h1:RZDkzs+ShMBDkAPQkLEaLBXpjmDcjhNxU2drUVPgKUU= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/relvacode/iso8601 v1.4.0 h1:GsInVSEJfkYuirYFxa80nMLbH2aydgZpIf52gYZXUJs= @@ -461,8 +465,8 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= -github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= +github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -470,10 +474,10 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.25 h1:/8rfZAdFfafRXOgz+ZpMZZWZ5pYggCY9t7e/BvjaBHM= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.25/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= -github.com/shirou/gopsutil/v4 v4.24.5 h1:gGsArG5K6vmsh5hcFOHaPm87UD003CaDMkAOweSQjhM= -github.com/shirou/gopsutil/v4 v4.24.5/go.mod h1:aoebb2vxetJ/yIDZISmduFvVNPHqXQ9SEJwRXxkf0RA= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.27 h1:yGAraK1uUjlhSXgNMIy8o/J4LFNcy7yeipBqt9N9mVg= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.27/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/shirou/gopsutil/v4 v4.24.6 h1:9qqCSYF2pgOU+t+NgJtp7Co5+5mHF/HyKBUckySQL64= +github.com/shirou/gopsutil/v4 v4.24.6/go.mod h1:aoebb2vxetJ/yIDZISmduFvVNPHqXQ9SEJwRXxkf0RA= 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= @@ -541,110 +545,114 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= 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.104.0 h1:R3zjM4O3K3+ttzsjPV75P80xalxRbwYTURlK0ys7uyo= -go.opentelemetry.io/collector v0.104.0/go.mod h1:Tm6F3na9ajnOm6I5goU9dURKxq1fSBK1yA94nvUix3k= -go.opentelemetry.io/collector/component v0.104.0 h1:jqu/X9rnv8ha0RNZ1a9+x7OU49KwSMsPbOuIEykHuQE= -go.opentelemetry.io/collector/component v0.104.0/go.mod h1:1C7C0hMVSbXyY1ycCmaMUAR9fVwpgyiNQqxXtEWhVpw= -go.opentelemetry.io/collector/config/configauth v0.104.0 h1:ULtjugImijpKuLgGVt0E0HwiZT7+uDUEtMquh1ODB24= -go.opentelemetry.io/collector/config/configauth v0.104.0/go.mod h1:Til+nLLrQwwhgmfcGTX4ZRcNuMhdaWhBW1jH9DLTabQ= -go.opentelemetry.io/collector/config/configcompression v1.11.0 h1:oTwbcLh7mWHSDUIZXkRJVdNAMoBGS39XF68goTMOQq8= -go.opentelemetry.io/collector/config/configcompression v1.11.0/go.mod h1:6+m0GKCv7JKzaumn7u80A2dLNCuYf5wdR87HWreoBO0= -go.opentelemetry.io/collector/config/configgrpc v0.104.0 h1:E3RtqryQPOm/trJmhlJZj6cCqJNKgv9fOEQvSEpzsFM= -go.opentelemetry.io/collector/config/configgrpc v0.104.0/go.mod h1:tu3ifnJ5pv+4rZcaqNWfvVLjNKb8icSPoClN3THN8PU= -go.opentelemetry.io/collector/config/confighttp v0.104.0 h1:KSY0FSHSjuPyrR6iA2g5oFTozYFpYcy0ssJny8gTNTQ= -go.opentelemetry.io/collector/config/confighttp v0.104.0/go.mod h1:YgSXwuMYHANzzv+IBjHXaBMG/4G2mrseIpICHj+LB3U= -go.opentelemetry.io/collector/config/confignet v0.104.0 h1:i7AOTJf4EQox3SEt1YtQFQR+BwXr3v5D9x3Ai9/ovy8= -go.opentelemetry.io/collector/config/confignet v0.104.0/go.mod h1:pfOrCTfSZEB6H2rKtx41/3RN4dKs+X2EKQbw3MGRh0E= -go.opentelemetry.io/collector/config/configopaque v1.11.0 h1:Pt06PXWVmRaiSX63mzwT8Z9SV/hOc6VHNZbfZ10YY4o= -go.opentelemetry.io/collector/config/configopaque v1.11.0/go.mod h1:0xURn2sOy5j4fbaocpEYfM97HPGsiffkkVudSPyTJlM= -go.opentelemetry.io/collector/config/configretry v1.11.0 h1:UdEDD0ThxPU7+n2EiKJxVTvDCGygXu9hTfT6LOQv9DY= -go.opentelemetry.io/collector/config/configretry v1.11.0/go.mod h1:P+RA0IA+QoxnDn4072uyeAk1RIoYiCbxYsjpKX5eFC4= -go.opentelemetry.io/collector/config/configtelemetry v0.104.0 h1:eHv98XIhapZA8MgTiipvi+FDOXoFhCYOwyKReOt+E4E= -go.opentelemetry.io/collector/config/configtelemetry v0.104.0/go.mod h1:WxWKNVAQJg/Io1nA3xLgn/DWLE/W1QOB2+/Js3ACi40= -go.opentelemetry.io/collector/config/configtls v0.104.0 h1:bMmLz2+r+REpO7cDOR+srOJHfitqTZfSZCffDpKfwWk= -go.opentelemetry.io/collector/config/configtls v0.104.0/go.mod h1:e33o7TWcKfe4ToLFyGISEPGMgp6ezf3yHRGY4gs9nKk= -go.opentelemetry.io/collector/config/internal v0.104.0 h1:h3OkxTfXWWrHRyPEGMpJb4fH+54puSBuzm6GQbuEZ2o= -go.opentelemetry.io/collector/config/internal v0.104.0/go.mod h1:KjH43jsAUFyZPeTOz7GrPORMQCK13wRMCyQpWk99gMo= -go.opentelemetry.io/collector/confmap v0.104.0 h1:d3yuwX+CHpoyCh0iMv3rqb/vwAekjSm4ZDL6UK1nZSA= -go.opentelemetry.io/collector/confmap v0.104.0/go.mod h1:F8Lue+tPPn2oldXcfqI75PPMJoyzgUsKVtM/uHZLA4w= -go.opentelemetry.io/collector/confmap/converter/expandconverter v0.104.0 h1:7BhJk71V8xhm8wUpuHG4CVRAPu8JajKj8VmGZ6zS7SA= -go.opentelemetry.io/collector/confmap/converter/expandconverter v0.104.0/go.mod h1:o2xTZJpc65SyYPOAGOjyvWwQEqYSWT4Q4/gMfOYpAzc= -go.opentelemetry.io/collector/confmap/provider/envprovider v0.104.0 h1:/3iSlUHH1Q3xeZc55oVekd4dibXzqgphXZI7EaYJ+ak= -go.opentelemetry.io/collector/confmap/provider/envprovider v0.104.0/go.mod h1:RZDXvP81JwvIGeq3rvDBrRKMUfn2BeKCmppHm4Qm0D8= -go.opentelemetry.io/collector/confmap/provider/fileprovider v0.104.0 h1:B+nMVlIUQxuP52CZSegGuA2z9S+Cv2XwFb2a/TLFPhc= -go.opentelemetry.io/collector/confmap/provider/fileprovider v0.104.0/go.mod h1:O0RcaP/I/kn7JHrwohUfj6AwvQYLxjbqg/HnjkvLLTw= -go.opentelemetry.io/collector/confmap/provider/httpprovider v0.104.0 h1:6UreSAu64Ft3VfKWE3sjcmf+mWMyWemSsrjS/fjRPpQ= -go.opentelemetry.io/collector/confmap/provider/httpprovider v0.104.0/go.mod h1:+vP6R5i9h+oYJNjp4bQHvtSHEu1t+CgSKIeZYZZRQXA= -go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.104.0 h1:y07I19lmp9VHZ58PJ3nwwd1wqumnIBeMxTNBSh/Vn6k= -go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.104.0/go.mod h1:WV1HOa0z3Ln5ZkwEW7Cm2pCHkfzYY9kBe0dLy8DqeYA= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.104.0 h1:itBGhyEbX+iz8kz3nc4PYxQx4bL7y87xXNUcGnbKPuY= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.104.0/go.mod h1:iPVsTBkRFHZ21UEfSGWk8c4maOzTp6BWWpTk+l6PjJI= -go.opentelemetry.io/collector/connector v0.104.0 h1:Y82ytwZZ+EruWafEebO0dgWMH+TdkcSONEqZ5bm9JYA= -go.opentelemetry.io/collector/connector v0.104.0/go.mod h1:78SEHel3B3taFnSBg/syW4OV9aU1Ec9KjgbgHf/L8JA= -go.opentelemetry.io/collector/connector/forwardconnector v0.104.0 h1:35tTQfTDb+baDcP1F/wdm/mV7CyMKaOx5un4QWEHYRk= -go.opentelemetry.io/collector/connector/forwardconnector v0.104.0/go.mod h1:N5wZtusSfyIUK1qgbfQ+i6y26rFDTvD4QWJHNMnjLQM= -go.opentelemetry.io/collector/consumer v0.104.0 h1:Z1ZjapFp5mUcbkGEL96ljpqLIUMhRgQQpYKkDRtxy+4= -go.opentelemetry.io/collector/consumer v0.104.0/go.mod h1:60zcIb0W9GW0z9uJCv6NmjpSbCfBOeRUyrtEwqK6Hzo= -go.opentelemetry.io/collector/exporter v0.104.0 h1:C2HmnfBa05IQ2T+p9T7K7gXVxjrBLd+JxEtAWo7JNbg= -go.opentelemetry.io/collector/exporter v0.104.0/go.mod h1:Rx0oB0E4Ccg1JuAnEWwhtrq1ygRBkfx4mco1DpR3WaQ= -go.opentelemetry.io/collector/exporter/debugexporter v0.104.0 h1:1Z63H/xxv6IzMP7GPmI6v/lQAqZwYZCVC0rWYcYOomw= -go.opentelemetry.io/collector/exporter/debugexporter v0.104.0/go.mod h1:NHVzTM0Z/bomgR7SAe3ysx4CZzh2UJ3TXWSCnaOB1Wo= -go.opentelemetry.io/collector/exporter/otlpexporter v0.104.0 h1:EFOdhnc2yGhqou0Tud1HsM7fsgWo/H3tdQhYYytDprQ= -go.opentelemetry.io/collector/exporter/otlpexporter v0.104.0/go.mod h1:fAF7Q3Xh0OkxYWUycdrNNDXkyz3nhHIRKDkez0aQ6zg= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.104.0 h1:JkNCOj7DdyJhcYIaRqtS/X+YtAPRjE4pcruyY6LoM7c= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.104.0/go.mod h1:6rs4Xugs7tIC3IFbAC+fj56zLiVc7osXC5UTjk/Mkw4= -go.opentelemetry.io/collector/extension v0.104.0 h1:bftkgFMKya/QIwK+bOxEAPVs/TvTez+s1mlaiUznJkA= -go.opentelemetry.io/collector/extension v0.104.0/go.mod h1:x7K0KyM1JGrtLbafEbRoVp0VpGBHpyx9hu87bsja6S4= -go.opentelemetry.io/collector/extension/auth v0.104.0 h1:SelhccGCrqLThPlkbv6lbAowHsjgOTAWcAPz085IEC4= -go.opentelemetry.io/collector/extension/auth v0.104.0/go.mod h1:s3/C7LTSfa91QK0JPMTRIvH/gCv+a4DGiiNeTAX9OhI= -go.opentelemetry.io/collector/extension/ballastextension v0.104.0 h1:5GESICl2J7jBQ6O8dGHuv077ptoIwhwMiF0zEAfcHcU= -go.opentelemetry.io/collector/extension/ballastextension v0.104.0/go.mod h1:TYZBh3PK6fPzTS/2LOklyn/7Lv79k7/WfOsQrlT9cQQ= -go.opentelemetry.io/collector/extension/zpagesextension v0.104.0 h1:rJ9Sw6DR27s6bW7lWBjJhjth5CXpltAHBKIgUFgVwFs= -go.opentelemetry.io/collector/extension/zpagesextension v0.104.0/go.mod h1:85Exj8r237PIvaXL1a/S0KeVNnm3kQNpVXtu0O2Zk5k= -go.opentelemetry.io/collector/featuregate v1.11.0 h1:Z7puIymKoQRm3oNM/NH8reWc2zRPz2PNaJvuokh0lQY= -go.opentelemetry.io/collector/featuregate v1.11.0/go.mod h1:PsOINaGgTiFc+Tzu2K/X2jP+Ngmlp7YKGV1XrnBkH7U= -go.opentelemetry.io/collector/otelcol v0.104.0 h1:RnMx7RaSFmX4dq/l3wbXWwcUnFK7RU19AM/0FbMr0Ig= -go.opentelemetry.io/collector/otelcol v0.104.0/go.mod h1:hWFRiHIKT3zbUx6SRevusPRa6mfm+70bPG5CK0glqSU= -go.opentelemetry.io/collector/pdata v1.11.0 h1:rzYyV1zfTQQz1DI9hCiaKyyaczqawN75XO9mdXmR/hE= -go.opentelemetry.io/collector/pdata v1.11.0/go.mod h1:IHxHsp+Jq/xfjORQMDJjSH6jvedOSTOyu3nbxqhWSYE= -go.opentelemetry.io/collector/pdata/pprofile v0.104.0 h1:MYOIHvPlKEJbWLiBKFQWGD0xd2u22xGVLt4jPbdxP4Y= -go.opentelemetry.io/collector/pdata/pprofile v0.104.0/go.mod h1:7WpyHk2wJZRx70CGkBio8klrYTTXASbyIhf+rH4FKnA= -go.opentelemetry.io/collector/pdata/testdata v0.104.0 h1:BKTZ7hIyAX5DMPecrXkVB2e86HwWtJyOlXn/5vSVXNw= -go.opentelemetry.io/collector/pdata/testdata v0.104.0/go.mod h1:3SnYKu8gLfxURJMWS/cFEUFs+jEKS6jvfqKXnOZsdkQ= -go.opentelemetry.io/collector/processor v0.104.0 h1:KSvMDu4DWmK1/k2z2rOzMtTvAa00jnTabtPEK9WOSYI= -go.opentelemetry.io/collector/processor v0.104.0/go.mod h1:qU2/xCCYdvVORkN6aq0H/WUWkvo505VGYg2eOwPvaTg= -go.opentelemetry.io/collector/processor/batchprocessor v0.104.0 h1:6xXvHYkPjwM1zdzliDM2H/omTGgIOkY96JTCln7CFZQ= -go.opentelemetry.io/collector/processor/batchprocessor v0.104.0/go.mod h1:f1VfVdiOlqtJDAvQy8YONEee19nJ3haxNeiMPy59w8M= -go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.104.0 h1:bfxUNxP2i41Dpdp5cXwVuh4ZIQ8g6e4NDnu5HakWQw4= -go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.104.0/go.mod h1:2HtP0f+EBu99Uq07JF20fa2FKAsjnIieOZ4f9Jysfpc= -go.opentelemetry.io/collector/receiver v0.104.0 h1:URL1ExkYYd+qbndm7CdGvI2mxzsv/pNfmwJ+1QSQ9/o= -go.opentelemetry.io/collector/receiver v0.104.0/go.mod h1:+enTCZQLf6dRRANWvykXEzrlRw2JDppXJtoYWd/Dd54= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.104.0 h1:t9cACuSc7kY09guws7VyB/z9QnG7/zWLC1NQ29WH4+o= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.104.0/go.mod h1:sPIIO4F6uit1i/XQgfe2WryvdO5Hr16bQgZTaXcR8mM= -go.opentelemetry.io/collector/semconv v0.104.0 h1:dUvajnh+AYJLEW/XOPk0T0BlwltSdi3vrjO7nSOos3k= -go.opentelemetry.io/collector/semconv v0.104.0/go.mod h1:yMVUCNoQPZVq/IPfrHrnntZTWsLf5YGZ7qwKulIl5hw= -go.opentelemetry.io/collector/service v0.104.0 h1:DTpkoX4C6qiA3v3cfB2cHv/cH705o5JI9J3P77SFUrE= -go.opentelemetry.io/collector/service v0.104.0/go.mod h1:eq68zgpqRDYaVp60NeRu973J0rA5vZJkezfw/EzxLXc= -go.opentelemetry.io/contrib/config v0.7.0 h1:b1rK5tGTuhhPirJiMxOcyQfZs76j2VapY6ODn3b2Dbs= -go.opentelemetry.io/contrib/config v0.7.0/go.mod h1:8tdiFd8N5etOi3XzBmAoMxplEzI3TcL8dU5rM5/xcOQ= +go.opentelemetry.io/collector v0.105.0 h1:Qw/ONVMPT3aD8HjdDRcXCGoZrtSWH3jx4BkwAN1yrEM= +go.opentelemetry.io/collector v0.105.0/go.mod h1:UVapTqB4fJeZpGU/YgOo6665cxCSytqYmMkVmRlu2cg= +go.opentelemetry.io/collector/component v0.105.0 h1:/OdkWHd1xTNX7JRq9iW3AFoJAnYUOGZZyOprNQkGoTI= +go.opentelemetry.io/collector/component v0.105.0/go.mod h1:s8KoxOrhNIBzetkb0LHmzX1OI67DyZbaaUPOWIXS1mg= +go.opentelemetry.io/collector/config/configauth v0.105.0 h1:9Pa65Ay4kdmMsp5mg+/791GvCYy1hHOroIlKBiJzlps= +go.opentelemetry.io/collector/config/configauth v0.105.0/go.mod h1:iL62YzyFCNr1Se0EDYaQ792CFCBiFivSbTWekd4g1VE= +go.opentelemetry.io/collector/config/configcompression v1.12.0 h1:RxqSDVZPJyL7I3v+gdVDvnJ/9tV0ZWgraRDX/gaddfA= +go.opentelemetry.io/collector/config/configcompression v1.12.0/go.mod h1:6+m0GKCv7JKzaumn7u80A2dLNCuYf5wdR87HWreoBO0= +go.opentelemetry.io/collector/config/configgrpc v0.105.0 h1:3IbN6+5c42Bp6CGPKoXZ7QkkQpRxnV01KRse6oD+bd0= +go.opentelemetry.io/collector/config/configgrpc v0.105.0/go.mod h1:wrFPXVXk4so7yYisuPeebZtU6ECzG5aXOYNdfyoHSnI= +go.opentelemetry.io/collector/config/confighttp v0.105.0 h1:0sVdNFuLikgDhxdp+mrbSrYzovwRxZDVIhv9ZQ0X5e4= +go.opentelemetry.io/collector/config/confighttp v0.105.0/go.mod h1:1JMvF8ocjlNxwrVIUJHy9wTEW/nlKs1LLPlTSg4D044= +go.opentelemetry.io/collector/config/confignet v0.105.0 h1:O8kenkWnLPemp2XXVOqFv6OQd9wsnOvBUvl3OlJGPKI= +go.opentelemetry.io/collector/config/confignet v0.105.0/go.mod h1:pfOrCTfSZEB6H2rKtx41/3RN4dKs+X2EKQbw3MGRh0E= +go.opentelemetry.io/collector/config/configopaque v1.12.0 h1:aIsp9NdcLZSiG4YDoFPGXhmma03Tk+6e89+n8GtU/Mc= +go.opentelemetry.io/collector/config/configopaque v1.12.0/go.mod h1:0xURn2sOy5j4fbaocpEYfM97HPGsiffkkVudSPyTJlM= +go.opentelemetry.io/collector/config/configretry v1.12.0 h1:tEBwueO4AIkwWosxz6NWqnghdZ7y5SfHcIzLrvh6kB8= +go.opentelemetry.io/collector/config/configretry v1.12.0/go.mod h1:P+RA0IA+QoxnDn4072uyeAk1RIoYiCbxYsjpKX5eFC4= +go.opentelemetry.io/collector/config/configtelemetry v0.105.0 h1:wEfUxAjjstp47aLr2s1cMZiH0dt+k42m6VC6HigqgJA= +go.opentelemetry.io/collector/config/configtelemetry v0.105.0/go.mod h1:WxWKNVAQJg/Io1nA3xLgn/DWLE/W1QOB2+/Js3ACi40= +go.opentelemetry.io/collector/config/configtls v1.12.0 h1:Px0+GE4LE/9sXMgkwBb5g8QHWvnrnuRg9BLSa+QtxgM= +go.opentelemetry.io/collector/config/configtls v1.12.0/go.mod h1:aeCGPlvrWhc+EySpIKdelPAj4l9wXKzZPouQO3NIoTs= +go.opentelemetry.io/collector/config/internal v0.105.0 h1:PWnbeslkIGMjZzh5IJRjO6bA02d1Xrkjw2N60ixWzqQ= +go.opentelemetry.io/collector/config/internal v0.105.0/go.mod h1:+Y5vRJ+lio2uuYlVPfy9AZVrip9Y0B9PiUA5Vz7lzZw= +go.opentelemetry.io/collector/confmap v0.105.0 h1:3NP2BbUju42rjeQvRbmpCJGJGvbiV3WnGyXsVmocimo= +go.opentelemetry.io/collector/confmap v0.105.0/go.mod h1:Oj1xUBRvAuL8OWWMj9sSYf1uQpB+AErpj+FKGUQLBI0= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.105.0 h1:1c81AJg+WP+dGoAEftmc0KF5RK0mh4bxIFlU902CnFI= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.105.0/go.mod h1:ImkfsdJToeP3ZZ5ZVmQUdaKEueVHiZbwrQGyoDx/EiM= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.105.0 h1:r+5ZxhDLYqd6klLky3gtgWHgG5L2LX6o6VIvaLG39Gs= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.105.0/go.mod h1:Srzkp9izW29pJtwoVtpL+bAN5ibtv+fyLg9JWZzCCi8= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.105.0 h1:RgQwEbJgx+BihDt8yhiqmEi8IjQYFwbzsYRcTzvM7E4= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.105.0/go.mod h1:P7oT+6eaMv+ZyPSu6SEKalfR/UALdQgE3hq36b0Iww4= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.105.0 h1:hgzauRlEZId1AM00g3EHl4GaR4GLG23sdvmSRWQ9iFQ= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.105.0/go.mod h1:TqZbmLcG9GvLp76q45eE0EwiTHBmj4qRP32fI48DH5Q= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.105.0 h1:xQr2I7iQPDkFP/E2H9lg6jfAtpY1iz2oLGEFwa2FaeE= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.105.0/go.mod h1:UVTcdI8WhTXl8duc0EkeJU7nSQNptHwE6D/eqgeand0= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.105.0 h1:SAF6JFrjQ8YkFnggA5iiw9eKiBYDaO6ynK0Dl+vzIgw= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.105.0/go.mod h1:bWMg+SNk/PwEMiLWV0eCFNL4Er59aXsdDKq+2JzMOkE= +go.opentelemetry.io/collector/connector v0.105.0 h1:hmTsI6rnPAXsdVJ+wYrgeNTCrQzxzglU37qPlNSKTy0= +go.opentelemetry.io/collector/connector v0.105.0/go.mod h1:xQnq1Ygd/F4Kb93E0UsKus5YDINeyQ6GzCkxoujI9TE= +go.opentelemetry.io/collector/connector/forwardconnector v0.105.0 h1:e9gvf11xfijwraZLBf3IHXEk1YpXxMoJfqXarYo7ZNU= +go.opentelemetry.io/collector/connector/forwardconnector v0.105.0/go.mod h1:XIeSscBCAcpywFa7oVwTOpdHjRojS7No6Yz34YhFBp4= +go.opentelemetry.io/collector/consumer v0.105.0 h1:pO5Tspoz7yvEs81+904HfDjByP8Z7uuNk+7pOr3lRHM= +go.opentelemetry.io/collector/consumer v0.105.0/go.mod h1:tnaPDHUfKBJ01OnsJNRecniG9iciE+xHYLqamYwFQOQ= +go.opentelemetry.io/collector/exporter v0.105.0 h1:O2xmjfaRbkbpo3XkwEcnuBHCoXc5kS9CjYO8geu+3vo= +go.opentelemetry.io/collector/exporter v0.105.0/go.mod h1:5ulGEHRZyGbX4DWHJa2Br6Fr/W1Lay8ayf++1WrVvgk= +go.opentelemetry.io/collector/exporter/debugexporter v0.105.0 h1:Osqo7+pr1vZbt+12KMzZrst6uMv1r8UJZjTgI6vwqL4= +go.opentelemetry.io/collector/exporter/debugexporter v0.105.0/go.mod h1:rqjWoduh/qj6OlttzdbB8Ji6Vp4SoHJRnZHNuS/Mkp0= +go.opentelemetry.io/collector/exporter/otlpexporter v0.105.0 h1:JWAlh7A1oNm4LqUrrtPjAmUdvcE11VZCeJhMk0lShYg= +go.opentelemetry.io/collector/exporter/otlpexporter v0.105.0/go.mod h1:aA2E+t2giwUoJ2RmDw+2dVox64J2zHpTT2m/mi7zOIM= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.105.0 h1:ciJvNlC9ztoeyIi23TCpZ6PN7l75tl/yvKqBo0Cmajw= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.105.0/go.mod h1:e+PdCkQkP+1cj0+cijRfmE4/VjofxeeWoS1cvvu39HI= +go.opentelemetry.io/collector/extension v0.105.0 h1:R8i4HMvuSm20Nt3onyrLk19KKhjCNAsgS8FGh60rcZU= +go.opentelemetry.io/collector/extension v0.105.0/go.mod h1:oyX960URG27esNKitf3o2rqcBj0ajcx+dxkCxwRz34U= +go.opentelemetry.io/collector/extension/auth v0.105.0 h1:5gzRSHU0obVtZDzLLJQ/p4sIkacUsyEEpBiBRDs82Hk= +go.opentelemetry.io/collector/extension/auth v0.105.0/go.mod h1:zf45v7u1nKbdDHeMuhBVdSFwhbq2w9IWCbFKcDSkW5I= +go.opentelemetry.io/collector/extension/ballastextension v0.105.0 h1:JAihRR9cu35lGI6mGvxrwVcUHaPO7n++RaC4oouZics= +go.opentelemetry.io/collector/extension/ballastextension v0.105.0/go.mod h1:2PgAJVYhBDWv3gl/vZ6nblHoVQMrwWheKE+RjXFozdM= +go.opentelemetry.io/collector/extension/zpagesextension v0.105.0 h1:rD77+hMPaSuBOh8w6un+x0VI5oM2oAsSzAC9nKTNauE= +go.opentelemetry.io/collector/extension/zpagesextension v0.105.0/go.mod h1:vDuL/PBfZfHpOyF2XCJ/jWfHn/hu2pCE5KVRGCHOX+k= +go.opentelemetry.io/collector/featuregate v1.12.0 h1:l5WbV2vMQd2bL8ubfGrbKNtZaeJRckE12CTHvRe47Tw= +go.opentelemetry.io/collector/featuregate v1.12.0/go.mod h1:PsOINaGgTiFc+Tzu2K/X2jP+Ngmlp7YKGV1XrnBkH7U= +go.opentelemetry.io/collector/internal/globalgates v0.105.0 h1:U/CwnTUXtrblD1sZ6ri7KWfYoTNjQd7GjJKrX/phRik= +go.opentelemetry.io/collector/internal/globalgates v0.105.0/go.mod h1:Z5US6O2xkZAtxVSSBnHAPFZwPhFoxlyKLUvS67Vx4gc= +go.opentelemetry.io/collector/otelcol v0.105.0 h1:2YMp/OckEc4qEfIjx3pi7W7xr+nW03KdrdhHAt3NmYY= +go.opentelemetry.io/collector/otelcol v0.105.0/go.mod h1:SwdiOY/0szbyuJ1sDDv66W5nFPVkA9hOhQoEBAFbHA0= +go.opentelemetry.io/collector/pdata v1.12.0 h1:Xx5VK1p4VO0md8MWm2icwC1MnJ7f8EimKItMWw46BmA= +go.opentelemetry.io/collector/pdata v1.12.0/go.mod h1:MYeB0MmMAxeM0hstCFrCqWLzdyeYySim2dG6pDT6nYI= +go.opentelemetry.io/collector/pdata/pprofile v0.105.0 h1:C+Hd7CNcepL/364OBV9f4lHzJil2jQSOxcEM1PFXGDg= +go.opentelemetry.io/collector/pdata/pprofile v0.105.0/go.mod h1:chr7lMJIzyXkccnPRkIPhyXtqLZLSReZYhwsggOGEfg= +go.opentelemetry.io/collector/pdata/testdata v0.105.0 h1:5sPZzanR4nJR3sNQk3MTdArdEZCK0NRAfC29t0Dtf60= +go.opentelemetry.io/collector/pdata/testdata v0.105.0/go.mod h1:NIfgaclQp/M1BZhgyc/7hDWD+/DumC/OMBQVI2KW+N0= +go.opentelemetry.io/collector/processor v0.105.0 h1:LE6wEMWNa3h7eOJLMBm2lA0v6sc2j6Geqv1e3pIWS8Y= +go.opentelemetry.io/collector/processor v0.105.0/go.mod h1:QAvMEtd3k+YhRrnaEgs/8e0UueYonuT8Hg4udQOht60= +go.opentelemetry.io/collector/processor/batchprocessor v0.105.0 h1:j9f7EWmaR6kaQubKE0L3lvZxoIEppRyTAvqLDmp2Jig= +go.opentelemetry.io/collector/processor/batchprocessor v0.105.0/go.mod h1:klVt/0Egd7LSgWyxlSpgNvLMQRaqfUJg7Nv4qdpQOHA= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.105.0 h1:qPjFg7uWmsVvf0Kk11WzM6Zy//zNZFC5uFwYKFXlEn8= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.105.0/go.mod h1:0pgvBY04E2bRq5dY3Qfj66mKpkFnu252FNm7iiFEiAU= +go.opentelemetry.io/collector/receiver v0.105.0 h1:eZF97kMUnKJ20Uc4PaDlgLIGmaA8kyLqhH+vMXjh92U= +go.opentelemetry.io/collector/receiver v0.105.0/go.mod h1:nGKDXLUGVHxMBJ5QLfsJ/bIhGvoMGqsN0pZtD5SC8sE= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.105.0 h1:1qjnvrnDcEaj93WgyrWRWTTAGNODaxi98wNcXiHDwfM= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.105.0/go.mod h1:XGs9OAQQFDfVhSzruLcFNdzhTw2kbZZAV68iRE9ecGA= +go.opentelemetry.io/collector/semconv v0.105.0 h1:8p6dZ3JfxFTjbY38d8xlQGB1TQ3nPUvs+D0RERniZ1g= +go.opentelemetry.io/collector/semconv v0.105.0/go.mod h1:yMVUCNoQPZVq/IPfrHrnntZTWsLf5YGZ7qwKulIl5hw= +go.opentelemetry.io/collector/service v0.105.0 h1:93dqJVNKToEvYDYZO2pHrN8f6Uev4+xhzzmw4qwgAzE= +go.opentelemetry.io/collector/service v0.105.0/go.mod h1:H0fD5SZjV2AZTgHEjRhObnP8YrhG2etAh9rsWLtmimQ= +go.opentelemetry.io/contrib/config v0.8.0 h1:OD7aDMhL+2EpzdSHfkDmcdD/uUA+PgKM5faFyF9XFT0= +go.opentelemetry.io/contrib/config v0.8.0/go.mod h1:dGeVZWE//3wrxYHHP0iCBYJU1QmOmPcbV+FNB7pjDYI= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= -go.opentelemetry.io/contrib/propagators/b3 v1.27.0 h1:IjgxbomVrV9za6bRi8fWCNXENs0co37SZedQilP2hm0= -go.opentelemetry.io/contrib/propagators/b3 v1.27.0/go.mod h1:Dv9obQz25lCisDvvs4dy28UPh974CxkahRDUPsY7y9E= +go.opentelemetry.io/contrib/propagators/b3 v1.28.0 h1:XR6CFQrQ/ttAYmTBX2loUEFGdk1h17pxYI8828dk/1Y= +go.opentelemetry.io/contrib/propagators/b3 v1.28.0/go.mod h1:DWRkzJONLquRz7OJPh2rRbZ7MugQj62rk7g6HRnEqh0= go.opentelemetry.io/contrib/samplers/jaegerremote v0.22.0 h1:OYxqumWcd1yaV/qvCt1B7Sru9OeUNGjeXq/oldx3AGk= go.opentelemetry.io/contrib/samplers/jaegerremote v0.22.0/go.mod h1:2tZTRqCbvx7nG57wUwd5NQpNVujOWnR84iPLllIH0Ok= -go.opentelemetry.io/contrib/zpages v0.52.0 h1:MPgkMy0Cp3O5EdfVXP0ss3ujhEibysTM4eszx7E7d+E= -go.opentelemetry.io/contrib/zpages v0.52.0/go.mod h1:fqG5AFdoYru3A3DnhibVuaaEfQV2WKxE7fYE1jgDRwk= +go.opentelemetry.io/contrib/zpages v0.53.0 h1:hGgaJ3nrescxEk383gOBHA5gNfoquHs8oV/XcKYxJkw= +go.opentelemetry.io/contrib/zpages v0.53.0/go.mod h1:iOo8fpUxMAu5+4x9DSEQeUOCeY19KaN6v2OPSeIggz4= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/bridge/opencensus v1.27.0 h1:ao9aGGHd+G4YfjBpGs6vbkvt5hoC67STlJA9fCnOAcs= -go.opentelemetry.io/otel/bridge/opencensus v1.27.0/go.mod h1:uRvWtAAXzyVOST0WMPX5JHGBaAvBws+2F8PcC5gMnTk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0 h1:bFgvUr3/O4PHj3VQcFEuYKvRZJX1SJDQ+11JXuSB3/w= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0/go.mod h1:xJntEd2KL6Qdg5lwp97HMLQDVeAhrYxmzFseAMDPQ8I= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0 h1:CIHWikMsN3wO+wq1Tp5VGdVRTcON+DmOJSfDjXypKOc= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0/go.mod h1:TNupZ6cxqyFEpLXAZW7On+mLFL0/g0TE3unIYL91xWc= +go.opentelemetry.io/otel/bridge/opencensus v1.28.0 h1:/BcyAV1bUJjSVxoeKwTQL9cS4X1iC6izZ9mheeuVSCU= +go.opentelemetry.io/otel/bridge/opencensus v1.28.0/go.mod h1:FZp2xE+46yAyp3DfLFALze58nY0iIE8zs+mCgkPAzq0= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.4.0 h1:zBPZAISA9NOc5cE8zydqDiS0itvg/P/0Hn9m72a5gvM= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.4.0/go.mod h1:gcj2fFjEsqpV3fXuzAA+0Ze1p2/4MJ4T7d77AmkvueQ= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0 h1:U2guen0GhqH8o/G2un8f/aG/y++OuW6MyCo6hT9prXk= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0/go.mod h1:yeGZANgEcpdx/WK0IvvRFC+2oLiMS2u4L/0Rj2M2Qr0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.28.0 h1:aLmmtjRke7LPDQ3lvpFz+kNEH43faFhzW7v8BFIEydg= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.28.0/go.mod h1:TC1pyCt6G9Sjb4bQpShH+P5R53pO6ZuGnHuuln9xMeE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= @@ -653,14 +661,18 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng= go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.27.0 h1:/jlt1Y8gXWiHG9FBx6cJaIC5hYx5Fe64nC8w5Cylt/0= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.27.0/go.mod h1:bmToOGOBZ4hA9ghphIc1PAf66VA8KOtsuy3+ScStG20= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.28.0 h1:BJee2iLkfRfl9lc7aFmBwkWxY/RI1RDdXepSF6y8TPE= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.28.0/go.mod h1:DIzlHs3DRscCIBU3Y9YSzPfScwnYnzfnCd4g8zA7bZc= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.28.0 h1:EVSnY9JbEEW92bEkIYOVMw4q1WJxIAGoFTrtYOzWuRQ= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.28.0/go.mod h1:Ea1N1QQryNXpCD0I1fdLibBAIpQuBkznMmkdKrapk1Y= +go.opentelemetry.io/otel/log v0.4.0 h1:/vZ+3Utqh18e8TPjuc3ecg284078KWrR8BRz+PQAj3o= +go.opentelemetry.io/otel/log v0.4.0/go.mod h1:DhGnQvky7pHy82MIRV43iXh3FlKN8UUKftn0KbLOq6I= go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk/log v0.4.0 h1:1mMI22L82zLqf6KtkjrRy5BbagOTWdJsqMY/HSqILAA= +go.opentelemetry.io/otel/sdk/log v0.4.0/go.mod h1:AYJ9FVF0hNOgAVzUG/ybg/QttnXhUePWAupmCqtdESo= go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= @@ -706,8 +718,8 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -769,8 +781,8 @@ golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -794,8 +806,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -806,8 +818,8 @@ gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= 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= -google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= -google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= +google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= +google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -869,8 +881,8 @@ k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= From 90176e2b53bcce9e48b8bef177565f363f8b83a5 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 16:46:44 -0400 Subject: [PATCH 37/60] Simplify Signed-off-by: Yuri Shkuro --- cmd/jaeger/internal/extension/jaegerquery/server.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index 66d0895373a..d39ba1d6f29 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -148,11 +148,7 @@ func (s *server) createMetricStorage(host component.Host) (metricsstore.Reader, s.telset.Logger.Info("Metric storage not created", zap.String("reason", err.Error())) return disabled.NewMetricsReader() } - if err != nil { - s.telset.Logger.Error("Cannot init metric storage reader", zap.Error(err)) - return disabled.NewMetricsReader() - } - return metricsReader, nil + return metricsReader, err } func (s *server) makeQueryOptions() *queryApp.QueryOptions { From 3a937b303a4ce12d022edce06f1fe214949a31d5 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 16:46:58 -0400 Subject: [PATCH 38/60] Simplify Signed-off-by: Yuri Shkuro --- cmd/jaeger/internal/extension/jaegerquery/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index d39ba1d6f29..0cc103a1495 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -145,7 +145,7 @@ func (s *server) createMetricStorage(host component.Host) (metricsstore.Reader, // metricsReader, ok := opts.InitMetricStorage(mf, s.telset.Logger) metricsReader, err := mf.CreateMetricsReader() if errors.Is(err, storage.ErrMetricStorageNotConfigured) || errors.Is(err, storage.ErrMetricStorageNotSupported) { - s.telset.Logger.Info("Metric storage not created", zap.String("reason", err.Error())) + s.telset.Logger.Info("Metric storage not created", zap.Error(err)) return disabled.NewMetricsReader() } return metricsReader, err From f9bf6bab75239d490d5e10dfb90669ecd5fae6d3 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 16:57:42 -0400 Subject: [PATCH 39/60] Clean-up Signed-off-by: Yuri Shkuro --- cmd/jaeger/internal/extension/jaegerquery/server.go | 1 - cmd/jaeger/internal/extension/jaegerstorage/extension.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index 0cc103a1495..e688fe1eb6d 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -76,7 +76,6 @@ func (s *server) Start(_ context.Context, host component.Host) error { return err } - // metricsQueryService, _ := disabled.NewMetricsReader() tm := tenancy.NewManager(&s.config.Tenancy) // TODO OTel-collector does not initialize the tracer currently diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 8342e8e2070..373a49d0d0d 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -137,7 +137,7 @@ func (s *storageExt) Start(_ context.Context, _ component.Host) error { for metricStorageName, cfg := range s.config.MetricBackends { s.telset.Logger.Sugar().Infof("Initializing metrics storage '%s'", metricStorageName) var metricsFactory storage.MetricsFactory - var err error = errors.New("empty configuration") + var err error if cfg.Prometheus != nil { metricsFactory, err = prometheus.NewFactoryWithConfig(*cfg.Prometheus, s.telset.Logger) } From 176c332da996075f1568d3544a810c297efabdbe Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 17:02:38 -0400 Subject: [PATCH 40/60] fix Signed-off-by: Yuri Shkuro --- docker-compose/monitor/jaeger-v2-config.yml | 7 ++++--- pkg/prometheus/config/config.go | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index b5fad3c212f..8e74447fb06 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -6,8 +6,8 @@ service: processors: [batch] exporters: [jaeger_storage_exporter, spanmetrics] metrics/spanmetrics: - receivers: [spanmetrics] - exporters: [prometheus] + receivers: [spanmetrics] + exporters: [prometheus] extensions: @@ -22,6 +22,7 @@ extensions: metric_backends: some_metrics_storage: prometheus: + endpoint: http://prometheus:9090 connectors: spanmetrics: @@ -39,5 +40,5 @@ processors: exporters: jaeger_storage_exporter: trace_storage: some_storage - prometheus: + prometheus: endpoint: "0.0.0.0:8889" diff --git a/pkg/prometheus/config/config.go b/pkg/prometheus/config/config.go index 8995a545151..adcaaeb0f9d 100644 --- a/pkg/prometheus/config/config.go +++ b/pkg/prometheus/config/config.go @@ -24,7 +24,7 @@ import ( // Configuration describes the options to customize the storage behavior. type Configuration struct { - ServerURL string + ServerURL string `mapstructure:"endpoint"` ConnectTimeout time.Duration TLS tlscfg.Options TokenFilePath string From 50e312c84eab640f18bb145bd86ab6c4a881a3bb Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 18:16:10 -0400 Subject: [PATCH 41/60] Clean-up Signed-off-by: Yuri Shkuro --- docker-compose/monitor/docker-compose.yml | 8 +++++++- .../monitor/otel-collector-config-connector.yml | 12 ++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docker-compose/monitor/docker-compose.yml b/docker-compose/monitor/docker-compose.yml index 61e9170148c..0f79258024a 100644 --- a/docker-compose/monitor/docker-compose.yml +++ b/docker-compose/monitor/docker-compose.yml @@ -17,6 +17,7 @@ services: - PROMETHEUS_QUERY_NORMALIZE_DURATION=true ports: - "16686:16686" + otel_collector: networks: - backend @@ -26,6 +27,9 @@ services: command: --config /etc/otelcol/otel-collector-config.yml depends_on: - jaeger + ports: + - "8889:8889" + microsim: networks: - backend @@ -36,6 +40,7 @@ services: - OTEL_EXPORTER_OTLP_INSECURE=true depends_on: - otel_collector + prometheus: networks: - backend @@ -44,6 +49,7 @@ services: - "./prometheus.yml:/etc/prometheus/prometheus.yml" ports: - "9090:9090" + grafana: networks: - backend @@ -56,7 +62,7 @@ services: - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - GF_AUTH_DISABLE_LOGIN_FORM=true ports: - - 3000:3000 + - "3000:3000" networks: backend: diff --git a/docker-compose/monitor/otel-collector-config-connector.yml b/docker-compose/monitor/otel-collector-config-connector.yml index 038f5f86c29..72d577d4321 100644 --- a/docker-compose/monitor/otel-collector-config-connector.yml +++ b/docker-compose/monitor/otel-collector-config-connector.yml @@ -1,9 +1,4 @@ receivers: - jaeger: - protocols: - thrift_http: - endpoint: "0.0.0.0:14278" - otlp: protocols: grpc: @@ -27,11 +22,12 @@ processors: service: pipelines: traces: - receivers: [otlp, jaeger] + receivers: [otlp] processors: [batch] exporters: [spanmetrics, otlp] - # The exporter name in this pipeline must match the spanmetrics.metrics_exporter name. - # The receiver is just a dummy and never used; added to pass validation requiring at least one receiver in a pipeline. + + # The metrics pipeline receives generated span metrics from 'spanmetrics' connector + # and pushes to Prometheus exporter, which makes them available for scraping on :8889. metrics/spanmetrics: receivers: [spanmetrics] exporters: [prometheus] From f105bc9169611e3df02d26747d1f27ac05850879 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 19:14:45 -0400 Subject: [PATCH 42/60] fix Signed-off-by: Yuri Shkuro --- docker-compose/monitor/docker-compose-v2.yml | 17 +++++++--------- docker-compose/monitor/docker-compose.yml | 4 +++- docker-compose/monitor/jaeger-v2-config.yml | 6 +++++- pkg/prometheus/config/config.go | 21 ++++++++++---------- scripts/spm-integration-test.sh | 8 +++++--- 5 files changed, 31 insertions(+), 25 deletions(-) diff --git a/docker-compose/monitor/docker-compose-v2.yml b/docker-compose/monitor/docker-compose-v2.yml index 0707d75f554..5bddd2cc658 100644 --- a/docker-compose/monitor/docker-compose-v2.yml +++ b/docker-compose/monitor/docker-compose-v2.yml @@ -2,23 +2,18 @@ version: "3.5" services: jaeger: networks: - - backend + backend: + # This is the host name used in Prometheus scrape configuration. + aliases: [spm_metrics_source] image: jaegertracing/jaeger:${JAEGER_IMAGE_TAG:-latest} volumes: - "./jaeger-ui.json:/etc/jaeger/jaeger-ui.json" # Do we need this for v2 ? Seems to be running without this. - "./jaeger-v2-config.yml:/etc/jaeger/config.yml" command: ["--config", "/etc/jaeger/config.yml"] - # TODO: Need to pass this through config - # environment: - # - METRICS_STORAGE_TYPE=prometheus - # - PROMETHEUS_SERVER_URL=http://prometheus:9090 - # # - PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR=${PROMETHEUS_QUERY_SUPPORT_SPANMETRICS_CONNECTOR:-true} - # - PROMETHEUS_QUERY_NAMESPACE=${PROMETHEUS_QUERY_NAMESPACE:-} - # - PROMETHEUS_QUERY_DURATION_UNIT=${PROMETHEUS_QUERY_DURATION_UNIT:-} - # - PROMETHEUS_QUERY_NORMALIZE_CALLS=true - # - PROMETHEUS_QUERY_NORMALIZE_DURATION=true ports: - "16686:16686" + - "8889:8889" + microsim: networks: - backend @@ -28,6 +23,7 @@ services: - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://jaeger:4318/v1/traces depends_on: - jaeger + prometheus: networks: - backend @@ -36,6 +32,7 @@ services: - "./prometheus.yml:/etc/prometheus/prometheus.yml" ports: - "9090:9090" + grafana: networks: - backend diff --git a/docker-compose/monitor/docker-compose.yml b/docker-compose/monitor/docker-compose.yml index 0f79258024a..3f288201eb9 100644 --- a/docker-compose/monitor/docker-compose.yml +++ b/docker-compose/monitor/docker-compose.yml @@ -20,7 +20,9 @@ services: otel_collector: networks: - - backend + backend: + # This is the host name used in Prometheus scrape configuration. + aliases: [spm_metrics_source] image: otel/opentelemetry-collector-contrib:${OTEL_IMAGE_TAG:-0.89.0} volumes: - ${OTEL_CONFIG_SRC:-./otel-collector-config-connector.yml}:/etc/otelcol/otel-collector-config.yml diff --git a/docker-compose/monitor/jaeger-v2-config.yml b/docker-compose/monitor/jaeger-v2-config.yml index 8e74447fb06..bc7160c5bb8 100644 --- a/docker-compose/monitor/jaeger-v2-config.yml +++ b/docker-compose/monitor/jaeger-v2-config.yml @@ -8,7 +8,9 @@ service: metrics/spanmetrics: receivers: [spanmetrics] exporters: [prometheus] - + telemetry: + logs: + level: DEBUG extensions: jaeger_query: @@ -23,6 +25,8 @@ extensions: some_metrics_storage: prometheus: endpoint: http://prometheus:9090 + normalize_calls: true + normalize_duration: true connectors: spanmetrics: diff --git a/pkg/prometheus/config/config.go b/pkg/prometheus/config/config.go index adcaaeb0f9d..54ee6ea9398 100644 --- a/pkg/prometheus/config/config.go +++ b/pkg/prometheus/config/config.go @@ -24,16 +24,17 @@ import ( // Configuration describes the options to customize the storage behavior. type Configuration struct { - ServerURL string `mapstructure:"endpoint"` - ConnectTimeout time.Duration - TLS tlscfg.Options - TokenFilePath string - TokenOverrideFromContext bool - - MetricNamespace string - LatencyUnit string - NormalizeCalls bool - NormalizeDuration bool + ServerURL string `valid:"required" mapstructure:"endpoint"` + ConnectTimeout time.Duration `mapstructure:"connect_timeout"` + TLS tlscfg.Options + + TokenFilePath string `mapstructure:"token_file_path"` + TokenOverrideFromContext bool `mapstructure:"token_override_from_context"` + + MetricNamespace string `mapstructure:"metric_namespace"` + LatencyUnit string `mapstructure:"latency_unit"` + NormalizeCalls bool `mapstructure:"normalize_calls"` + NormalizeDuration bool `mapstructure:"normalize_duration"` } func (c *Configuration) Validate() error { diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 45c7e273904..86c4d870a5a 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -23,6 +23,8 @@ while getopts "b:h" opt; do esac done +set -x + if [ "$BINARY" == "jaeger" ]; then compose_file=docker-compose/monitor/docker-compose-v2.yml fi @@ -36,7 +38,7 @@ check_service_health() { local url=$2 echo "Checking health of service: $service_name at $url" - local wait_seconds=10 + local wait_seconds=3 local curl_params=( --silent --output @@ -63,7 +65,7 @@ wait_for_services() { check_service_health "Jaeger" "http://localhost:16686" check_service_health "Prometheus" "http://localhost:9090/graph" # Grafana is not actually important for the functional test, - # but it at least validates that the docker-compose file is correct. + # but we still validate that the docker-compose file is correct. check_service_health "Grafana" "http://localhost:3000" } @@ -150,7 +152,7 @@ main() { (cd docker-compose/monitor && make build BINARY="$BINARY" && make dev-v2 DOCKER_COMPOSE_ARGS="-d") else (cd docker-compose/monitor && make build BINARY="$BINARY" && make dev DOCKER_COMPOSE_ARGS="-d") - fi + fi wait_for_services check_spm success="true" From 0cdb5ca320c414cb3ee61033f6c4fd475de2a59f Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 19:26:56 -0400 Subject: [PATCH 43/60] Fixes Signed-off-by: Yuri Shkuro --- cmd/jaeger/internal/extension/jaegerquery/server.go | 1 - scripts/spm-integration-test.sh | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index e688fe1eb6d..2804eb045f2 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -141,7 +141,6 @@ func (s *server) createMetricStorage(host component.Host) (metricsstore.Reader, return nil, fmt.Errorf("cannot find metrics storage factory: %w", err) } - // metricsReader, ok := opts.InitMetricStorage(mf, s.telset.Logger) metricsReader, err := mf.CreateMetricsReader() if errors.Is(err, storage.ErrMetricStorageNotConfigured) || errors.Is(err, storage.ErrMetricStorageNotSupported) { s.telset.Logger.Info("Metric storage not created", zap.Error(err)) diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 86c4d870a5a..d49dc299473 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -29,7 +29,7 @@ if [ "$BINARY" == "jaeger" ]; then compose_file=docker-compose/monitor/docker-compose-v2.yml fi -timeout=300 +timeout=600 end_time=$((SECONDS + timeout)) success="false" From db32afeba30b93d7866a0ae62ffeb8e52bd60158 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 19:39:55 -0400 Subject: [PATCH 44/60] missed the file Signed-off-by: Yuri Shkuro --- docker-compose/monitor/prometheus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose/monitor/prometheus.yml b/docker-compose/monitor/prometheus.yml index 4dfa620887f..5ca0a6293cc 100644 --- a/docker-compose/monitor/prometheus.yml +++ b/docker-compose/monitor/prometheus.yml @@ -6,4 +6,4 @@ global: scrape_configs: - job_name: aggregated-trace-metrics static_configs: - - targets: ['otel_collector:8889'] + - targets: ['spm_metrics_source:8889'] From 20345023b12b5cc83f7c5481e16b91f7f3fe24d1 Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 19:40:52 -0400 Subject: [PATCH 45/60] Catch-all via wildcard Signed-off-by: Yuri Shkuro --- scripts/spm-integration-test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index d49dc299473..16f168579c1 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -17,7 +17,7 @@ while getopts "b:h" opt; do b) BINARY=${OPTARG} ;; - ?) + *) print_help ;; esac From 9d2f9b21b8b374f74135ba1bc424e17dca745cff Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Sat, 20 Jul 2024 19:56:46 -0400 Subject: [PATCH 46/60] DRY code, rename public methods to be more consistent Signed-off-by: Yuri Shkuro --- .../storageexporter/exporter_test.go | 6 +- .../extension/jaegerquery/server_test.go | 4 +- .../extension/jaegerstorage/extension.go | 64 ++++++++++--------- .../storagecleaner/extension_test.go | 4 +- 4 files changed, 42 insertions(+), 36 deletions(-) diff --git a/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go b/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go index e25acce59a5..54dedab391e 100644 --- a/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go +++ b/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go @@ -44,6 +44,8 @@ type mockStorageExt struct { metricsFactory *factoryMocks.MetricsFactory } +var _ jaegerstorage.Extension = (*mockStorageExt)(nil) + func (*mockStorageExt) Start(context.Context, component.Host) error { panic("not implemented") } @@ -52,14 +54,14 @@ func (*mockStorageExt) Shutdown(context.Context) error { panic("not implemented") } -func (m *mockStorageExt) Factory(name string) (storage.Factory, bool) { +func (m *mockStorageExt) TraceStorageFactory(name string) (storage.Factory, bool) { if m.name == name { return m.factory, true } return nil, false } -func (m *mockStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { +func (m *mockStorageExt) MetricStorageFactory(name string) (storage.MetricsFactory, bool) { if m.name == name { return m.metricsFactory, true } diff --git a/cmd/jaeger/internal/extension/jaegerquery/server_test.go b/cmd/jaeger/internal/extension/jaegerquery/server_test.go index 34a7757906a..99b9e17e4c8 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server_test.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server_test.go @@ -87,14 +87,14 @@ type fakeStorageExt struct{} var _ jaegerstorage.Extension = (*fakeStorageExt)(nil) -func (fakeStorageExt) Factory(name string) (storage.Factory, bool) { +func (fakeStorageExt) TraceStorageFactory(name string) (storage.Factory, bool) { if name == "need-factory-error" { return nil, false } return fakeFactory{name: name}, true } -func (fakeStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { +func (fakeStorageExt) MetricStorageFactory(name string) (storage.MetricsFactory, bool) { if name == "need-factory-error" { return nil, false } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 373a49d0d0d..5e8d1061349 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -28,8 +28,8 @@ var _ Extension = (*storageExt)(nil) type Extension interface { extension.Extension - Factory(name string) (storage.Factory, bool) - MetricsFactory(name string) (storage.MetricsFactory, bool) + TraceStorageFactory(name string) (storage.Factory, bool) + MetricStorageFactory(name string) (storage.MetricsFactory, bool) } type storageExt struct { @@ -41,20 +41,11 @@ type storageExt struct { // GetStorageFactory locates the extension in Host and retrieves a storage factory from it with the given name. func GetStorageFactory(name string, host component.Host) (storage.Factory, error) { - var comp component.Component - for id, ext := range host.GetExtensions() { - if id.Type() == componentType { - comp = ext - break - } - } - if comp == nil { - return nil, fmt.Errorf( - "cannot find extension '%s' (make sure it's defined earlier in the config)", - componentType, - ) + ext, err := findExtension(host) + if err != nil { + return nil, err } - f, ok := comp.(Extension).Factory(name) + f, ok := ext.TraceStorageFactory(name) if !ok { return nil, fmt.Errorf( "cannot find definition of storage '%s' in the configuration for extension '%s'", @@ -66,20 +57,11 @@ func GetStorageFactory(name string, host component.Host) (storage.Factory, error // GetMetricsFactory locates the extension in Host and retrieves a metrics factory from it with the given name. func GetMetricsFactory(name string, host component.Host) (storage.MetricsFactory, error) { - var comp component.Component - for id, ext := range host.GetExtensions() { - if id.Type() == componentType { - comp = ext - break - } - } - if comp == nil { - return nil, fmt.Errorf( - "cannot find extension '%s' (make sure it's defined earlier in the config)", - componentType, - ) + ext, err := findExtension(host) + if err != nil { + return nil, err } - mf, ok := comp.(Extension).MetricsFactory(name) + mf, ok := ext.MetricStorageFactory(name) if !ok { return nil, fmt.Errorf( "cannot find metric storage '%s' declared by '%s' extension", @@ -98,6 +80,28 @@ func GetStorageFactoryV2(name string, host component.Host) (spanstore.Factory, e return factoryadapter.NewFactory(f), nil } +func findExtension(host component.Host) (Extension, error) { + var id component.ID + var comp component.Component + for i, ext := range host.GetExtensions() { + if i.Type() == componentType { + id, comp = i, ext + break + } + } + if comp == nil { + return nil, fmt.Errorf( + "cannot find extension '%s' (make sure it's defined earlier in the config)", + componentType, + ) + } + ext, ok := comp.(Extension) + if !ok { + return nil, fmt.Errorf("extension '%s' is not of expected type '%s'", id, componentType) + } + return ext, nil +} + func newStorageExt(config *Config, telset component.TelemetrySettings) *storageExt { return &storageExt{ config: config, @@ -163,12 +167,12 @@ func (s *storageExt) Shutdown(context.Context) error { return errors.Join(errs...) } -func (s *storageExt) Factory(name string) (storage.Factory, bool) { +func (s *storageExt) TraceStorageFactory(name string) (storage.Factory, bool) { f, ok := s.factories[name] return f, ok } -func (s *storageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { +func (s *storageExt) MetricStorageFactory(name string) (storage.MetricsFactory, bool) { mf, ok := s.metricsFactories[name] return mf, ok } diff --git a/cmd/jaeger/internal/integration/storagecleaner/extension_test.go b/cmd/jaeger/internal/integration/storagecleaner/extension_test.go index b95b21b69f5..4c130fdc245 100644 --- a/cmd/jaeger/internal/integration/storagecleaner/extension_test.go +++ b/cmd/jaeger/internal/integration/storagecleaner/extension_test.go @@ -50,14 +50,14 @@ func (*mockStorageExt) Shutdown(context.Context) error { panic("not implemented") } -func (m *mockStorageExt) Factory(name string) (storage.Factory, bool) { +func (m *mockStorageExt) TraceStorageFactory(name string) (storage.Factory, bool) { if m.name == name { return m.factory, true } return nil, false } -func (m *mockStorageExt) MetricsFactory(name string) (storage.MetricsFactory, bool) { +func (m *mockStorageExt) MetricStorageFactory(name string) (storage.MetricsFactory, bool) { if m.name == name { return m.metricsFactory, true } From 4f87e23180252ebb98ed499e9ea292d78251fa12 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Sun, 21 Jul 2024 22:28:19 +0530 Subject: [PATCH 47/60] Add changes Signed-off-by: FlamingSaint --- cmd/jaeger/internal/extension/jaegerquery/server.go | 6 ------ scripts/spm-integration-test.sh | 12 +++++++++--- storage/factory.go | 8 -------- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index 2804eb045f2..d1b8b5bf481 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -10,7 +10,6 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/extension" - "go.uber.org/zap" "github.com/jaegertracing/jaeger/cmd/jaeger/internal/extension/jaegerstorage" queryApp "github.com/jaegertracing/jaeger/cmd/query/app" @@ -19,7 +18,6 @@ import ( "github.com/jaegertracing/jaeger/pkg/telemetery" "github.com/jaegertracing/jaeger/pkg/tenancy" "github.com/jaegertracing/jaeger/plugin/metrics/disabled" - "github.com/jaegertracing/jaeger/storage" "github.com/jaegertracing/jaeger/storage/metricsstore" ) @@ -142,10 +140,6 @@ func (s *server) createMetricStorage(host component.Host) (metricsstore.Reader, } metricsReader, err := mf.CreateMetricsReader() - if errors.Is(err, storage.ErrMetricStorageNotConfigured) || errors.Is(err, storage.ErrMetricStorageNotSupported) { - s.telset.Logger.Info("Metric storage not created", zap.Error(err)) - return disabled.NewMetricsReader() - } return metricsReader, err } diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 16f168579c1..33e346c4f23 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -89,13 +89,19 @@ validate_service_metrics() { echo "Metric datapoints found for service '$service': " "${metric_points[@]}" # Check that atleast some values are non-zero after the threshold local non_zero_count=0 - local expected_non_zero_count=3 + local expected_non_zero_count=5 local zero_count=0 - local expected_max_zero_count=3 + local expected_max_zero_count=4 + local flag=false # Becomes true after first non-zero value for value in "${metric_points[@]}"; do if [[ $(echo "$value > 0.0" | bc) == "1" ]]; then + flag=true non_zero_count=$((non_zero_count + 1)) else + if [ $flag == true ]; then + echo "❌ ERROR: Zero values appearing after a non-zero value not expected" + return 1 + fi zero_count=$((zero_count + 1)) fi @@ -105,7 +111,7 @@ validate_service_metrics() { fi done if [ $non_zero_count -lt $expected_non_zero_count ]; then - echo "⏳ Expecting at least 3 non-zero data points" + echo "⏳ Expecting at least 4 non-zero data points" return 1 fi return 0 diff --git a/storage/factory.go b/storage/factory.go index 7ea98429bd3..462a626b64f 100644 --- a/storage/factory.go +++ b/storage/factory.go @@ -83,14 +83,6 @@ type ArchiveFactory interface { CreateArchiveSpanWriter() (spanstore.Writer, error) } -var ( - // ErrMetricStorageNotConfigured can be returned by the MetricsFactory when the metric storage is not configured. - ErrMetricStorageNotConfigured = errors.New("Metric storage not configured") - - // ErrMetricStorageNotSupported can be returned by the MetricsFactory when the metric storage is not supported by the backend. - ErrMetricStorageNotSupported = errors.New("Metric storage not supported") -) - // MetricsFactory defines an interface for a factory that can create implementations of different metrics storage components. // Implementations are also encouraged to implement plugin.Configurable interface. // From 0aefd7b91f3bf62633e78e4ab43437fc2353541e Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 22 Jul 2024 22:42:31 +0530 Subject: [PATCH 48/60] Increase code coverage Signed-off-by: FlamingSaint --- .../extension/jaegerstorage/extension_test.go | 59 ++++++++++++++++++- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go index b05ef36474a..c9388f37d37 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go @@ -23,12 +23,14 @@ import ( esCfg "github.com/jaegertracing/jaeger/pkg/es/config" "github.com/jaegertracing/jaeger/pkg/metrics" + promCfg "github.com/jaegertracing/jaeger/pkg/prometheus/config" "github.com/jaegertracing/jaeger/plugin/storage/badger" "github.com/jaegertracing/jaeger/plugin/storage/cassandra" "github.com/jaegertracing/jaeger/plugin/storage/grpc" "github.com/jaegertracing/jaeger/plugin/storage/memory" "github.com/jaegertracing/jaeger/storage" "github.com/jaegertracing/jaeger/storage/dependencystore" + "github.com/jaegertracing/jaeger/storage/metricsstore" "github.com/jaegertracing/jaeger/storage/spanstore" ) @@ -56,17 +58,44 @@ func (e errorFactory) Close() error { return e.closeErr } +type errorMetricsFactory struct { + closeErr error +} + +func (errorMetricsFactory) Initialize(*zap.Logger) error { + panic("not implemented") +} + +func (errorMetricsFactory) CreateMetricsReader() (metricsstore.Reader, error) { + panic("not implemented") +} + +func (e errorMetricsFactory) Close() error { + return e.closeErr +} + func TestStorageFactoryBadHostError(t *testing.T) { _, err := GetStorageFactory("something", componenttest.NewNopHost()) require.ErrorContains(t, err, "cannot find extension") } func TestStorageFactoryBadNameError(t *testing.T) { - host := storagetest.NewStorageHost().WithExtension(ID, startStorageExtension(t, "foo")) + host := storagetest.NewStorageHost().WithExtension(ID, startStorageExtension(t, "foo", "")) _, err := GetStorageFactory("bar", host) require.ErrorContains(t, err, "cannot find definition of storage 'bar'") } +func TestMetricsFactoryBadHostError(t *testing.T) { + _, err := GetMetricsFactory("something", componenttest.NewNopHost()) + require.ErrorContains(t, err, "cannot find extension") +} + +func TestMetricsFactoryBadNameError(t *testing.T) { + host := storagetest.NewStorageHost().WithExtension(ID, startStorageExtension(t, "", "foo")) + _, err := GetMetricsFactory("bar", host) + require.ErrorContains(t, err, "cannot find metric storage 'bar'") +} + func TestStorageFactoryBadShutdownError(t *testing.T) { shutdownError := fmt.Errorf("shutdown error") ext := storageExt{ @@ -86,7 +115,8 @@ func TestGetFactoryV2Error(t *testing.T) { func TestGetFactory(t *testing.T) { const name = "foo" - host := storagetest.NewStorageHost().WithExtension(ID, startStorageExtension(t, name)) + const metricname = "bar" + host := storagetest.NewStorageHost().WithExtension(ID, startStorageExtension(t, name, metricname)) f, err := GetStorageFactory(name, host) require.NoError(t, err) require.NotNil(t, f) @@ -132,6 +162,22 @@ func TestGRPC(t *testing.T) { require.NoError(t, ext.Shutdown(ctx)) } +func TestPrometheus(t *testing.T) { + ext := makeStorageExtenion(t, &Config{ + MetricBackends: map[string]MetricBackends{ + "foo": { + Prometheus: &promCfg.Configuration{ + ServerURL: "localhost:12345", + }, + }, + }, + }) + ctx := context.Background() + err := ext.Start(ctx, componenttest.NewNopHost()) + require.NoError(t, err) + require.NoError(t, ext.Shutdown(ctx)) +} + func TestStartError(t *testing.T) { ext := makeStorageExtenion(t, &Config{ Backends: map[string]Backend{ @@ -222,7 +268,7 @@ func makeStorageExtenion(t *testing.T, config *Config) component.Component { return ext } -func startStorageExtension(t *testing.T, memstoreName string) component.Component { +func startStorageExtension(t *testing.T, memstoreName string, promstoreName string) component.Component { config := &Config{ Backends: map[string]Backend{ memstoreName: { @@ -231,6 +277,13 @@ func startStorageExtension(t *testing.T, memstoreName string) component.Componen }, }, }, + MetricBackends: map[string]MetricBackends{ + promstoreName: { + Prometheus: &promCfg.Configuration{ + ServerURL: "localhost:12345", + }, + }, + }, } require.NoError(t, config.Validate()) From 81bc1420b1a7d89618fc2d8a8e1de86d48486c42 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 22 Jul 2024 23:06:53 +0530 Subject: [PATCH 49/60] fix lint Signed-off-by: FlamingSaint --- .../extension/jaegerstorage/extension_test.go | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go index c9388f37d37..e200c0f062c 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go @@ -30,7 +30,6 @@ import ( "github.com/jaegertracing/jaeger/plugin/storage/memory" "github.com/jaegertracing/jaeger/storage" "github.com/jaegertracing/jaeger/storage/dependencystore" - "github.com/jaegertracing/jaeger/storage/metricsstore" "github.com/jaegertracing/jaeger/storage/spanstore" ) @@ -58,22 +57,6 @@ func (e errorFactory) Close() error { return e.closeErr } -type errorMetricsFactory struct { - closeErr error -} - -func (errorMetricsFactory) Initialize(*zap.Logger) error { - panic("not implemented") -} - -func (errorMetricsFactory) CreateMetricsReader() (metricsstore.Reader, error) { - panic("not implemented") -} - -func (e errorMetricsFactory) Close() error { - return e.closeErr -} - func TestStorageFactoryBadHostError(t *testing.T) { _, err := GetStorageFactory("something", componenttest.NewNopHost()) require.ErrorContains(t, err, "cannot find extension") @@ -124,6 +107,10 @@ func TestGetFactory(t *testing.T) { f2, err := GetStorageFactoryV2(name, host) require.NoError(t, err) require.NotNil(t, f2) + + f3, err := GetMetricsFactory(metricname, host) + require.NoError(t, err) + require.NotNil(t, f3) } func TestBadger(t *testing.T) { From 2e36abe8fd033a27e7a2ca1f2c2918453089fa91 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Mon, 22 Jul 2024 23:58:54 +0530 Subject: [PATCH 50/60] fix Signed-off-by: FlamingSaint --- plugin/metrics/prometheus/factory_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/plugin/metrics/prometheus/factory_test.go b/plugin/metrics/prometheus/factory_test.go index bd49eca32d5..cc677fb7f61 100644 --- a/plugin/metrics/prometheus/factory_test.go +++ b/plugin/metrics/prometheus/factory_test.go @@ -24,6 +24,7 @@ import ( "go.uber.org/zap" "github.com/jaegertracing/jaeger/pkg/config" + promCfg "github.com/jaegertracing/jaeger/pkg/prometheus/config" "github.com/jaegertracing/jaeger/pkg/testutils" "github.com/jaegertracing/jaeger/storage" ) @@ -134,6 +135,20 @@ func TestFailedTLSOptions(t *testing.T) { t.Errorf("f.InitFromViper did not panic") } +func TestEmptyFactoryConfig(t *testing.T) { + cfg := promCfg.Configuration{} + _, err := NewFactoryWithConfig(cfg, zap.NewNop()) + require.Error(t, err) +} + +func TestFactoryConfig(t *testing.T) { + cfg := promCfg.Configuration{ + ServerURL: "localhost:1234", + } + _, err := NewFactoryWithConfig(cfg, zap.NewNop()) + require.NoError(t, err) +} + func TestMain(m *testing.M) { testutils.VerifyGoLeaks(m) } From 060740b2a44d630c168338767d69a7b1aa4775a9 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 23 Jul 2024 00:29:35 +0530 Subject: [PATCH 51/60] Increase coverage Signed-off-by: FlamingSaint --- .../internal/extension/jaegerstorage/config_test.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/config_test.go b/cmd/jaeger/internal/extension/jaegerstorage/config_test.go index 3f4dd8cd74b..1b2718c4cda 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/config_test.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/config_test.go @@ -107,3 +107,14 @@ backends: require.NoError(t, conf.Unmarshal(cfg)) assert.NotEmpty(t, cfg.Backends["some_storage"].Opensearch.Servers) } + +func TestConfigDefaultPrometheus(t *testing.T) { + conf := loadConf(t, ` +metric_backends: + some_metrics_storage: + prometheus: +`) + cfg := createDefaultConfig().(*Config) + require.NoError(t, conf.Unmarshal(cfg)) + assert.NotEmpty(t, cfg.MetricBackends["some_metrics_storage"].Prometheus.ServerURL) +} From 8f0ee2b6503cbbfe2c11a45ce20e8e63877b4877 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 23 Jul 2024 01:54:50 +0530 Subject: [PATCH 52/60] Increase coverage Signed-off-by: FlamingSaint --- .../extension/jaegerquery/server_test.go | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server_test.go b/cmd/jaeger/internal/extension/jaegerquery/server_test.go index 99b9e17e4c8..132b5238e67 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server_test.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server_test.go @@ -270,3 +270,51 @@ func TestServerAddArchiveStorage(t *testing.T) { }) } } + +func TestServerAddMetricsStorage(t *testing.T) { + host := componenttest.NewNopHost() + + tests := []struct { + name string + config *Config + extension component.Component + expectedOutput string + expectedErr string + }{ + { + name: "Metrics storage unset", + config: &Config{}, + expectedOutput: `{"level":"info","msg":"Metric storage not configured"}` + "\n", + expectedErr: "", + }, + { + name: "Metrics storage set", + config: &Config{ + MetricStorage: "random-value", + }, + expectedOutput: "", + expectedErr: "cannot find metrics storage factory: cannot find extension", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + logger, buf := testutils.NewLogger() + telemetrySettings := component.TelemetrySettings{ + Logger: logger, + } + server := newServer(tt.config, telemetrySettings) + if tt.extension != nil { + host = storagetest.NewStorageHost().WithExtension(jaegerstorage.ID, tt.extension) + } + _, err := server.createMetricStorage(host) + if tt.expectedErr == "" { + require.NoError(t, err) + } else { + require.ErrorContains(t, err, tt.expectedErr) + } + + assert.Contains(t, buf.String(), tt.expectedOutput) + }) + } +} From b17125a25122c8ead755902d474b93bc85aa627d Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 23 Jul 2024 10:57:45 +0530 Subject: [PATCH 53/60] Add changes Signed-off-by: FlamingSaint --- scripts/spm-integration-test.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 33e346c4f23..28159d09b4d 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -89,19 +89,14 @@ validate_service_metrics() { echo "Metric datapoints found for service '$service': " "${metric_points[@]}" # Check that atleast some values are non-zero after the threshold local non_zero_count=0 - local expected_non_zero_count=5 + local expected_non_zero_count=4 local zero_count=0 local expected_max_zero_count=4 - local flag=false # Becomes true after first non-zero value for value in "${metric_points[@]}"; do if [[ $(echo "$value > 0.0" | bc) == "1" ]]; then flag=true non_zero_count=$((non_zero_count + 1)) else - if [ $flag == true ]; then - echo "❌ ERROR: Zero values appearing after a non-zero value not expected" - return 1 - fi zero_count=$((zero_count + 1)) fi From f7a749e93feb001352e3e58c720e9450ebce2e56 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Tue, 23 Jul 2024 10:59:14 +0530 Subject: [PATCH 54/60] fix Signed-off-by: FlamingSaint --- scripts/spm-integration-test.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/spm-integration-test.sh b/scripts/spm-integration-test.sh index 28159d09b4d..b9cf9204a8a 100755 --- a/scripts/spm-integration-test.sh +++ b/scripts/spm-integration-test.sh @@ -94,7 +94,6 @@ validate_service_metrics() { local expected_max_zero_count=4 for value in "${metric_points[@]}"; do if [[ $(echo "$value > 0.0" | bc) == "1" ]]; then - flag=true non_zero_count=$((non_zero_count + 1)) else zero_count=$((zero_count + 1)) From 0301e64e3a975ef186362249395bef4a6c2145d9 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 24 Jul 2024 12:56:18 +0530 Subject: [PATCH 55/60] fix Signed-off-by: FlamingSaint --- plugin/metrics/prometheus/factory.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugin/metrics/prometheus/factory.go b/plugin/metrics/prometheus/factory.go index 3ac09b963b9..03ad9f2912f 100644 --- a/plugin/metrics/prometheus/factory.go +++ b/plugin/metrics/prometheus/factory.go @@ -80,9 +80,7 @@ func NewFactoryWithConfig( f.options = &Options{ Configuration: cfg, } - err := f.Initialize(logger) - if err != nil { - return nil, err - } + f.Initialize(logger) + return f, nil } From 4c51ab22f3981ff1cabbe6ccb6bad8a4a65b9ac6 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 24 Jul 2024 13:54:53 +0530 Subject: [PATCH 56/60] Remove extra spaces Signed-off-by: FlamingSaint --- plugin/metrics/prometheus/factory.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugin/metrics/prometheus/factory.go b/plugin/metrics/prometheus/factory.go index 03ad9f2912f..48fe906196e 100644 --- a/plugin/metrics/prometheus/factory.go +++ b/plugin/metrics/prometheus/factory.go @@ -75,12 +75,10 @@ func NewFactoryWithConfig( if err := cfg.Validate(); err != nil { return nil, err } - f := NewFactory() f.options = &Options{ Configuration: cfg, } f.Initialize(logger) - return f, nil } From 96649c96bde92abb90c9fee79f6c440fcc9ecc8f Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 24 Jul 2024 17:17:31 +0530 Subject: [PATCH 57/60] Increase code coverage Signed-off-by: FlamingSaint --- .../extension/jaegerstorage/extension_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go index e200c0f062c..472b160fb13 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go @@ -79,6 +79,12 @@ func TestMetricsFactoryBadNameError(t *testing.T) { require.ErrorContains(t, err, "cannot find metric storage 'bar'") } +func TestStorageExtensionType(t *testing.T) { + host := storagetest.NewStorageHost().WithExtension(ID, startStorageExtension(t, "", "foo")) + _, err := findExtension(host) + require.NoError(t, err) +} + func TestStorageFactoryBadShutdownError(t *testing.T) { shutdownError := fmt.Errorf("shutdown error") ext := storageExt{ @@ -176,6 +182,18 @@ func TestStartError(t *testing.T) { require.ErrorContains(t, err, "empty configuration") } +func TestMetricsStorageStartError(t *testing.T) { + ext := makeStorageExtenion(t, &Config{ + MetricBackends: map[string]MetricBackends{ + "foo": { + Prometheus: &promCfg.Configuration{}, + }, + }, + }) + err := ext.Start(context.Background(), componenttest.NewNopHost()) + require.ErrorContains(t, err, "failed to initialize metrics storage 'foo'") +} + func testElasticsearchOrOpensearch(t *testing.T, cfg Backend) { ext := makeStorageExtenion(t, &Config{ Backends: map[string]Backend{ From 032a8607b053e7116f6cf45b2b9c70384a4f5e1c Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 24 Jul 2024 17:42:58 +0530 Subject: [PATCH 58/60] Increase code cov Signed-off-by: FlamingSaint --- .../internal/extension/jaegerquery/server.go | 3 +++ .../extension/jaegerquery/server_test.go | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index d1b8b5bf481..7dd7242a841 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -140,6 +140,9 @@ func (s *server) createMetricStorage(host component.Host) (metricsstore.Reader, } metricsReader, err := mf.CreateMetricsReader() + if err != nil { + return nil, fmt.Errorf("cannot create metrics reader %w", err) + } return metricsReader, err } diff --git a/cmd/jaeger/internal/extension/jaegerquery/server_test.go b/cmd/jaeger/internal/extension/jaegerquery/server_test.go index 132b5238e67..0dfb8f41b49 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server_test.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server_test.go @@ -77,7 +77,7 @@ func (fmf fakeMetricsFactory) Initialize(*zap.Logger) error { } func (fmf fakeMetricsFactory) CreateMetricsReader() (metricsstore.Reader, error) { - if fmf.name == "need-span-writer-error" { + if fmf.name == "need-metrics-reader-error" { return nil, fmt.Errorf("test-error") } return &metricsstoremocks.Reader{}, nil @@ -133,6 +133,7 @@ func TestServerStart(t *testing.T) { config: &Config{ TraceStorageArchive: "jaeger_storage", TraceStoragePrimary: "jaeger_storage", + MetricStorage: "jaeger_metrics_storage", }, }, { @@ -164,6 +165,22 @@ func TestServerStart(t *testing.T) { }, expectedErr: "cannot find archive storage factory", }, + { + name: "metrics storage error", + config: &Config{ + MetricStorage: "need-factory-error", + TraceStoragePrimary: "jaeger_storage", + }, + expectedErr: "cannot find metrics storage factory", + }, + { + name: " metrics reader error", + config: &Config{ + MetricStorage: "need-metrics-reader-error", + TraceStoragePrimary: "jaeger_storage", + }, + expectedErr: "cannot create metrics reader", + }, } for _, tt := range tests { From 3ec5360829cc1955e9bba71eed966e197cdf1ac3 Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 24 Jul 2024 22:48:47 +0530 Subject: [PATCH 59/60] Increase code cov Signed-off-by: FlamingSaint --- .../config/{empty_test.go => config_test.go} | 13 +++++++++++++ 1 file changed, 13 insertions(+) rename pkg/prometheus/config/{empty_test.go => config_test.go} (74%) diff --git a/pkg/prometheus/config/empty_test.go b/pkg/prometheus/config/config_test.go similarity index 74% rename from pkg/prometheus/config/empty_test.go rename to pkg/prometheus/config/config_test.go index 2b7fcf4a4b8..d49f95c1141 100644 --- a/pkg/prometheus/config/empty_test.go +++ b/pkg/prometheus/config/config_test.go @@ -17,9 +17,22 @@ package config import ( "testing" + "github.com/stretchr/testify/require" + "github.com/jaegertracing/jaeger/pkg/testutils" ) +func TestValidate(t *testing.T) { + cfg := Configuration{ + ServerURL: "localhost:1234", + } + err := cfg.Validate() + require.NoError(t, err) + cfg = Configuration{} + err = cfg.Validate() + require.Error(t, err) +} + func TestMain(m *testing.M) { testutils.VerifyGoLeaks(m) } From d641e36fbc9f315b5d2d8dc690ac6ec5aaf4db4b Mon Sep 17 00:00:00 2001 From: FlamingSaint Date: Wed, 24 Jul 2024 23:10:18 +0530 Subject: [PATCH 60/60] Add changes Signed-off-by: FlamingSaint --- cmd/jaeger/internal/extension/jaegerquery/server.go | 4 ++-- cmd/jaeger/internal/extension/jaegerquery/server_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/jaeger/internal/extension/jaegerquery/server.go b/cmd/jaeger/internal/extension/jaegerquery/server.go index 7dd7242a841..c2221175d79 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server.go @@ -69,7 +69,7 @@ func (s *server) Start(_ context.Context, host component.Host) error { } qs := querysvc.NewQueryService(spanReader, depReader, opts) - mqs, err := s.createMetricStorage(host) + mqs, err := s.createMetricReader(host) if err != nil { return err } @@ -128,7 +128,7 @@ func (s *server) addArchiveStorage(opts *querysvc.QueryServiceOptions, host comp return nil } -func (s *server) createMetricStorage(host component.Host) (metricsstore.Reader, error) { +func (s *server) createMetricReader(host component.Host) (metricsstore.Reader, error) { if s.config.MetricStorage == "" { s.telset.Logger.Info("Metric storage not configured") return disabled.NewMetricsReader() diff --git a/cmd/jaeger/internal/extension/jaegerquery/server_test.go b/cmd/jaeger/internal/extension/jaegerquery/server_test.go index 0dfb8f41b49..e51f7c697b1 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/server_test.go +++ b/cmd/jaeger/internal/extension/jaegerquery/server_test.go @@ -324,7 +324,7 @@ func TestServerAddMetricsStorage(t *testing.T) { if tt.extension != nil { host = storagetest.NewStorageHost().WithExtension(jaegerstorage.ID, tt.extension) } - _, err := server.createMetricStorage(host) + _, err := server.createMetricReader(host) if tt.expectedErr == "" { require.NoError(t, err) } else {