diff --git a/.trivyignore b/.trivyignore index 7caba487e..dc9e34d2a 100644 --- a/.trivyignore +++ b/.trivyignore @@ -1,17 +1,11 @@ +# This file contains CVEs to be ignored by Trivy +# Auto-generated on Fri Jul 25 07:10:19 UTC 2025 + # CRITICAL # HIGH -# kube-state-metrics -CVE-2024-33599 -CVE-2024-33601 # MEDIUM -# prometheusui -CVE-2025-22872 # golang.org/x/net -GHSA-fv92-fjc5-jj9h -# kube-state-metrics -CVE-2023-4527 -CVE-2023-4806 -CVE-2024-33600 -# LOW \ No newline at end of file +# LOW + diff --git a/OPENTELEMETRY_VERSION b/OPENTELEMETRY_VERSION index 7addfe1a4..4380a5fcd 100644 --- a/OPENTELEMETRY_VERSION +++ b/OPENTELEMETRY_VERSION @@ -1 +1 @@ -v0.127.0 \ No newline at end of file +v0.129.0 diff --git a/TARGETALLOCATOR_VERSION b/TARGETALLOCATOR_VERSION index df74356c4..bfce3aae2 100644 --- a/TARGETALLOCATOR_VERSION +++ b/TARGETALLOCATOR_VERSION @@ -1 +1 @@ -v0.127.0 +v0.129.1 diff --git a/otelcollector/configuration-reader-builder/go.mod b/otelcollector/configuration-reader-builder/go.mod index 95fab4520..d4672907f 100644 --- a/otelcollector/configuration-reader-builder/go.mod +++ b/otelcollector/configuration-reader-builder/go.mod @@ -47,7 +47,7 @@ require ( github.com/onsi/ginkgo/v2 v2.22.2 // indirect github.com/onsi/gomega v1.36.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.64.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/x448/float16 v0.8.4 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect diff --git a/otelcollector/configuration-reader-builder/go.sum b/otelcollector/configuration-reader-builder/go.sum index a09c9c780..17bdd2faf 100644 --- a/otelcollector/configuration-reader-builder/go.sum +++ b/otelcollector/configuration-reader-builder/go.sum @@ -60,8 +60,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= 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/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= diff --git a/otelcollector/opentelemetry-collector-builder/go.mod b/otelcollector/opentelemetry-collector-builder/go.mod index e428b8512..5fd142a14 100644 --- a/otelcollector/opentelemetry-collector-builder/go.mod +++ b/otelcollector/opentelemetry-collector-builder/go.mod @@ -3,33 +3,33 @@ module github.com/vishiy/opentelemetry-collector-builder go 1.23.0 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.127.0 - go.opentelemetry.io/collector/component v1.33.0 - go.opentelemetry.io/collector/confmap v1.33.0 - go.opentelemetry.io/collector/confmap/provider/envprovider v1.33.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0 - go.opentelemetry.io/collector/exporter v0.127.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.127.0 - go.opentelemetry.io/collector/extension v1.33.0 - go.opentelemetry.io/collector/otelcol v0.127.0 - go.opentelemetry.io/collector/processor v1.33.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.127.0 - go.opentelemetry.io/collector/receiver v1.33.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.129.0 + go.opentelemetry.io/collector/component v1.35.0 + go.opentelemetry.io/collector/confmap v1.35.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v1.35.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0 + go.opentelemetry.io/collector/exporter v0.129.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.129.0 + go.opentelemetry.io/collector/extension v1.35.0 + go.opentelemetry.io/collector/otelcol v0.129.0 + go.opentelemetry.io/collector/processor v1.35.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.129.0 + go.opentelemetry.io/collector/receiver v1.35.0 ) require ( - cloud.google.com/go/auth v0.15.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect + cloud.google.com/go/auth v0.16.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.6.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect @@ -38,19 +38,18 @@ require ( github.com/antchfx/xpath v1.3.4 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go v1.55.6 // indirect + github.com/aws/aws-sdk-go v1.55.7 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dennwc/varint v1.0.0 // indirect - github.com/digitalocean/godo v1.132.0 // indirect + github.com/digitalocean/godo v1.144.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.0.1+incompatible // indirect + github.com/docker/docker v28.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.4 // indirect @@ -60,7 +59,7 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect - github.com/expr-lang/expr v1.17.3 // indirect + github.com/expr-lang/expr v1.17.5 // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -81,8 +80,8 @@ require ( github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-openapi/validate v0.24.0 // indirect - github.com/go-resty/resty/v2 v2.16.3 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-resty/resty/v2 v2.16.5 // indirect + github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/goccy/go-json v0.10.5 // indirect @@ -98,13 +97,13 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.5 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect github.com/googleapis/gax-go/v2 v2.14.1 // indirect - github.com/gophercloud/gophercloud/v2 v2.4.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect - github.com/hashicorp/consul/api v1.31.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/hashicorp/consul/api v1.32.0 // indirect github.com/hashicorp/cronexpr v1.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -118,11 +117,10 @@ require ( github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.18.0 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.21.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect - github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.3.2 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.3.3 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect @@ -131,10 +129,10 @@ require ( github.com/klauspost/compress v1.18.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect - github.com/knadh/koanf/v2 v2.2.0 // indirect + github.com/knadh/koanf/v2 v2.2.1 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.46.0 // indirect + github.com/linode/linodego v1.49.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magefile/mage v1.15.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -142,7 +140,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.4.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect - github.com/miekg/dns v1.1.63 // indirect + github.com/miekg/dns v1.1.65 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect @@ -154,36 +152,38 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/oklog/ulid v1.3.1 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.127.0 // indirect + github.com/oklog/ulid/v2 v2.1.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.129.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect - github.com/ovh/go-ovh v1.6.0 // indirect + github.com/ovh/go-ovh v1.7.0 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/alertmanager v0.28.0 // indirect + github.com/prometheus/alertmanager v0.28.1 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/common/assets v0.2.0 // indirect github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect - github.com/prometheus/prometheus v0.302.1 // indirect - github.com/prometheus/sigv4 v0.1.1 // indirect + github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 // indirect + github.com/prometheus/procfs v0.16.1 // indirect + github.com/prometheus/prometheus v0.304.1 // indirect + github.com/prometheus/sigv4 v0.1.2 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 // indirect - github.com/shirou/gopsutil/v4 v4.25.4 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect + github.com/shirou/gopsutil/v4 v4.25.5 // indirect github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/pflag v1.0.6 // indirect @@ -197,114 +197,116 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector v0.127.0 // indirect - go.opentelemetry.io/collector/client v1.33.0 // indirect - go.opentelemetry.io/collector/component/componentstatus v0.127.0 // indirect - go.opentelemetry.io/collector/component/componenttest v0.127.0 // indirect - go.opentelemetry.io/collector/config/configauth v0.127.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.33.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.127.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.127.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v0.127.0 // indirect - go.opentelemetry.io/collector/config/confignet v1.33.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.33.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.33.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.127.0 // indirect - go.opentelemetry.io/collector/config/configtls v1.33.0 // indirect - go.opentelemetry.io/collector/confmap/xconfmap v0.127.0 // indirect - go.opentelemetry.io/collector/connector v0.127.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.127.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.127.0 // indirect - go.opentelemetry.io/collector/consumer v1.33.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/consumertest v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.33.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.127.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.127.0 // indirect - go.opentelemetry.io/collector/featuregate v1.33.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.127.0 // indirect - go.opentelemetry.io/collector/pdata v1.33.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.127.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.127.0 // indirect - go.opentelemetry.io/collector/pipeline v0.127.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper v0.127.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.127.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.127.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.127.0 // indirect - go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0 // indirect - go.opentelemetry.io/collector/receiver/receivertest v0.127.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.127.0 // indirect - go.opentelemetry.io/collector/semconv v0.127.0 // indirect - go.opentelemetry.io/collector/service v0.127.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.127.0 // indirect - go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/contrib/otelconf v0.15.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.35.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.57.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0 // indirect - go.opentelemetry.io/otel/log v0.11.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.11.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/collector v0.129.0 // indirect + go.opentelemetry.io/collector/client v1.35.0 // indirect + go.opentelemetry.io/collector/component/componentstatus v0.129.0 // indirect + go.opentelemetry.io/collector/component/componenttest v0.129.0 // indirect + go.opentelemetry.io/collector/config/configauth v0.129.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.35.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.129.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.129.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v0.129.0 // indirect + go.opentelemetry.io/collector/config/confignet v1.35.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.35.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.35.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.129.0 // indirect + go.opentelemetry.io/collector/config/configtls v1.35.0 // indirect + go.opentelemetry.io/collector/confmap/xconfmap v0.129.0 // indirect + go.opentelemetry.io/collector/connector v0.129.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.129.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.129.0 // indirect + go.opentelemetry.io/collector/consumer v1.35.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/consumertest v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.35.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.129.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.129.0 // indirect + go.opentelemetry.io/collector/featuregate v1.35.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.129.0 // indirect + go.opentelemetry.io/collector/pdata v1.35.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.129.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.129.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.129.0 // indirect + go.opentelemetry.io/collector/pipeline v0.129.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper v0.129.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.129.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.129.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.129.0 // indirect + go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0 // indirect + go.opentelemetry.io/collector/receiver/receivertest v0.129.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.129.0 // indirect + go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 // indirect + go.opentelemetry.io/collector/service v0.129.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.129.0 // indirect + go.opentelemetry.io/contrib/bridges/otelzap v0.11.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.16.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.36.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.58.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 // indirect + go.opentelemetry.io/otel/log v0.12.2 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.12.2 // indirect + go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.uber.org/zap/exp v0.3.0 // indirect - golang.org/x/crypto v0.38.0 // indirect - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect - golang.org/x/mod v0.24.0 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sync v0.14.0 // indirect + golang.org/x/crypto v0.39.0 // indirect + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/net v0.41.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.11.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.34.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.226.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.72.1 // indirect + google.golang.org/api v0.230.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.31.3 // indirect - k8s.io/apimachinery v0.31.3 // indirect - k8s.io/client-go v0.31.3 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect - k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/otelcollector/opentelemetry-collector-builder/go.sum b/otelcollector/opentelemetry-collector-builder/go.sum index 9a468377f..0ccc5cd95 100644 --- a/otelcollector/opentelemetry-collector-builder/go.sum +++ b/otelcollector/opentelemetry-collector-builder/go.sum @@ -1,17 +1,17 @@ -cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps= -cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8= -cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= -cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= +cloud.google.com/go/auth v0.16.0 h1:Pd8P1s9WkcrBE2n/PhAwKsdrR35V3Sg2II9B+ndM3CU= +cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 h1:g0EZJwz7xkXQiZAI5xi9f3WWFYBlX1CPTrR+NDToRkQ= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 h1:1mvYtZfWQAnwNah/C+Z+Jb9rQH95LPE2vlmMuWAHJk8= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1/go.mod h1:75I/mXtme1JyWFtz8GocPHVFyH421IBoZErnO16dd0k= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1 h1:Bk5uOhSAenHyR5P61D/NzeQCv+4fEVV8mOkJ82NqpWw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1/go.mod h1:QZ4pw3or1WPmRBxf0cHd1tknzrT54WPBOQoGutCPvSU= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0 h1:OVoM452qUFBrX+URdH3VpR299ma4kfom0yB0URYky9g= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0/go.mod h1:kUjrAo8bgEwLeZ/CmHqNl3Z/kPm7y6FKfxxK0izYUg4= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= 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/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -24,8 +24,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5gYVyhkij+RTJ/VR6QIUaCfWeaFm2ycsjQ= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= 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/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -56,8 +56,8 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= 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.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= -github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= +github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -74,8 +74,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/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= @@ -89,14 +89,14 @@ github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.132.0 h1:n0x6+ZkwbyQBtIU1wwBhv26EINqHg0wWQiBXlwYg/HQ= -github.com/digitalocean/godo v1.132.0/go.mod h1:PU8JB6I1XYkQIdHFop8lLAY9ojp6M0XcU0TWaQSxbrc= +github.com/digitalocean/godo v1.144.0 h1:rDCsmpwcDe5egFQ3Ae45HTde685/GzX037mWRMPufW0= +github.com/digitalocean/godo v1.144.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v28.0.1+incompatible h1:FCHjSRdXhNRFjlHMTv4jUNlIBbTeRjrWfeFuJp7jpo0= -github.com/docker/docker v28.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= +github.com/docker/docker v28.1.1+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= @@ -115,8 +115,8 @@ github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8k github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= -github.com/expr-lang/expr v1.17.3 h1:myeTTuDFz7k6eFe/JPlep/UsiIjVhG61FMHFu63U7j0= -github.com/expr-lang/expr v1.17.3/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= +github.com/expr-lang/expr v1.17.5 h1:i1WrMvcdLF249nSNlpQZN1S6NXuW9WaOfF5tPi3aw3k= +github.com/expr-lang/expr v1.17.5/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb h1:IT4JYU7k4ikYg1SCxNI1/Tieq/NFvh6dzLdgi7eu0tM= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -167,13 +167,13 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= -github.com/go-resty/resty/v2 v2.16.3 h1:zacNT7lt4b8M/io2Ahj6yPypL7bqx9n1iprfQuodV+E= -github.com/go-resty/resty/v2 v2.16.3/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= +github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I= github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -223,20 +223,20 @@ github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= 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.5 h1:VgzTY2jogw3xt39CusEnFJWm7rlsq5yL5q9XdLOuP5g= -github.com/googleapis/enterprise-certificate-proxy v0.3.5/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= -github.com/gophercloud/gophercloud/v2 v2.4.0 h1:XhP5tVEH3ni66NSNK1+0iSO6kaGPH/6srtx6Cr+8eCg= -github.com/gophercloud/gophercloud/v2 v2.4.0/go.mod h1:uJWNpTgJPSl2gyzJqcU/pIAhFUWvIkp8eE8M15n9rs4= +github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= +github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= 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-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= -github.com/hashicorp/consul/api v1.31.0 h1:32BUNLembeSRek0G/ZAM6WNfdEwYdYo8oQ4+JoqGkNQ= -github.com/hashicorp/consul/api v1.31.0/go.mod h1:2ZGIiXM3A610NmDULmCHd/aqBJj8CkMfOhswhOafxRg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= +github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= @@ -291,18 +291,16 @@ github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977Vrm github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/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.18.0 h1:BemrVGeWI8Kn/pvaC1jBsHZxQMnRqOydS7Ju4BERB4Q= -github.com/hetznercloud/hcloud-go/v2 v2.18.0/go.mod h1:r5RTzv+qi8IbLcDIskTzxkFIji7Ovc8yNgepQR9M+UA= +github.com/hetznercloud/hcloud-go/v2 v2.21.0 h1:wUpQT+fgAxIcdMtFvuCJ78ziqc/VARubpOQPQyj4Q84= +github.com/hetznercloud/hcloud-go/v2 v2.21.0/go.mod h1:WSM7w+9tT86sJTNcF8a/oHljC3HUmQfcLxYsgx6PpSc= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -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.3.2 h1:2mUmrZZz6cPyT9IRX0T8fBLc/7XU/eTxP2Y5tS7/09k= -github.com/ionos-cloud/sdk-go/v6 v6.3.2/go.mod h1:SXrO9OGyWjd2rZhAhEpdYN6VUAODzzqRdqA9BCviQtI= +github.com/ionos-cloud/sdk-go/v6 v6.3.3 h1:q33Sw1ZqsvqDkFaKG53dGk7BCOvPCPbGZpYqsF6tdjw= +github.com/ionos-cloud/sdk-go/v6 v6.3.3/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInww= github.com/jarcoal/httpmock v1.3.1/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -320,8 +318,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKuao2vNdfD82fjjgPLfyHLpR41Z88viRWs= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw= +github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= +github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -330,8 +328,8 @@ github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpb github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= -github.com/knadh/koanf/v2 v2.2.0 h1:FZFwd9bUjpb8DyCWARUBy5ovuhDs1lI87dOEn2K8UVU= -github.com/knadh/koanf/v2 v2.2.0/go.mod h1:PSFru3ufQgTsI7IF+95rf9s8XA1+aHxKuO/W+dPoHEY= +github.com/knadh/koanf/v2 v2.2.1 h1:jaleChtw85y3UdBnI0wCqcg1sj1gPoz6D3caGNHtrNE= +github.com/knadh/koanf/v2 v2.2.1/go.mod h1:PSFru3ufQgTsI7IF+95rf9s8XA1+aHxKuO/W+dPoHEY= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -345,8 +343,8 @@ 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/linode/linodego v1.46.0 h1:+uOG4SD2MIrhbrLrvOD5HrbdLN3D19Wgn3MgdUNQjeU= -github.com/linode/linodego v1.46.0/go.mod h1:vyklQRzZUWhFVBZdYx4dcYJU/gG9yKB9VUcUs6ub0Lk= +github.com/linode/linodego v1.49.0 h1:MNd3qwvQzbXB5mCpvdCqlUIu1RPA9oC+50LyB9kK+GQ= +github.com/linode/linodego v1.49.0/go.mod h1:B+HAM3//4w1wOS0BwdaQBKwBxlfe6kYJ7bSC6jJ/xtc= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= @@ -377,8 +375,8 @@ github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.63 h1:8M5aAw6OMZfFXTT7K5V0Eu5YiiL8l7nUAkyN6C9YwaY= -github.com/miekg/dns v1.1.63/go.mod h1:6NGHfjhpmr5lt3XPLuyfDJi5AXbNIPM9PY6H6sF1Nfs= +github.com/miekg/dns v1.1.65 h1:0+tIPHzUW0GCge7IiK3guGP57VAw7hoPDfApjkMD1Fc= +github.com/miekg/dns v1.1.65/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= 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= @@ -393,6 +391,10 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx 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/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -413,49 +415,52 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.127.0 h1:5Qqp8m+kWf3wswoxcf28ero3J5ddVz0GXfPBu5dsF4E= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.127.0/go.mod h1:vlbeN9M+WAQJXx+KXihRdFpYtL10YiG7hirBw0jVQTE= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.127.0 h1:D66eqoO8s9GBeqvpJpOeXPdml2pf1LAxFIDp3sW6kQ0= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.127.0/go.mod h1:3s2sN5SPnIgcj/REtDRm7ra7wbamUXRNsKWdiq9ozqo= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.127.0 h1:x4YN4Pp56JLyfvG/LA05Xc0d6QGwbXy3MzjyzQn7jfU= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.127.0/go.mod h1:bEWsX7jbO6OPCW1DJ1GFfcAYBNaGVmJ/FAuJsCbh294= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.127.0 h1:e+Dv7xCw9+XHWHlCD4jvU8xhu/+ckHTEFxDI+wuZVT8= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.127.0/go.mod h1:jGwB3dMiscECgE859rLB9O7aA8lR11EemBYVssV0kzA= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.127.0 h1:+rH1wkeYNBwK2FGpEejlgQ+y7rAky8NI+jZmXPe4ba8= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.127.0/go.mod h1:iEHea6+K/GmU8euv5xc8jCWCITUySuGsd6raknzduEM= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.127.0 h1:F689FgJA1wCHJ/1eyNu8JDMr4hAWQrMcArrQx1K2sMg= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.127.0/go.mod h1:69n06/kjFG1HLrhhZJaLR5zYPHIpEcFyO0SdPYQphaw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.127.0 h1:vfFBZP6CSrxo0d5jSk7bTvT3hdwhfdshCthzmFFOugg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.127.0/go.mod h1:u9L3gSCAckl6Iy5fLY0W8EGA8uuXcLxYbgxLoipxBiE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.127.0 h1:1gE/wca+n2hptpCrH60oqbTdXUMvMyZSe0lBkaBmUpQ= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.127.0/go.mod h1:kEufI2rLrjeBxAyV+SElguqAyZNU3OUVOVhPCC+eJDw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.127.0 h1:htRqI1VzOR/9ATKKl28Ps4q/GR9T6tG+lwSdXnbufRE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.127.0/go.mod h1:eYArfh5F/dmAP8LKFcZfTThRUGYyuN/zaUA2G+H88qg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.127.0 h1:a2SVv64zTC3jaVMgb3K0D2cbKD/5exbXcCE6jqALt18= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.127.0/go.mod h1:EIx6/BjN4E6wNvYsdqeaBcnS+nZJ9rqPRxs704Jjl4o= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.127.0 h1:y7YbF7K9VaU2NkewxdI1/Df/QOYMo8Ly7KHPqEsN0w0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.127.0/go.mod h1:5ktyJQUOSlQ5h4n1AviKkSB60NPubS6Vn7B3x4gJ5jI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.127.0 h1:c74zBRjbux3Y5OqZkRfEnB5a1fvq8O8gqMgOJsD9Vyg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.127.0/go.mod h1:tS1U2wt/i4Ca1r1hUZ1zY8NykuT/zNp9bVQGqC1U9cs= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.127.0 h1:ti7n1evZjVhrb4nfNkz/DoX786Te7K6LIijDrwuJDiI= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.127.0/go.mod h1:T2+yXuRD1SnC7agO/EQYPXHhBe6DKdoWdomGTUMJwyM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.127.0 h1:ggBXcC9DfzB3jFOjpfQmJQ2aZOQYUCsV+SIRn/LeOhU= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.127.0/go.mod h1:3AnEA5nUFnw0JffKBaR7zREcHM7vqb5Jxd6+d2X7id8= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.127.0 h1:hEkxkds7W8hntvJ25dKKAFTgG7bslG3AusIrAQlk3zk= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.127.0/go.mod h1:QcaxF8M7uGC0kValHUHww9/Lz2S18sQL34ZYjW9klz0= +github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.129.0 h1:mTTeFCilT/HHcONIEBkiEhbiDdQTn+8YMt2G2sVldXw= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.129.0/go.mod h1:N9AkTWrUjZeFw/omtMQhYvVlsVE5Cfq3RNYw6YZNWvw= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.129.0 h1:SVyXnxngCd+WIIigY6XmYjnrbBthfY26cuSNu2AxVhc= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.129.0/go.mod h1:UEZMQUgG5ABPySiMTfINW5CTYa0LWC3B6/8UFUhRQ60= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.129.0 h1:oM7A/qZBgALjdsIaxsq35Czi09ufqhqIuhwT+Yu/lqY= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.129.0/go.mod h1:7LPAdyC0Sfe3Cg+edlUL3wv2C9Vai3i6GAAOJTKLMIg= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.129.0 h1:qwuUfLK8ukEHcoq8CK9HFvnBcOmxNxfMtLkuKN8texM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.129.0/go.mod h1:fyuzPZMBR5V1YqLnFj3rYXlTmBgdkToH7PQA4PRU8yg= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.129.0 h1:2pzb6bC/AAfciC9DN+8d7Y8Rsk8ZPCfp/ACTfZu87FQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.129.0/go.mod h1:tIE4dzdxuM7HnFeYA6sj5zfLuUA/JxzQ+UDl1YrHvQw= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.129.0 h1:YT2+mIjPrlfND+Xy1gTH3Z3jYH8hT4/C1sm5P9SmF8M= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.129.0/go.mod h1:kVQ7xRVQ1XEa2YOiHkJGZRskbGXhOvzuzjpVNZEBbtg= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.129.0 h1:WUSLlIn6qhSUyE/eZ5hW8gXeDEwVpr0PGTycpiPLjOk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.129.0/go.mod h1:CjSV4GdX6JLzja2MXTbDaSAkcR4TBKK708+VTWCNy/g= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.129.0 h1:ydkfqpZ5BWZfEJEs7OUhTHW59og5aZspbUYxoGcAEok= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.129.0/go.mod h1:oA+49dkzmhUx0YFC9JXGuPPSBL0TOTp6jkv7qSr2n0Q= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.129.0 h1:AOVxBvCZfTPj0GLGqBVHpAnlC9t9pl1JXUQXymHliiY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.129.0/go.mod h1:0CAJ32V/bCUBhNTEvnN9wlOG5IsyZ+Bmhe9e3Eri7CU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.129.0 h1:EZD2wflQTQz5h6H5z3gsayaXai+VZEPRaZgTaLFSPno= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.129.0/go.mod h1:mSzwL296y6nJOP30eWXxwzWa9PyjG4kReAw7EzyEvok= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.129.0 h1:t2SrDHDfHY+oJeCdxKto8nrvlnL6/2J2nvQRId0EuRE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.129.0/go.mod h1:BfBbOhQeNA0O+dIYDf9KZSXUfzDvGReJAKrJlTaiaFw= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.129.0 h1:dTZkwlnfngCQ7z0s20a87CFrOq2NzTRFKAKvsloXZ9Y= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.129.0/go.mod h1:wFDQdxMJD+2g71kKfmscQtUbqVhl134QNKFUZP1show= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.129.0 h1:yDLSAoIi3jNt4R/5xN4IJ9YAg1rhOShgchlO/ESv8EY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.129.0/go.mod h1:IXQHbTPxqNcuu44FvkyvpYJ6Qy4wh4YsCVkKsp0Flzo= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.129.0 h1:UK1h8eiorz5ZbgIwK3rnYF0L2/lcDDlgWUolIIoDawI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.129.0/go.mod h1:D9EzpKY7pQq0NVBK8iMfUvqWNmleUOhidAhEeT81alU= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.129.0 h1:3g+anm7gMT8QwztsLolMWbG3JjWMpkCMAtWEqQvNG20= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.129.0/go.mod h1:itXoSFDh2/D2r7QC4TdkV3q/D/Hy8O6Msagxe/mHvfY= 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.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= -github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= +github.com/ovh/go-ovh v1.7.0 h1:V14nF7FwDjQrZt9g7jzcvAAQ3HN6DNShRFRMC3jLoPw= +github.com/ovh/go-ovh v1.7.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= @@ -473,8 +478,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/alertmanager v0.28.0 h1:sLN+6HhZet8hrbmGHLAHWsTXgZSVCvq9Ix3U3wvivqc= -github.com/prometheus/alertmanager v0.28.0/go.mod h1:/okSnb2LlodbMlRoOWQEKtqI/coOo2NKZDm2Hu9QHLQ= +github.com/prometheus/alertmanager v0.28.1 h1:BK5pCoAtaKg01BYRUJhEDV1tqJMEtYBGzPw8QdvnnvA= +github.com/prometheus/alertmanager v0.28.1/go.mod h1:0StpPUDDHi1VXeM7p2yYfeZgLVi/PPlt39vo9LQUHxM= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= @@ -487,37 +492,39 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= +github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 h1:YaJ1JqyKGIUFIMUpMeT22yewZMXiTt5sLgWG1D/m4Yc= +github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07/go.mod h1:ZO/4EUanXL7wbvfMHcS+rq9sCBxICdaU8RBFkVg5wv0= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -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.302.1 h1:xqVdrwrB4WNpdgJqxsz5loqFWNUZitsK8myqLuSZ6Ag= -github.com/prometheus/prometheus v0.302.1/go.mod h1:YcyCoTbUR/TM8rY3Aoeqr0AWTu/pu1Ehh+trpX3eRzg= -github.com/prometheus/sigv4 v0.1.1 h1:UJxjOqVcXctZlwDjpUpZ2OiMWJdFijgSofwLzO1Xk0Q= -github.com/prometheus/sigv4 v0.1.1/go.mod h1:RAmWVKqx0bwi0Qm4lrKMXFM0nhpesBcenfCtz9qRyH8= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/prometheus v0.304.1 h1:e4kpJMb2Vh/PcR6LInake+ofcvFYHT+bCfmBvOkaZbY= +github.com/prometheus/prometheus v0.304.1/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= +github.com/prometheus/sigv4 v0.1.2 h1:R7570f8AoM5YnTUPFm3mjZH5q2k4D+I/phCWvZ4PXG8= +github.com/prometheus/sigv4 v0.1.2/go.mod h1:GF9fwrvLgkQwDdQ5BXeV9XUSCH/IPNqzvAoaohfjqMU= github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg= github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= -github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E= -github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw= +github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM= +github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 h1:yoKAVkEVwAqbGbR8n87rHQ1dulL25rKloGadb3vm770= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30/go.mod h1:sH0u6fq6x4R5M7WxkoQFY/o7UaiItec0o1LinLCJNq8= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shirou/gopsutil/v4 v4.25.4 h1:cdtFO363VEOOFrUCjZRh4XVJkb548lyF0q0uTeMqYPw= -github.com/shirou/gopsutil/v4 v4.25.4/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= +github.com/shirou/gopsutil/v4 v4.25.5 h1:rtd9piuSMGeU8g1RMXjZs9y9luK5BwtnG7dZaQUJAsc= +github.com/shirou/gopsutil/v4 v4.25.5/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c= github.com/shoenig/test v1.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= @@ -578,186 +585,192 @@ go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector v0.127.0 h1:W8Gs3W/Z2kY6cDSb6yv79Wtqg8DbcKEYz5dNIBooaFk= -go.opentelemetry.io/collector v0.127.0/go.mod h1:wtiUNv3pd9r104JaFq1IlGrKdD5ExNkjPcfST8+rgxM= -go.opentelemetry.io/collector/client v1.33.0 h1:1S/t3CV3SnmwjbTSKj1DoMsQkDq3bBlLt9eREX/Lzrk= -go.opentelemetry.io/collector/client v1.33.0/go.mod h1:CMX7Ly/zQE7hH9T4NUyT9kKYlZC8JIu7ncBzEL6kLYM= -go.opentelemetry.io/collector/component v1.33.0 h1:AoP5ZGEU7Q3YDYQx2CgYy82Xmy3gLgh1WCMeLtTXXFo= -go.opentelemetry.io/collector/component v1.33.0/go.mod h1:/5v3hl1GSQT45D6T7sE/LB6nlQMMRHCYDX1glJamh7E= -go.opentelemetry.io/collector/component/componentstatus v0.127.0 h1:3oZU2b7Giyc+tnrStYDWJAPHt2QxWOWuhTumGiHl9OQ= -go.opentelemetry.io/collector/component/componentstatus v0.127.0/go.mod h1:9afwixYMvsb1xvmxxg33XzMU7ZTe4pBitkugj5DDZdQ= -go.opentelemetry.io/collector/component/componenttest v0.127.0 h1:2cieQeh5OS1zf73Aad4b8Rf5vCDk5Hlb6oeJH7Q1VYs= -go.opentelemetry.io/collector/component/componenttest v0.127.0/go.mod h1:0jHbHYRXSNS+nm2vSsxpdAsIj+EDehxKRGk4oclyHKs= -go.opentelemetry.io/collector/config/configauth v0.127.0 h1:31PvdHi0mSXJQAUT0jlicOlT2CsPlkc9KHr/Ek3tIj0= -go.opentelemetry.io/collector/config/configauth v0.127.0/go.mod h1:Jzle3Nup5LCxcJPb4DdPpH5iEqDOD6WSMeiqBBWksbo= -go.opentelemetry.io/collector/config/configcompression v1.33.0 h1:nXKQ+wN/8O0dyjkpieIwQ3PWclJa0mcGwv9mmYd48oU= -go.opentelemetry.io/collector/config/configcompression v1.33.0/go.mod h1:QwbNpaOl6Me+wd0EdFuEJg0Cc+WR42HNjJtdq4TwE6w= -go.opentelemetry.io/collector/config/configgrpc v0.127.0 h1:GiRwMDLqKO3OfvzHkGNXxoRRZSiOrXWgGYJ8qGeO+Zw= -go.opentelemetry.io/collector/config/configgrpc v0.127.0/go.mod h1:5Jj5+q4czPlTjvxHnDPOHo7Vod4oRWeTvyWyJSRL61M= -go.opentelemetry.io/collector/config/confighttp v0.127.0 h1:VOMJ4v79SxiUVabl+kw/j56zOKs0zC5073R4SaQ4gbY= -go.opentelemetry.io/collector/config/confighttp v0.127.0/go.mod h1:/HxOPqXjYm1ViIwmxesqayozvTWawnd1bg6F2WMfBTs= -go.opentelemetry.io/collector/config/configmiddleware v0.127.0 h1:gJ6xTs3cip7Q5zgMcdBj5fiYYHpmXGclGuHCxDKs+RA= -go.opentelemetry.io/collector/config/configmiddleware v0.127.0/go.mod h1:yYxOsEgHG8WoX4ShSJMpXVskU5GTK3ecTAHzqH6YixE= -go.opentelemetry.io/collector/config/confignet v1.33.0 h1:WYka8fdJV3x8gecGiW7nhXa4wwhRxjNK2mEOWDYWXLw= -go.opentelemetry.io/collector/config/confignet v1.33.0/go.mod h1:HgpLwdRLzPTwbjpUXR0Wdt6pAHuYzaIr8t4yECKrEvo= -go.opentelemetry.io/collector/config/configopaque v1.33.0 h1:QNiPszINK/pBA+tFWgct7IXka+X6W2E4k/Sy8TTg0s8= -go.opentelemetry.io/collector/config/configopaque v1.33.0/go.mod h1:rw0/X78O8cOk0dhACqNbdiKk1PF7z7mwq9wgSpWoqgs= -go.opentelemetry.io/collector/config/configretry v1.33.0 h1:HAzchQZKq1lCVzLZnUjRYt3J+Uk4Q1Mr1SZXMgwtb+c= -go.opentelemetry.io/collector/config/configretry v1.33.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ= -go.opentelemetry.io/collector/config/configtelemetry v0.127.0 h1:m4HKEbxcxclMiJJyIvbaJrQbnG+Eck9l8827f8jTcWw= -go.opentelemetry.io/collector/config/configtelemetry v0.127.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA= -go.opentelemetry.io/collector/config/configtls v1.33.0 h1:4pGT0nFM24KCtyyq8ng7VWW9fVN1VLQMlkNrMhiWRhU= -go.opentelemetry.io/collector/config/configtls v1.33.0/go.mod h1:50tvOLlI6iedkrQ9/HMO1KWxzzx0Nu28MgSRXxTwSkY= -go.opentelemetry.io/collector/confmap v1.33.0 h1:dCLSrONMssTWhnbELZZpJoWMn+P+DVJc8r10JJCeS/4= -go.opentelemetry.io/collector/confmap v1.33.0/go.mod h1:fq5ccP4lzF3IVK/Cs0kWsiH0dynejXkMc8gaNwvkvtk= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.33.0 h1:A61tuCM6vlBH6Pk1YoJnkOeFUwUnH/vZMQHTKqEL3eo= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.33.0/go.mod h1:nbNjPiB6XBrGo4L+IR3W2NjK3AS1eK84yY1g2iDWgto= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0 h1:T7rVBmAKgLDLXYKQbCrgw15eD9sAhHqvnSGxYv735ew= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0/go.mod h1:JlAC1QMaaPiPx7x8hQYRcxxf2GiOeHYaM8uEIri1dPg= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.33.0 h1:M14VV2/mSU9TMnxfZeHi/fVgzPMv0caPPDNgFXoN8SU= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.33.0/go.mod h1:8yugd3piWlNFCssSTlSdc9KAWGGah+dJ86Yr2wdFg9I= -go.opentelemetry.io/collector/confmap/xconfmap v0.127.0 h1:isSNkBXltLxUWstxJyHcJ3qVo9qp9GABCVhzIvZgIdM= -go.opentelemetry.io/collector/confmap/xconfmap v0.127.0/go.mod h1:K9GaSgmMYxM1/QlAVNIj2fX9LekInm9dwFnIeF1HCgs= -go.opentelemetry.io/collector/connector v0.127.0 h1:oH1qfmZK5Ma6ytbXcInFHySSv3M34rBTCS+DbXzZK/4= -go.opentelemetry.io/collector/connector v0.127.0/go.mod h1:KYOVGKGj23WL4+y5bHvbPc7VSPRm8BpwzKdx6YOzb98= -go.opentelemetry.io/collector/connector/connectortest v0.127.0 h1:bTJCvSWj4TywQ4i9AAF3PFMcAuE7oUtYBXyzl6ng7Yo= -go.opentelemetry.io/collector/connector/connectortest v0.127.0/go.mod h1:1khc74iFfEJYYOazVfr6KRAfHESNrR9fUgpNtx0I55I= -go.opentelemetry.io/collector/connector/xconnector v0.127.0 h1:re8+Wt4uzgcXRs2uagBotAImGgjjqdZg6i/vpdjAe7U= -go.opentelemetry.io/collector/connector/xconnector v0.127.0/go.mod h1:UQODXm9pN1LbOEQqjQ225PMI8caNCmWHMQxmW9V72cA= -go.opentelemetry.io/collector/consumer v1.33.0 h1:y6ohYtFsXHdD3eJ67SRHSgumRQRNlR6N+DuyjOq3hYo= -go.opentelemetry.io/collector/consumer v1.33.0/go.mod h1:WwB/nHWw6KwumVy7OayUmvRa7V3UsfK+f8qwW8/c5rY= -go.opentelemetry.io/collector/consumer/consumererror v0.127.0 h1:9MylkP5eR2hlaj80v67VRUjSoiHNNHTK37gCrtz/9+w= -go.opentelemetry.io/collector/consumer/consumererror v0.127.0/go.mod h1:7FRcHa5E8rMytzJHRdzd9SzgweDwfvEc92Clq54BjSA= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.127.0 h1:gMUY5EUu6YxAZY0ZvrpQ6jDsvjyItLyXlSAA/ietxtA= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.127.0/go.mod h1:Jlkd5T8Qs2DcrBj1wn3fqh8DT5piaNDTm0GvvmUvdPs= -go.opentelemetry.io/collector/consumer/consumertest v0.127.0 h1:rtp7ilS1P1xVfmZu0XnWohhi1N2d+wtWo9ORo8A1Xb8= -go.opentelemetry.io/collector/consumer/consumertest v0.127.0/go.mod h1:SFn8ifdrKulaQWDIvQskmEjSNdMZMQ5upQYJXLFEvzg= -go.opentelemetry.io/collector/consumer/xconsumer v0.127.0 h1:23qpVECDiqad44d9HtQ1M4P4g2xbB4A7R1b9yux2Gag= -go.opentelemetry.io/collector/consumer/xconsumer v0.127.0/go.mod h1:vZ06tk8nu2OyeizjN6AtlaftY79WuODi2rC3U7lxsb4= -go.opentelemetry.io/collector/exporter v0.127.0 h1:qy86B33YBKaBRwEbXLPe6ju3P05MqozyfUGW11RiaQ0= -go.opentelemetry.io/collector/exporter v0.127.0/go.mod h1:P72zzaz4tdK/MOGhliimvs4Cjrlefa5XunEfrs0U5i8= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.127.0 h1:cSkBz/MsvmRtkca3B1SLrT2Qyy8nOblGJ1/eVBQ3Zmg= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.127.0/go.mod h1:1XTbvObfifCdHV+uIyTzY1Nx7ZFpxha//aCIkBk7Vsg= -go.opentelemetry.io/collector/exporter/exportertest v0.127.0 h1:P6QYcPw1VSpXb9QYiLjUeIGKpbwfx+P9b0hlPDO5JLo= -go.opentelemetry.io/collector/exporter/exportertest v0.127.0/go.mod h1:5qdUXbocIpzAA8SJOyYq+gGz2h3JNileYnLJ6fBR2/8= -go.opentelemetry.io/collector/exporter/otlpexporter v0.127.0 h1:MWdGc06C/8L4QqmUcYVUw2OzQIG4sG8pAzfj/5GKomU= -go.opentelemetry.io/collector/exporter/otlpexporter v0.127.0/go.mod h1:hSISdbZv52Ik7pVukcIVovmamQwK9QAyTVX5qIfFavQ= -go.opentelemetry.io/collector/exporter/xexporter v0.127.0 h1:vP5Sk3s35u6oazXqm4nLkz/0Xud3dVAIqdWt8wrqQBs= -go.opentelemetry.io/collector/exporter/xexporter v0.127.0/go.mod h1:0x+KzQsI6VmQnx3MO4C/XmMeL7zmY6bZPHaktTAekKY= -go.opentelemetry.io/collector/extension v1.33.0 h1:QXNOwcvKi9iwai83ielK8B8fCOH9wNO9K98IY0ftotM= -go.opentelemetry.io/collector/extension v1.33.0/go.mod h1:EVsoOULEODW5vzHE76ltl7BjOdaYnDw5/EmAFFFAmBg= -go.opentelemetry.io/collector/extension/extensionauth v1.33.0 h1:m7PQze6Z9xddM1UmbU2P25cipAe7koAEaR6lPgxPMxE= -go.opentelemetry.io/collector/extension/extensionauth v1.33.0/go.mod h1:4sqbOn6DeRFEFpmBKElk92mdv9lImrXrCJaR8s05K68= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.127.0 h1:CXSYbXZBD7cLI1HlIp1w+hJmyznf75ZYeFitj6FDxDg= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.127.0/go.mod h1:GKxP+mkK2Pq6h9trvZ7/Vb4XM/fosuwvB08A1mnlNYM= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0 h1:WHe1RZScVJJV3sh1pHIF/WJAaZ7VeqejmbQ1bU4/TDM= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0/go.mod h1:OZRBpnrS7reS0PfQeyQiFgE1UnHFHwU6V4jHo51NGh8= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0 h1:5dM/Wqnvn6g6qLaPZy+86dyfiEZgibNcY/EGOgaxtCM= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0/go.mod h1:XGFqdRdGYXJt3IotRW72tgSCFS20Vr9jk5jqQiinmXc= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.127.0 h1:18YkheReX/x/pJGGCtwBLPUcCnzGUy79IQAmQibGVLA= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.127.0/go.mod h1:aqtxnTgH5F6OfWanYrEM9KKy1uWaBU46MZKEvDOzBv0= -go.opentelemetry.io/collector/extension/extensiontest v0.127.0 h1:wf+rP15+mRRyNfhAPNccNOsRAOyEIOMNleJiMbYYI2A= -go.opentelemetry.io/collector/extension/extensiontest v0.127.0/go.mod h1:yZKXiLKaJOTXgNOmvWgYKZ2DGToCxHzrqN6PX8YC+fI= -go.opentelemetry.io/collector/extension/xextension v0.127.0 h1:JT2lXY+MGiXuU6AoBX5kRLnUtr5jG6+xKSV0o//rMTk= -go.opentelemetry.io/collector/extension/xextension v0.127.0/go.mod h1:IFx3P/zH8Gey2XP70eb5q4OZHBWMtizg5Gr71eXBndA= -go.opentelemetry.io/collector/extension/zpagesextension v0.127.0 h1:iwxxrUh/5B858EAKqYDxjfiiINtioyFhty/0apHDV5A= -go.opentelemetry.io/collector/extension/zpagesextension v0.127.0/go.mod h1:w6wwIJ1f+yM28kphp7leqeho2lpVr8Sb5qt6Cwwpzk4= -go.opentelemetry.io/collector/featuregate v1.33.0 h1:ronhxafsUE7H3Cem4U2PXrvDZhxA9Gixx4Wik7X32X8= -go.opentelemetry.io/collector/featuregate v1.33.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0 h1:LXLYLmPuf7ZwygcQmzFJzbc66CGC+CrFSxEjKH/ZOQ8= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0/go.mod h1:V16/QfrzLcGVI8gcTujYU4i9U9+IDA6UOC8hjM659tY= -go.opentelemetry.io/collector/internal/telemetry v0.127.0 h1:/wAnPmFjUN7MwnRyDYJzUJZa5n0qK9zM1F7PgMWM5Y0= -go.opentelemetry.io/collector/internal/telemetry v0.127.0/go.mod h1:Un7Zn//l0BkE6hk6wirsTGwnJJpxw/gJWgzYL3eSruk= -go.opentelemetry.io/collector/otelcol v0.127.0 h1:nCOfC4IpJe36QOmLcFubwyFjeTfo268uWpMmRo5R0I4= -go.opentelemetry.io/collector/otelcol v0.127.0/go.mod h1:jN1rfCDqohNNy/KnLhIEWLSUz0ZQC+GuI6VkNMdjZZs= -go.opentelemetry.io/collector/pdata v1.33.0 h1:PuqiZzdCoBJo9NmMzuYfzazpeFZyLmbDVcRrvb497lg= -go.opentelemetry.io/collector/pdata v1.33.0/go.mod h1:TDvbHuvIK+g6xqu1gxtz8ti4pB2x1WcBpjFob5KfleU= -go.opentelemetry.io/collector/pdata/pprofile v0.127.0 h1:t0fpwMunK+dkUTPFc0zim8qfAan086eMqpSufnt+H30= -go.opentelemetry.io/collector/pdata/pprofile v0.127.0/go.mod h1:6S6q2+vaF7qfDxLKctQUB+CN7hThuz73p4le6mYLWnQ= -go.opentelemetry.io/collector/pdata/testdata v0.127.0 h1:1j6KWO/7TyyUaYpIeyxWzsE/klVYGFhbsTCJp4GaTco= -go.opentelemetry.io/collector/pdata/testdata v0.127.0/go.mod h1:UXvOckTD4hhAA9nzRQik0lVBU/hJ+SFes+ar9LjzYBk= -go.opentelemetry.io/collector/pipeline v0.127.0 h1:WdllRrWwsJ1yAr9l4LRiArb0ekdNaGuMJP8zQ6lZlos= -go.opentelemetry.io/collector/pipeline v0.127.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4= -go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0 h1:dWftaJ1yr5BoI5S5Xi5g73yAFm439Uqy5oKio7dPKyc= -go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0/go.mod h1:w/l+ks0aBhxJyDG8chLY8wff6SgqycWpxjBPlaVD2UI= -go.opentelemetry.io/collector/processor v1.33.0 h1:oI8gBA/HvGQru/45tUp1kGXz9EzemhGS0ufInPZzQoA= -go.opentelemetry.io/collector/processor v1.33.0/go.mod h1:frlKFbtD+VBSK2vqbiDX1qy0bzkfdjpnUEdIl9wCZeA= -go.opentelemetry.io/collector/processor/batchprocessor v0.127.0 h1:HyG0C5xCo8JbvctyzWsyeeOcH5VU+3oQSHBvgrB3njQ= -go.opentelemetry.io/collector/processor/batchprocessor v0.127.0/go.mod h1:xuxPowQ7xXLmWfNpBlVVb+N79CmQAiMqgqSeh6KjCfg= -go.opentelemetry.io/collector/processor/processorhelper v0.127.0 h1:6RpqeTVrhXmo0klrsasGUNtn6ElIhqRERMmYZESCWwA= -go.opentelemetry.io/collector/processor/processorhelper v0.127.0/go.mod h1:BjMXafflYUHZc3KhXZJSLm5g+IZmK9r2Z+4XWQXMFU0= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.127.0 h1:e3WsFWKgL3JRTH5xR+/8i4H7JdL9AMlf+VAnMHcGZJc= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.127.0/go.mod h1:BNBpwxwFUTt90n6jJ+cken5N0JYkVB+Jg92v7akEn5w= -go.opentelemetry.io/collector/processor/processortest v0.127.0 h1:NKSOBWg5ggJO0km5FJ/UeFU5MORvbqNJEhdT1O74OtA= -go.opentelemetry.io/collector/processor/processortest v0.127.0/go.mod h1:6Q0HdaiuakBwfnVjEhf3HtilfIlXRu0DKQGgfv5FasY= -go.opentelemetry.io/collector/processor/xprocessor v0.127.0 h1:WEXmmIbh/ifag9yS42CUHHMOwbdGvbr8jr6MLrL2MDU= -go.opentelemetry.io/collector/processor/xprocessor v0.127.0/go.mod h1:IHpB7FxRjgzHr3+EwfleRx33iMkkNq5GxzlGaxuRhBY= -go.opentelemetry.io/collector/receiver v1.33.0 h1:ge3LSQZ5uSZQUQhGb9hg1iWIUg6NQwOs+Wv29DyRZmk= -go.opentelemetry.io/collector/receiver v1.33.0/go.mod h1:RkTKFqh9+lSY3QayvfJ39dv7bAMRIHHnx1dd8TvmVMU= -go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0 h1:Hjhd9xV+IlJLFxx3d1k3hos/CinkDj6diBZSU208mRQ= -go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0/go.mod h1:gsOnOAQRjShnnIDMGFJBd4N8jiDmt7JPEmcvQp6g/Jw= -go.opentelemetry.io/collector/receiver/receivertest v0.127.0 h1:3XtARAYqYxhcOa9LMmr9tc03sKZZFjsTjUgcJlPxZI0= -go.opentelemetry.io/collector/receiver/receivertest v0.127.0/go.mod h1:OSMA/bmiB+a73JboiCuvVPrPR7+1CuMh1PTNRTWDTEQ= -go.opentelemetry.io/collector/receiver/xreceiver v0.127.0 h1:oUAz3sCcOl+Mt/e5Gq3nZX0J0bpFUghLkItnC0bqWy0= -go.opentelemetry.io/collector/receiver/xreceiver v0.127.0/go.mod h1:spfky570JgiS7CRDbM/DiWJSM/mkq5RmdwldbFOMVoM= -go.opentelemetry.io/collector/semconv v0.127.0 h1:Mh5VEhH0bXAHQSvjHK31sN0Ct8vSNqaxG7aghQBC8Y8= -go.opentelemetry.io/collector/semconv v0.127.0/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= -go.opentelemetry.io/collector/service v0.127.0 h1:72JKDcEhTqEsEGrlzX7g459O4HgS8ryczGwIr67T4So= -go.opentelemetry.io/collector/service v0.127.0/go.mod h1:yL3cVJhbISZZgGOuNFa4inPNS+IeFUfLLJ2FZio5dO8= -go.opentelemetry.io/collector/service/hostcapabilities v0.127.0 h1:nAdem/Lz9JLvWpZ41atvc1EUhk7Np2VmmBHx1AP/N3w= -go.opentelemetry.io/collector/service/hostcapabilities v0.127.0/go.mod h1:IbK3DF5IplTqXpj37iGSeOej6F6FZAFb/QroQ7F8p+8= -go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 h1:ojdSRDvjrnm30beHOmwsSvLpoRF40MlwNCA+Oo93kXU= -go.opentelemetry.io/contrib/bridges/otelzap v0.10.0/go.mod h1:oTTm4g7NEtHSV2i/0FeVdPaPgUIZPfQkFbq0vbzqnv0= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0 h1:iQZYNQ7WwIcYXzOPR46FQv9O0dS1PW16RjvR0TjDOe8= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0/go.mod h1:54CaSNqYEXvpzDh8KPjiMVoWm60t5R0dZRt0leEPgAs= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/contrib/otelconf v0.15.0 h1:BLNiIUsrNcqhSKpsa6CnhE6LdrpY1A8X0szMVsu99eo= -go.opentelemetry.io/contrib/otelconf v0.15.0/go.mod h1:OPH1seO5z9dp1P26gnLtoM9ht7JDvh3Ws6XRHuXqImY= -go.opentelemetry.io/contrib/propagators/b3 v1.35.0 h1:DpwKW04LkdFRFCIgM3sqwTJA/QREHMeMHYPWP1WeaPQ= -go.opentelemetry.io/contrib/propagators/b3 v1.35.0/go.mod h1:9+SNxwqvCWo1qQwUpACBY5YKNVxFJn5mlbXg/4+uKBg= -go.opentelemetry.io/contrib/zpages v0.60.0 h1:wOM9ie1Hz4H88L9KE6GrGbKJhfm+8F1NfW/Y3q9Xt+8= -go.opentelemetry.io/contrib/zpages v0.60.0/go.mod h1:xqfToSRGh2MYUsfyErNz8jnNDPlnpZqWM/y6Z2Cx7xw= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 h1:QcFwRrZLc82r8wODjvyCbP7Ifp3UANaBSmhDSFjnqSc= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0/go.mod h1:CXIWhUomyWBG/oY2/r/kLp6K/cmx9e/7DLpBuuGdLCA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 h1:0NIXxOCFx+SKbhCVxwl3ETG8ClLPAa0KuKV6p3yhxP8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0/go.mod h1:ChZSJbbfbl/DcRZNc9Gqh6DYGlfjw4PvO1pEOZH1ZsE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0 h1:k6KdfZk72tVW/QVZf60xlDziDvYAePj5QHwoQvrB2m8= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0/go.mod h1:5Y3ZJLqzi/x/kYtrSrPSx7TFI/SGsL7q2kME027tH6I= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0 h1:T0Ec2E+3YZf5bgTNQVet8iTDW7oIk03tXHq+wkwIDnE= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0/go.mod h1:30v2gqH+vYGJsesLWFov8u47EpYTcIQcBjKpI6pJThg= -go.opentelemetry.io/otel/log v0.11.0 h1:c24Hrlk5WJ8JWcwbQxdBqxZdOK7PcP/LFtOtwpDTe3Y= -go.opentelemetry.io/otel/log v0.11.0/go.mod h1:U/sxQ83FPmT29trrifhQg+Zj2lo1/IPN1PF6RTFqdwc= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/log v0.11.0 h1:7bAOpjpGglWhdEzP8z0VXc4jObOiDEwr3IYbhBnjk2c= -go.opentelemetry.io/otel/sdk/log v0.11.0/go.mod h1:dndLTxZbwBstZoqsJB3kGsRPkpAgaJrWfQg3lhlHFFY= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/collector v0.129.0 h1:9RIJkrkJHWisk7xSIl7T3Vzrn29iAxRiRboSzhO7VFc= +go.opentelemetry.io/collector v0.129.0/go.mod h1:xK+smJWmW4NKMjLAe5/nNIhnZji0T8B0QXKTMz79YPY= +go.opentelemetry.io/collector/client v1.35.0 h1:0nLRdQKFpxGZp5XkYZoZwIc03+cBqzA8lIakxnQSGwE= +go.opentelemetry.io/collector/client v1.35.0/go.mod h1:hFg+6sGvwIvz8mR8zhSHGTRrP6JUIPdc//ROrww1D9U= +go.opentelemetry.io/collector/component v1.35.0 h1:JpvBukEcEUvJ/TInF1KYpXtWEP+C7iYkxCHKjI0o7BQ= +go.opentelemetry.io/collector/component v1.35.0/go.mod h1:hU/ieWPxWbMAacODCSqem5ZaN6QH9W5GWiZ3MtXVuwc= +go.opentelemetry.io/collector/component/componentstatus v0.129.0 h1:ejpBAt7hXAAZiQKcSxLvcy8sj8SjY4HOLdoXIlW6ybw= +go.opentelemetry.io/collector/component/componentstatus v0.129.0/go.mod h1:/dLPIxn/tRMWmGi+DPtuFoBsffOLqPpSZ2IpEQzYtwI= +go.opentelemetry.io/collector/component/componenttest v0.129.0 h1:gpKkZGCRPu3Yn0U2co09bMvhs17yLFb59oV8Gl9mmRI= +go.opentelemetry.io/collector/component/componenttest v0.129.0/go.mod h1:JR9k34Qvd/pap6sYkPr5QqdHpTn66A5lYeYwhenKBAM= +go.opentelemetry.io/collector/config/configauth v0.129.0 h1:utGWTWNr2Udmhft6GeGvKMHaPJAfo//yv7rdBOg2eB8= +go.opentelemetry.io/collector/config/configauth v0.129.0/go.mod h1:nJAWAIT5mj7iw4w/pFa66tV6ChMDPnQd2gQ9V+UtJ7Q= +go.opentelemetry.io/collector/config/configcompression v1.35.0 h1:mc3kg5xNj0+V7uIrKMSXlkIOC0ILFay0XqZyvMZ8gPk= +go.opentelemetry.io/collector/config/configcompression v1.35.0/go.mod h1:QwbNpaOl6Me+wd0EdFuEJg0Cc+WR42HNjJtdq4TwE6w= +go.opentelemetry.io/collector/config/configgrpc v0.129.0 h1:oCo87VEqgi13Xj+5kM3WxSbj4zcjvJyyaKQjYZP+PLM= +go.opentelemetry.io/collector/config/configgrpc v0.129.0/go.mod h1:QnOeQrMyetto03zlciFieZet9DVWVZ4b3cRe125/fjU= +go.opentelemetry.io/collector/config/confighttp v0.129.0 h1:3Q3FuTbujR15gL34tvHnbzOhk3q04SK3+seYV+blbqA= +go.opentelemetry.io/collector/config/confighttp v0.129.0/go.mod h1:x/bHu26G6YPCnELgbL8KZdgcRUi22uIoGRC0x4nMJFg= +go.opentelemetry.io/collector/config/configmiddleware v0.129.0 h1:ILDUqd/krni++HsZtXSheHguxKm3IGI+gBiSCDk/1mk= +go.opentelemetry.io/collector/config/configmiddleware v0.129.0/go.mod h1:jp4nK4r6duZhXlVCL/Nop8sU9jYUIt5IdjW+bcyTBoQ= +go.opentelemetry.io/collector/config/confignet v1.35.0 h1:H76z4c2z+X4gbtYH7+hE2peF7HcP0fyNq2cFSLmBG2U= +go.opentelemetry.io/collector/config/confignet v1.35.0/go.mod h1:HgpLwdRLzPTwbjpUXR0Wdt6pAHuYzaIr8t4yECKrEvo= +go.opentelemetry.io/collector/config/configopaque v1.35.0 h1:icetANbNljFgvLyJzf2paWQnsVa/KoUzoRbfHU+f0KU= +go.opentelemetry.io/collector/config/configopaque v1.35.0/go.mod h1:rw0/X78O8cOk0dhACqNbdiKk1PF7z7mwq9wgSpWoqgs= +go.opentelemetry.io/collector/config/configretry v1.35.0 h1:RVgIDmhcDqxF3U1vw+Klk4wI5Xu2Pj80jvMwU30ku+M= +go.opentelemetry.io/collector/config/configretry v1.35.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ= +go.opentelemetry.io/collector/config/configtelemetry v0.129.0 h1:91m/gtGUTyXN4PCI0uK/mPf1J0mWytk33u85YS3a9AU= +go.opentelemetry.io/collector/config/configtelemetry v0.129.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA= +go.opentelemetry.io/collector/config/configtls v1.35.0 h1:MaZrtIW4Bq87dz41shLMpyUjVuFBStBAoJA2RX+IUbg= +go.opentelemetry.io/collector/config/configtls v1.35.0/go.mod h1:twLYBQkeB4r1EpGoDGiyOj6CVpxyTX9qCji/hRs75EE= +go.opentelemetry.io/collector/confmap v1.35.0 h1:U4JDATAl4PrKWe9bGHbZkoQXmJXefWgR2DIkFvw8ULQ= +go.opentelemetry.io/collector/confmap v1.35.0/go.mod h1:qX37ExVBa+WU4jWWJCZc7IJ+uBjb58/9oL+/ctF1Bt0= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.35.0 h1:oDLfFfA+a59DEwsEejt6ikOu0VI2M3QVn60jRUZcqjY= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.35.0/go.mod h1:rux84f9ykZ2jmuFF6h/MODMjRNcHVKYFY5Y1uBcp9WM= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0 h1:6Z3uy4wlLXOeCWt265ekPZPglB2Eh9t9vD1NWCrWDn8= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0/go.mod h1:kcCOECduHBpJQjFlze1XZdc+dR8qzHmKPkMrlfkXlMw= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.35.0 h1:ISxrkHXQWlxLdifbn3/XciydQeWFEMygPr0oqeZpN0I= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.35.0/go.mod h1:jmIxi1X2uD4lq4vJ30lmdQgiYs7UaiyzXr/86FX1b1E= +go.opentelemetry.io/collector/confmap/xconfmap v0.129.0 h1:Q/+pJKrkCaMPSoSAH2BpC3UZCh+5hTiFkh/bdy5yChk= +go.opentelemetry.io/collector/confmap/xconfmap v0.129.0/go.mod h1:RNMnlay2meJDXcKjxiLbST9/YAhKLJlj0kZCrJrLGgw= +go.opentelemetry.io/collector/connector v0.129.0 h1:z5PLMTE0sGV3t+AbibIbSZsh4CS9YErLhNqirxa92Pk= +go.opentelemetry.io/collector/connector v0.129.0/go.mod h1:DUYCv0jbJhNiR+/Bloa6TXkn2910LSWn4R+aQSxjUps= +go.opentelemetry.io/collector/connector/connectortest v0.129.0 h1:zbiXswz2A8Kx9A7ag2z/rZ4H9IBCvJiinPpGOmYL0O4= +go.opentelemetry.io/collector/connector/connectortest v0.129.0/go.mod h1:5vuW7keNPNobSTWv1D1l4B1xiAd42RnS4cWhwTj1Vqk= +go.opentelemetry.io/collector/connector/xconnector v0.129.0 h1:bPQuaEwLOHtocoWfUeIa4skRrfIgO2PGPf4Zn8rGyiQ= +go.opentelemetry.io/collector/connector/xconnector v0.129.0/go.mod h1:N4AxnF2sqjSdMZWqf0fap2kAuFuyubh04IsKvzfr6lw= +go.opentelemetry.io/collector/consumer v1.35.0 h1:mgS42yh1maXBIE65IT4//iOA89BE+7xSUzV8czyevHg= +go.opentelemetry.io/collector/consumer v1.35.0/go.mod h1:9sSPX0hDHaHqzR2uSmfLOuFK9v3e9K3HRQ+fydAjOWs= +go.opentelemetry.io/collector/consumer/consumererror v0.129.0 h1:ud92OBWwqQlHjjx9cB48XhXU/Lz5QSAnXUAErsNHHME= +go.opentelemetry.io/collector/consumer/consumererror v0.129.0/go.mod h1:wtg7mcOkncUO/oZQUfHYoTPiVgMT4yrEKeskFv9dUJg= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.129.0 h1:pz6Xzaf0hWUhPtQQZXNkUubSfCpoeq92IzX2QPV3880= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.129.0/go.mod h1:YUFtf7/GmfR4C7kBvMIU9rcclz5oL2lDS/i229ca4EU= +go.opentelemetry.io/collector/consumer/consumertest v0.129.0 h1:kRmrAgVvPxH5c/rTaOYAzyy0YrrYhQpBNkuqtDRrgeU= +go.opentelemetry.io/collector/consumer/consumertest v0.129.0/go.mod h1:JgJKms1+v/CuAjkPH+ceTnKeDgUUGTQV4snGu5wTEHY= +go.opentelemetry.io/collector/consumer/xconsumer v0.129.0 h1:bRyJ9TGWwnrUnB5oQGTjPhxpVRbkIVeugmvks22bJ4A= +go.opentelemetry.io/collector/consumer/xconsumer v0.129.0/go.mod h1:pbe5ZyPJrtzdt/RRI0LqfT1GVBiJLbtkDKx3SBRTiTY= +go.opentelemetry.io/collector/exporter v0.129.0 h1:HsJ0Q/CkwgWmkXv/nNjgwXY4Dc5ibQsHLvcqscUhMns= +go.opentelemetry.io/collector/exporter v0.129.0/go.mod h1:lIRe4Vo5kyOWUkwSB+2J15Jhl/io964x+MhpV5tJaOY= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.129.0 h1:Wricx4p/QQSzooRmIscwH0ta5zrc+NF0uWwx4NUdU8s= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.129.0/go.mod h1:PbiLvdwaXrClDfhh2WvR39v1YdOvbsTLj0amYe6VXz0= +go.opentelemetry.io/collector/exporter/exportertest v0.129.0 h1:HGS5KgbKwvLrtR972ejTSJgE7iPp0+d1fRcCznf3CVA= +go.opentelemetry.io/collector/exporter/exportertest v0.129.0/go.mod h1:ngH3IeEUNGVO8skhOYhQK56j3e81gRZmgT2qH5iHipA= +go.opentelemetry.io/collector/exporter/otlpexporter v0.129.0 h1:CFUnUA38pQfX2wg7Zr0e5CKma6y0yXgjKpabdEkbZZE= +go.opentelemetry.io/collector/exporter/otlpexporter v0.129.0/go.mod h1:o1wdz9iJJVGVg6zSUmqmT4gBxXtUhrzENH7v66891Ho= +go.opentelemetry.io/collector/exporter/xexporter v0.129.0 h1:BQeQFnvtqv8g0zYBoWimIRX5W9WgiCFo3MSYYBjgbyM= +go.opentelemetry.io/collector/exporter/xexporter v0.129.0/go.mod h1:uoZG9n5maYged7BUIeUYRKANgDgJBnd930u90GHtU0Y= +go.opentelemetry.io/collector/extension v1.35.0 h1:MBnBq5HiXbj+HGCGoqRYPK4tp5cC5+7L9bhiO59T/3k= +go.opentelemetry.io/collector/extension v1.35.0/go.mod h1:Ry/QgkfYUfcQEK96t4d/oi4A7+v56T7wZMyPgnZtEco= +go.opentelemetry.io/collector/extension/extensionauth v1.35.0 h1:dw/G8RdS2x2jbap52TOVpb0NHIGKLTo0iuk69T2NaJg= +go.opentelemetry.io/collector/extension/extensionauth v1.35.0/go.mod h1:bjGAFwd0pjtPbevALtgazGWfHAoOzGr+e/oP5NjAGv4= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.129.0 h1:JFm1T3rxtSmWwG3oltSaZpDrS7KF8AU1efvW2g/0dy8= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.129.0/go.mod h1:So7bI+k8rtVVTosMHoRMKq0+amTg9D6TY/i73sIhhrk= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0 h1:dkE/8H6Ik+2VTpAzwanTe+EzpeqhDNdPTVO4NWIuEPA= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0/go.mod h1:V/Kdpr3nrKru8YrhH8950ac2gfQonifINiddUUmn+g8= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0 h1:04blWaKcbloymwhG8Y3IEJEHlvtDmxgJi0iFchbWOxw= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0/go.mod h1:xc1VLLUebuxPAdKCDopohorTZifokuwFfdvPINmx/GQ= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.129.0 h1:V85S9H4UnhPWEmSewFx0L25+XKXZbNUnQHdjT0YAMRY= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.129.0/go.mod h1:1sWR6V3xQt+9wsc4vW/lM9zn0YmpJH4o/tLBWQFnAxg= +go.opentelemetry.io/collector/extension/extensiontest v0.129.0 h1:YYXwF3rE9/4py+BD/GPUs2k/7e9WwJSDh47L2ljyxMk= +go.opentelemetry.io/collector/extension/extensiontest v0.129.0/go.mod h1:r1aMvxZLlHub1/28ABW/EM88YFP0AW0B+KrB/yxXlHc= +go.opentelemetry.io/collector/extension/xextension v0.129.0 h1:I9Mj+zJDpHVTonZOr7D9wcf94fENPohtt8TBvDCWOTg= +go.opentelemetry.io/collector/extension/xextension v0.129.0/go.mod h1:kdroFrrmIrV3Usm0RTOHXhWoGohdFwsvGWRirJUJYpw= +go.opentelemetry.io/collector/extension/zpagesextension v0.129.0 h1:vmvvh4QoHrjfzcPyHi3cfahJ6GfY1xfaDE5oVtE5Iq8= +go.opentelemetry.io/collector/extension/zpagesextension v0.129.0/go.mod h1:pqA6D+7/KLoq4VkcSYZzzH6/Qwfugkove48SRsY5dQ4= +go.opentelemetry.io/collector/featuregate v1.35.0 h1:c/XRtA35odgxVc4VgOF/PTIk7ajw1wYdQ6QI562gzd4= +go.opentelemetry.io/collector/featuregate v1.35.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0 h1:fx3c7NRDSnvHj6OLFeZPWqCM82RFcAqAKrmM9dCSoiI= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0/go.mod h1:ExshKbDe5u7PdIzWEvrbMXTW9YQUXCCwE7VMjzNmlU4= +go.opentelemetry.io/collector/internal/telemetry v0.129.0 h1:jkzRpIyMxMGdAzVOcBe8aRNrbP7eUrMq6cxEHe0sbzA= +go.opentelemetry.io/collector/internal/telemetry v0.129.0/go.mod h1:riAPlR2LZBV7VEx4LicOKebg3N1Ja3izzkv5fl1Lhiw= +go.opentelemetry.io/collector/otelcol v0.129.0 h1:c9tyaphcIoStM2vcAOqvtpKewN6jNkajlaDXbFrmn7Y= +go.opentelemetry.io/collector/otelcol v0.129.0/go.mod h1:zmV3C/z6TdwGUoJOxAUiDuZRLmv89XHfudklz4V3NL4= +go.opentelemetry.io/collector/pdata v1.35.0 h1:ck6WO6hCNjepADY/p9sT9/rLECTLO5ukYTumKzsqB/E= +go.opentelemetry.io/collector/pdata v1.35.0/go.mod h1:pttpb089864qG1k0DMeXLgwwTFLk+o3fAW9I6MF9tzw= +go.opentelemetry.io/collector/pdata/pprofile v0.129.0 h1:DgZTvjOGmyZRx7Or80hz8XbEaGwHPkIh2SX1A5eXttQ= +go.opentelemetry.io/collector/pdata/pprofile v0.129.0/go.mod h1:uUBZxqJNOk6QIMvbx30qom//uD4hXJ1K/l3qysijMLE= +go.opentelemetry.io/collector/pdata/testdata v0.129.0 h1:n1QLnLOtrcAR57oMSVzmtPsQEpCc/nE5Avk1xfuAkjY= +go.opentelemetry.io/collector/pdata/testdata v0.129.0/go.mod h1:RfY5IKpmcvkS2IGVjl9jG9fcT7xpQEBWpg9sQOn/7mY= +go.opentelemetry.io/collector/pdata/xpdata v0.129.0 h1:adn3OSRQ8fVHMpAoPXCzwV4yygvBskgWzKShfZdbJcw= +go.opentelemetry.io/collector/pdata/xpdata v0.129.0/go.mod h1:J5v/SAmqBo06PthOhfi6dFBOm64z07DdAUn1Sih02TA= +go.opentelemetry.io/collector/pipeline v0.129.0 h1:Mp7RuKLizLQJ0381eJqKQ0zpgkFlhTE9cHidpJQIvMU= +go.opentelemetry.io/collector/pipeline v0.129.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4= +go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0 h1:JDLSoGiUg4JgahMqHXj5TwoZdLsqU/iDG1cGLcMiBeY= +go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0/go.mod h1:qDjE/5uvKmXRHaDzy7yMo/VwSm4njtRWzACTjf5CVjg= +go.opentelemetry.io/collector/processor v1.35.0 h1:YOfHemhhodYn4BnPjN7kWYYDhzPVqRkyHCaQ8mAlavs= +go.opentelemetry.io/collector/processor v1.35.0/go.mod h1:cWHDOpmpAaVNCc9K9j2/okZoLIuP/EpGGRNhM4JGmFM= +go.opentelemetry.io/collector/processor/batchprocessor v0.129.0 h1:eVsu5PpK7OAqYE49uywEV+gtjoOd1GtADKz4va9LUDo= +go.opentelemetry.io/collector/processor/batchprocessor v0.129.0/go.mod h1:V2m/F0zMEAjtKIiuBMhaJ/lxwI8Bv8rVpuL4rbIC36k= +go.opentelemetry.io/collector/processor/processorhelper v0.129.0 h1:/B2UJ7wOc5oJlQBnzwXjqnhFJOidHbdGmFfWyhi1Iyg= +go.opentelemetry.io/collector/processor/processorhelper v0.129.0/go.mod h1:tZXfmQgvpIE/gxLS9tjX82/EBzWt+xNIE0lUmgZzZlk= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.129.0 h1:nd3HNVPKOElqYh9atHDy4pLWB1sr7MnvtOxkce+DdD0= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.129.0/go.mod h1:oSVxVjhARkNU3K2Yp0K13CPZdTDSajucOifk3ur8MbY= +go.opentelemetry.io/collector/processor/processortest v0.129.0 h1:r5iJHdS7Ffdb2zmMVYx4ahe92PLrce5cas/AJEXivkY= +go.opentelemetry.io/collector/processor/processortest v0.129.0/go.mod h1:gdf8GzyzjGoDTA11+CPwC4jfXphtC+B7MWbWn+LIWXc= +go.opentelemetry.io/collector/processor/xprocessor v0.129.0 h1:V3Zgd+YIeu3Ij3DPlGtzdcTwpqOQIqQVcL5jdHHS7sc= +go.opentelemetry.io/collector/processor/xprocessor v0.129.0/go.mod h1:78T+AP5NO137W/E+SibQhaqOyS67fR+IN697b4JFh00= +go.opentelemetry.io/collector/receiver v1.35.0 h1:JOLa0cHLi6cKU+qsBWXkAWLnd5MoHdh8GaUJ97jWguY= +go.opentelemetry.io/collector/receiver v1.35.0/go.mod h1:y1y8DNoP54RsiucXP/qeRuCErBLc1gyvFjO+GIIn91s= +go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0 h1:zBo8oqHqbNapEYZjGdwiyF7crndtt/DIzw/MfBaBzCc= +go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0/go.mod h1:4Le74/C0ErWozM+Pdq2ZNz0OjEMYGG+BFApHHuI4h1k= +go.opentelemetry.io/collector/receiver/receivertest v0.129.0 h1:abzNSUJXrtPwRqDM1R+BWs0uzYN2g7YZa7t6nyeLu3s= +go.opentelemetry.io/collector/receiver/receivertest v0.129.0/go.mod h1:hcn7bZ0gfcQYW00GKfEbhwVDsPhOAKALtxK67dywjYA= +go.opentelemetry.io/collector/receiver/xreceiver v0.129.0 h1:jQSsDPLbnX8tWDNz0a495ACoA4vVe/FlPEIftPdVtmU= +go.opentelemetry.io/collector/receiver/xreceiver v0.129.0/go.mod h1:5vzmNL4Mv2q3xlvw2ypg1d1WWWut9i5bUcphXNbQNN4= +go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 h1:XCN7qkZRNzRYfn6chsMZkbFZxoFcW6fZIsZs2aCzcbc= +go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= +go.opentelemetry.io/collector/service v0.129.0 h1:iauNP1MwcEdSmBW6ls30itxszV8biZRClJyO62B1KCo= +go.opentelemetry.io/collector/service v0.129.0/go.mod h1:U5ulge2o/5Mvoubp0BMU7+xC7SUfw0fpXyPSDbCPAtc= +go.opentelemetry.io/collector/service/hostcapabilities v0.129.0 h1:XYrwQJ8PnO+uMoc6804sm2bZfVB3pNC0G0e2O99oq3Y= +go.opentelemetry.io/collector/service/hostcapabilities v0.129.0/go.mod h1:GArFdsQM1rx56IiYGwOaXE25J3MBoO6JcA3m1xTf2LU= +go.opentelemetry.io/contrib/bridges/otelzap v0.11.0 h1:u2E32P7j1a/gRgZDWhIXC+Shd4rLg70mnE7QLI/Ssnw= +go.opentelemetry.io/contrib/bridges/otelzap v0.11.0/go.mod h1:pJPCLM8gzX4ASqLlyAXjHBEYxgbOQJ/9bidWxD6PEPQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 h1:0tY123n7CdWMem7MOVdKOt0YfshufLCwfE5Bob+hQuM= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0/go.mod h1:CosX/aS4eHnG9D7nESYpV753l4j9q5j3SL/PUYd2lR8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/contrib/otelconf v0.16.0 h1:mTYGRlZtpc/zDaTaUQSnsZ1hyoRONaS4Od/Ny5++lhE= +go.opentelemetry.io/contrib/otelconf v0.16.0/go.mod h1:gnsljuyDyVDg39vUvXKj0BVCiVaokN3b8N5BL/ab8fQ= +go.opentelemetry.io/contrib/propagators/b3 v1.36.0 h1:xrAb/G80z/l5JL6XlmUMSD1i6W8vXkWrLfmkD3w/zZo= +go.opentelemetry.io/contrib/propagators/b3 v1.36.0/go.mod h1:UREJtqioFu5awNaCR8aEx7MfJROFlAWb6lPaJFbHaG0= +go.opentelemetry.io/contrib/zpages v0.61.0 h1:tYvUj377Dn3k1wf1le/f8YWSNQ8k0byS3jK8PiIXu9Y= +go.opentelemetry.io/contrib/zpages v0.61.0/go.mod h1:MFNPHMJOGA1P6m5501ANjOJDp4A9BUQja1Y53CDL8LQ= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 h1:06ZeJRe5BnYXceSM9Vya83XXVaNGe3H1QqsvqRANQq8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2/go.mod h1:DvPtKE63knkDVP88qpatBj81JxN+w1bqfVbsbCbj1WY= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 h1:tPLwQlXbJ8NSOfZc4OkgU5h2A38M4c9kfHSVc4PFQGs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2/go.mod h1:QTnxBwT/1rBIgAG1goq6xMydfYOBKU6KTiYF4fp5zL8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 h1:zwdo1gS2eH26Rg+CoqVQpEK1h8gvt5qyU5Kk5Bixvow= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0/go.mod h1:rUKCPscaRWWcqGT6HnEmYrK+YNe5+Sw64xgQTOJ5b30= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 h1:gAU726w9J8fwr4qRDqu1GYMNNs4gXrU+Pv20/N1UpB4= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0/go.mod h1:RboSDkp7N292rgu+T0MgVt2qgFGu6qa1RpZDOtpL76w= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ= +go.opentelemetry.io/otel/exporters/prometheus v0.58.0 h1:CJAxWKFIqdBennqxJyOgnt5LqkeFRT+Mz3Yjz3hL+h8= +go.opentelemetry.io/otel/exporters/prometheus v0.58.0/go.mod h1:7qo/4CLI+zYSNbv0GMNquzuss2FVZo3OYrGh96n4HNc= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2 h1:12vMqzLLNZtXuXbJhSENRg+Vvx+ynNilV8twBLBsXMY= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2/go.mod h1:ZccPZoPOoq8x3Trik/fCsba7DEYDUnN6yX79pgp2BUQ= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 h1:G8Xec/SgZQricwWBJF/mHZc7A02YHedfFDENwJEdRA0= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0/go.mod h1:PD57idA/AiFD5aqoxGxCvT/ILJPeHy3MjqU/NS7KogY= +go.opentelemetry.io/otel/log v0.12.2 h1:yob9JVHn2ZY24byZeaXpTVoPS6l+UrrxmxmPKohXTwc= +go.opentelemetry.io/otel/log v0.12.2/go.mod h1:ShIItIxSYxufUMt+1H5a2wbckGli3/iCfuEbVZi/98E= +go.opentelemetry.io/otel/log/logtest v0.0.0-20250526142609-aa5bd0e64989 h1:4JF7oY9CcHrPGfBLijDcXZyCzGckVEyOjuat5ktmQRg= +go.opentelemetry.io/otel/log/logtest v0.0.0-20250526142609-aa5bd0e64989/go.mod h1:NToOxLDCS1tXDSB2dIj44H9xGPOpKr0csIN+gnuihv4= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/log v0.12.2 h1:yNoETvTByVKi7wHvYS6HMcZrN5hFLD7I++1xIZ/k6W0= +go.opentelemetry.io/otel/sdk/log v0.12.2/go.mod h1:DcpdmUXHJgSqN/dh+XMWa7Vf89u9ap0/AAk/XGLnEzY= +go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc h1:uqxdywfHqqCl6LmZzI3pUnXT1RGFYyUgxj0AkWPFxi0= +go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc/go.mod h1:TY/N/FT7dmFrP/r5ym3g0yysP1DefqGpAZr4f82P0dE= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -778,10 +791,10 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= 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= @@ -789,8 +802,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -807,10 +820,10 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -823,8 +836,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -885,8 +898,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -898,22 +911,22 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= 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= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.226.0 h1:9A29y1XUD+YRXfnHkO66KggxHBZWg9LsTGqm7TkUvtQ= -google.golang.org/api v0.226.0/go.mod h1:WP/0Xm4LVvMOCldfvOISnWquSRWbG2kArDZcg+W2DbY= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/api v0.230.0 h1:2u1hni3E+UXAXrONrrkfWpi/V6cyKVAbfGVeGtC3OxM= +google.golang.org/api v0.230.0/go.mod h1:aqvtoMk7YkiXx+6U12arQFExiRV9D/ekvMCwCd/TksQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -939,21 +952,21 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -k8s.io/api v0.31.3 h1:umzm5o8lFbdN/hIXbrK9oRpOproJO62CV1zqxXrLgk8= -k8s.io/api v0.31.3/go.mod h1:UJrkIp9pnMOI9K2nlL6vwpxRzzEX5sWgn8kGQe92kCE= -k8s.io/apimachinery v0.31.3 h1:6l0WhcYgasZ/wk9ktLq5vLaoXJJr5ts6lkaQzgeYPq4= -k8s.io/apimachinery v0.31.3/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -k8s.io/client-go v0.31.3 h1:CAlZuM+PH2cm+86LOBemaJI/lQ5linJ6UFxKX/SoG+4= -k8s.io/client-go v0.31.3/go.mod h1:2CgjPUTpv3fE5dNygAr2NcM8nhHzXvxB8KL5gYc3kJs= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -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-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -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= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/otelcollector/opentelemetry-collector-builder/main.go b/otelcollector/opentelemetry-collector-builder/main.go index 9faf68620..b32e9b355 100644 --- a/otelcollector/opentelemetry-collector-builder/main.go +++ b/otelcollector/opentelemetry-collector-builder/main.go @@ -14,7 +14,7 @@ func main() { info := component.BuildInfo{ Command: "custom-collector-distro", Description: "Custom OpenTelemetry Collector distribution", - Version: "0.127.0", + Version: "0.129.0", } set := otelcol.CollectorSettings{ diff --git a/otelcollector/otel-allocator/README.md b/otelcollector/otel-allocator/README.md index adcb5d40e..3655d874e 100644 --- a/otelcollector/otel-allocator/README.md +++ b/otelcollector/otel-allocator/README.md @@ -11,6 +11,26 @@ The TA serves two functions: * Even distribution of Prometheus targets among a pool of Collectors * Discovery of Prometheus Custom Resources +## Configuration + +The Target Allocator uses a configuration file (by default under `/conf/targetallocator.yaml`). It accepts the following elements: + +| Name | Description | Default Value | Environment variable | +|------------------------------------|-------------------------------------------------------------------------------|-----------------------------------------------|----------------------| +| `collector_namespace` (required) | Namespace to watch for collector deployments for job assignments | | `OTELCOL_NAMESPACE` | +| `collector_selector` | Kubernetes selector to select collectors for job assignments | | | +| `listen_addr` | Endpoint on which the target allocator exposes job definitions for collectors | `:8080` or `:8443` if `https` is set to true | | +| `kube_config_file_path` | Path to the file on the pod containing the Kube config. | "~/.kube/config" | `KUBECONFIG` | +| `config` | Prometheus configuration block | | | +| `allocation_strategy` | Allocation strategy to apply to job assignments | `consistent-hashing` | | +| `allocation_fallback_strategy` | Fallback allocation strategy for job assignments | | | +| `filter_strategy` | Filter strategy to apply to metrics | `relabel-config` | | +| `prometheus_cr` | Whether to watch Prometheus Custom Resources | | | +| `https` | Whether to expose the target allocator endpoint over https | | | +| `collector_not_ready_grace_period` | Wait time before assigning jobs to a new collector. | 30s | | + +Additional configuration options are present under [./internal/config/config.go](./internal/config/config.go). + ## Even Distribution of Prometheus Targets The Target Allocator’s first job is to discover targets to scrape and OTel Collectors to allocate targets to. Then it can distribute the targets it discovers among the Collectors. The Collectors in turn query the Target Allocator for Metrics endpoints to scrape, and then the Collectors’ [Prometheus Receivers](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/README.md) scrape the Metrics targets. diff --git a/otelcollector/otel-allocator/benchmark_test.go b/otelcollector/otel-allocator/benchmark_test.go index f39f60dfc..0b1b21f6a 100644 --- a/otelcollector/otel-allocator/benchmark_test.go +++ b/otelcollector/otel-allocator/benchmark_test.go @@ -6,7 +6,6 @@ package main import ( "context" "fmt" - "os" "strconv" "strings" "testing" @@ -41,7 +40,8 @@ func BenchmarkProcessTargets(b *testing.B) { tsets := prepareBenchmarkData(numTargets, targetsPerGroup, groupsPerJob) for _, strategy := range allocation.GetRegisteredAllocatorNames() { b.Run(fmt.Sprintf("%s/%d", strategy, numTargets), func(b *testing.B) { - targetDiscoverer := createTestDiscoverer(strategy, map[string][]*relabel.Config{}) + targetDiscoverer, err := createTestDiscoverer(strategy, map[string][]*relabel.Config{}) + require.NoError(b, err) targetDiscoverer.UpdateTsets(tsets) b.ResetTimer() for i := 0; i < b.N; i++ { @@ -82,7 +82,8 @@ func BenchmarkProcessTargetsWithRelabelConfig(b *testing.B) { for _, strategy := range allocation.GetRegisteredAllocatorNames() { b.Run(fmt.Sprintf("%s/%d", strategy, numTargets), func(b *testing.B) { - targetDiscoverer := createTestDiscoverer(strategy, prehookConfig) + targetDiscoverer, err := createTestDiscoverer(strategy, prehookConfig) + require.NoError(b, err) targetDiscoverer.UpdateTsets(tsets) b.ResetTimer() for i := 0; i < b.N; i++ { @@ -167,21 +168,26 @@ func prepareBenchmarkData(numTargets, targetsPerGroup, groupsPerJob int) map[str return tsets } -func createTestDiscoverer(allocationStrategy string, prehookConfig map[string][]*relabel.Config) *target.Discoverer { +func createTestDiscoverer(allocationStrategy string, prehookConfig map[string][]*relabel.Config) (*target.Discoverer, error) { ctx := context.Background() logger := ctrl.Log.WithName(fmt.Sprintf("bench-%s", allocationStrategy)) ctrl.SetLogger(logr.New(log.NullLogSink{})) allocatorPrehook := prehook.New("relabel-config", logger) allocatorPrehook.SetConfig(prehookConfig) allocator, err := allocation.New(allocationStrategy, logger, allocation.WithFilter(allocatorPrehook)) - srv := server.NewServer(logger, allocator, "localhost:0") if err != nil { - setupLog.Error(err, "Unable to initialize allocation strategy") - os.Exit(1) + return nil, err + } + srv, err := server.NewServer(logger, allocator, "localhost:0") + if err != nil { + return nil, err } registry := prometheus.NewRegistry() sdMetrics, _ := discovery.CreateAndRegisterSDMetrics(registry) discoveryManager := discovery.NewManager(ctx, config.NopLogger, registry, sdMetrics) - targetDiscoverer := target.NewDiscoverer(logger, discoveryManager, allocatorPrehook, srv, allocator.SetTargets) - return targetDiscoverer + targetDiscoverer, err := target.NewDiscoverer(logger, discoveryManager, allocatorPrehook, srv, allocator.SetTargets) + if err != nil { + return nil, err + } + return targetDiscoverer, nil } diff --git a/otelcollector/otel-allocator/go.mod b/otelcollector/otel-allocator/go.mod index 809940610..954823d74 100644 --- a/otelcollector/otel-allocator/go.mod +++ b/otelcollector/otel-allocator/go.mod @@ -6,20 +6,15 @@ toolchain go1.24.1 retract v1.51.0 -// pointing to this fork for prometheus-operator since we need fixes for asset store which is only available from v0.84.0 of prometheus-operator -// targetallocator cannot upgrade to v0.84.0 because of this issue - https://github.com/open-telemetry/opentelemetry-operator/issues/4196 -// this commit is from this repository -https://github.com/rashmichandrashekar/prometheus-operator/tree/rashmi/v0.81.0-patch-assetstore - which only has the asset store fixes on top of v0.81.0 of prometheus-operator -replace github.com/prometheus-operator/prometheus-operator => github.com/rashmichandrashekar/prometheus-operator v0.0.0-20250715221118-b55ea6d3c138 - require ( github.com/blang/semver/v4 v4.0.0 github.com/buraksezer/consistent v0.10.0 github.com/cespare/xxhash/v2 v2.3.0 github.com/ghodss/yaml v1.0.0 - github.com/gin-gonic/gin v1.10.0 + github.com/gin-gonic/gin v1.10.1 github.com/go-kit/log v0.2.1 // indirect - github.com/go-logr/logr v1.4.2 - github.com/go-viper/mapstructure/v2 v2.2.1 + github.com/go-logr/logr v1.4.3 + github.com/go-viper/mapstructure/v2 v2.3.0 github.com/google/uuid v1.6.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -28,12 +23,15 @@ require ( github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0 github.com/prometheus-operator/prometheus-operator/pkg/client v0.81.0 github.com/prometheus/client_golang v1.22.0 - github.com/prometheus/common v0.64.0 + github.com/prometheus/common v0.65.0 github.com/prometheus/prometheus v0.301.0 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 + go.opentelemetry.io/otel/exporters/prometheus v0.59.0 + go.opentelemetry.io/otel/metric v1.37.0 + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.37.0 go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 gopkg.in/yaml.v2 v2.4.0 @@ -70,7 +68,7 @@ require ( github.com/bytedance/sonic/loader v0.1.1 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect - github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dennwc/varint v1.0.0 // indirect github.com/digitalocean/godo v1.132.0 // indirect @@ -122,6 +120,7 @@ require ( github.com/gophercloud/gophercloud v1.14.1 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect github.com/hashicorp/consul/api v1.30.0 // indirect github.com/hashicorp/cronexpr v1.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -179,27 +178,27 @@ require ( github.com/x448/float16 v0.8.4 // indirect go.mongodb.org/mongo-driver v1.17.2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.opentelemetry.io/proto/otlp v1.6.0 // indirect - go.uber.org/atomic v1.11.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.uber.org/atomic v1.11.0 golang.org/x/arch v0.8.0 // indirect - golang.org/x/crypto v0.38.0 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.24.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.14.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.9.0 // indirect - golang.org/x/tools v0.31.0 // indirect + golang.org/x/tools v0.33.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/api v0.213.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/grpc v1.72.1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -209,7 +208,9 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect ) -require github.com/goccy/go-yaml v1.17.1 +require gotest.tools/v3 v3.5.2 + +require github.com/goccy/go-yaml v1.18.0 require ( github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect @@ -219,5 +220,5 @@ require ( github.com/onsi/ginkgo/v2 v2.23.4 // indirect github.com/onsi/gomega v1.37.0 // indirect github.com/prometheus/sigv4 v0.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 // indirect ) diff --git a/otelcollector/otel-allocator/go.sum b/otelcollector/otel-allocator/go.sum index 8ac7caba6..b78079f4f 100644 --- a/otelcollector/otel-allocator/go.sum +++ b/otelcollector/otel-allocator/go.sum @@ -63,8 +63,8 @@ github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= +github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -74,8 +74,8 @@ github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/ github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -132,8 +132,8 @@ github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= -github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= +github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= @@ -143,8 +143,8 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V 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= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= @@ -182,14 +182,14 @@ github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWa github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I= github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.17.1 h1:LI34wktB2xEE3ONG/2Ar54+/HJVBriAGJ55PHls4YuY= -github.com/goccy/go-yaml v1.17.1/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -234,9 +234,8 @@ github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aN github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 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/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/hashicorp/consul/api v1.30.0 h1:ArHVMMILb1nQv8vZSGIwwQd2gtc+oSQZ6CalyiyH2XQ= github.com/hashicorp/consul/api v1.30.0/go.mod h1:B2uGchvaXVW2JhFoS8nqTxMD5PBykr4ebY4JWHTTeLM= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= @@ -426,6 +425,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus-community/prom-label-proxy v0.11.0 h1:IO02WiiFMfcIqvjhwMbCYnDJiTNcSHBrkCGRQ/7KDd0= github.com/prometheus-community/prom-label-proxy v0.11.0/go.mod h1:lfvrG70XqsxWDrSh1843QXBG0fSg8EbIXmAo8xGsvw8= +github.com/prometheus-operator/prometheus-operator v0.81.0 h1:+3DLFPMKBehPrVDO/WMFnDlb2qJLAVQcjeUmVt1YBuA= +github.com/prometheus-operator/prometheus-operator v0.81.0/go.mod h1:FcXmSKTP+RrJjr8SWz+ww+ijRgboNq4QUXrEYq3Jftw= github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0 h1:mSii7z+TihzdeULnGjLnNikgtDbeViY/wW8s3430rhE= github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0/go.mod h1:YfnEQzw7tUQa0Sjiz8V6QFc6JUGE+i5wybsjc3EOKn8= github.com/prometheus-operator/prometheus-operator/pkg/client v0.81.0 h1:z8ETgiD2hThJi3+3S8eKAbC9/pwPq1kGt8HkeGlDstw= @@ -445,8 +446,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -456,8 +457,6 @@ github.com/prometheus/prometheus v0.301.0 h1:0z8dgegmILivNomCd79RKvVkIols8vBGPKm github.com/prometheus/prometheus v0.301.0/go.mod h1:BJLjWCKNfRfjp7Q48DrAjARnCi7GhfUVvUFEAWTssZM= github.com/prometheus/sigv4 v0.1.0 h1:FgxH+m1qf9dGQ4w8Dd6VkthmpFQfGTzUeavMoQeG1LA= github.com/prometheus/sigv4 v0.1.0/go.mod h1:doosPW9dOitMzYe2I2BN0jZqUuBrGPbXrNsTScN18iU= -github.com/rashmichandrashekar/prometheus-operator v0.0.0-20250715221118-b55ea6d3c138 h1:S5SirW5BPl40JehmZkcayC/iiRP9/o1UHZ3ylUIDD9w= -github.com/rashmichandrashekar/prometheus-operator v0.0.0-20250715221118-b55ea6d3c138/go.mod h1:FcXmSKTP+RrJjr8SWz+ww+ijRgboNq4QUXrEYq3Jftw= github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4= github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= @@ -512,24 +511,26 @@ go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793Sqyh go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ= +go.opentelemetry.io/otel/exporters/prometheus v0.59.0 h1:HHf+wKS6o5++XZhS98wvILrLVgHxjA/AMjqHKes+uzo= +go.opentelemetry.io/otel/exporters/prometheus v0.59.0/go.mod h1:R8GpRXTZrqvXHDEGVH5bF6+JqAZcK8PjJcZ5nGhEWiE= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= @@ -549,14 +550,14 @@ golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= 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.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -567,8 +568,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -577,8 +578,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -615,8 +616,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -624,8 +625,8 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= 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= @@ -634,12 +635,12 @@ gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.213.0 h1:KmF6KaDyFqB417T68tMPbVmmwtIXs2VB60OJKIHB0xQ= google.golang.org/api v0.213.0/go.mod h1:V0T5ZhNUUNpYAlL306gFZPFt5F5D/IeyLoktduYYnvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= diff --git a/otelcollector/otel-allocator/internal/allocation/allocator.go b/otelcollector/otel-allocator/internal/allocation/allocator.go index d4a5a3e39..ebd4ffe75 100644 --- a/otelcollector/otel-allocator/internal/allocation/allocator.go +++ b/otelcollector/otel-allocator/internal/allocation/allocator.go @@ -4,13 +4,17 @@ package allocation import ( + "context" "errors" "runtime" "slices" "sync" + "time" "github.com/go-logr/logr" - "github.com/prometheus/client_golang/prometheus" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/diff" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/target" @@ -25,19 +29,48 @@ import ( var _ Allocator = &allocator{} -func newAllocator(log logr.Logger, strategy Strategy, opts ...Option) Allocator { +func newAllocator(log logr.Logger, strategy Strategy, opts ...Option) (Allocator, error) { + meter := otel.GetMeterProvider().Meter("targetallocator") + // targetsPerCollector records how many targets have been assigned to each collector. + // It is currently the responsibility of the strategy to track this information. + targetsPerCollector, err := meter.Int64Gauge("opentelemetry_allocator_targets_per_collector", metric.WithDescription("The number of targets for each collector.")) + if err != nil { + return nil, err + } + collectorsAllocatable, err := meter.Int64Gauge("opentelemetry_allocator_collectors_allocatable", metric.WithDescription("Number of collectors the allocator is able to allocate to.")) + if err != nil { + return nil, err + } + timeToAssign, err := meter.Float64Histogram("opentelemetry_allocator_time_to_allocate", metric.WithDescription("The time it takes to allocate")) + if err != nil { + return nil, err + } + targetsRemaining, err := meter.Int64Gauge("opentelemetry_allocator_targets_remaining", metric.WithDescription("Number of targets kept after filtering.")) + if err != nil { + return nil, err + } + targetsUnassigned, err := meter.Int64Gauge("opentelemetry_allocator_targets_unassigned", metric.WithDescription("Number of targets that could not be assigned due to missing node label.")) + if err != nil { + return nil, err + } + chAllocator := &allocator{ strategy: strategy, collectors: make(map[string]*Collector), targetItems: make(map[target.ItemHash]*target.Item), targetItemsPerJobPerCollector: make(map[string]map[string]map[target.ItemHash]bool), log: log, + targetsPerCollector: targetsPerCollector, + collectorsAllocatable: collectorsAllocatable, + timeToAssign: timeToAssign, + targetsRemaining: targetsRemaining, + targetsUnassigned: targetsUnassigned, } for _, opt := range opts { opt(chAllocator) } - return chAllocator + return chAllocator, nil } type allocator struct { @@ -59,7 +92,12 @@ type allocator struct { log logr.Logger - filter Filter + filter Filter + targetsPerCollector metric.Int64Gauge + collectorsAllocatable metric.Int64Gauge + timeToAssign metric.Float64Histogram + targetsRemaining metric.Int64Gauge + targetsUnassigned metric.Int64Gauge } // SetFilter sets the filtering hook to use. @@ -76,13 +114,16 @@ func (a *allocator) SetFallbackStrategy(strategy Strategy) { // load balancing decisions. This method should be called when there are // new targets discovered or existing targets are shutdown. func (a *allocator) SetTargets(targets []*target.Item) { - timer := prometheus.NewTimer(TimeToAssign.WithLabelValues("SetTargets", a.strategy.GetName())) - defer timer.ObserveDuration() + begin := time.Now() + defer func() { + a.timeToAssign.Record(context.Background(), time.Since(begin).Seconds(), metric.WithAttributes(attribute.String("method", "SetTargets"), attribute.String("strategy", a.strategy.GetName()))) + }() if a.filter != nil { targets = a.filter.Apply(targets) } - RecordTargetsKept(targets) + + a.targetsRemaining.Record(context.Background(), int64(len(targets))) concurrency := runtime.NumCPU() * 2 // determined experimentally targetMap := buildTargetMap(targets, concurrency) @@ -100,10 +141,12 @@ func (a *allocator) SetTargets(targets []*target.Item) { // SetCollectors sets the set of collectors with key=collectorName, value=Collector object. // This method is called when Collectors are added or removed. func (a *allocator) SetCollectors(collectors map[string]*Collector) { - timer := prometheus.NewTimer(TimeToAssign.WithLabelValues("SetCollectors", a.strategy.GetName())) - defer timer.ObserveDuration() + begin := time.Now() + defer func() { + a.timeToAssign.Record(context.Background(), time.Since(begin).Seconds(), metric.WithAttributes(attribute.String("strategy", a.strategy.GetName()), attribute.String("method", "SetCollectors"))) + }() - CollectorsAllocatable.WithLabelValues(a.strategy.GetName()).Set(float64(len(collectors))) + a.collectorsAllocatable.Record(context.Background(), int64(len(collectors)), metric.WithAttributes(attribute.String("strategy", a.strategy.GetName()))) if len(collectors) == 0 { a.log.Info("No collector instances present") } @@ -137,6 +180,7 @@ func (a *allocator) GetTargetsForCollectorAndJob(collector string, job string) [ } // TargetItems returns a shallow copy of the targetItems map. +// The key is the target item's hash, and the value is the target item. func (a *allocator) TargetItems() map[target.ItemHash]*target.Item { a.m.RLock() defer a.m.RUnlock() @@ -192,7 +236,7 @@ func (a *allocator) handleTargets(diff diff.Changes[target.ItemHash, *target.Ite if unassignedTargets > 0 { err := errors.Join(assignmentErrors...) a.log.Info("Could not assign targets for some jobs", "targets", unassignedTargets, "error", err) - TargetsUnassigned.Set(float64(unassignedTargets)) + a.targetsUnassigned.Record(context.Background(), int64(unassignedTargets)) } } @@ -217,8 +261,7 @@ func (a *allocator) addTargetToTargetItems(tg *target.Item) error { tg.CollectorName = colOwner.Name a.addCollectorTargetItemMapping(tg) a.collectors[colOwner.Name].NumTargets++ - TargetsPerCollector.WithLabelValues(colOwner.String(), a.strategy.GetName()).Set(float64(a.collectors[colOwner.String()].NumTargets)) - + a.targetsPerCollector.Record(context.Background(), int64(a.collectors[colOwner.String()].NumTargets), metric.WithAttributes(attribute.String("collector_name", colOwner.String()), attribute.String("strategy", a.strategy.GetName()))) return nil } @@ -233,7 +276,7 @@ func (a *allocator) unassignTargetItem(item *target.Item) { return } c.NumTargets-- - TargetsPerCollector.WithLabelValues(item.CollectorName, a.strategy.GetName()).Set(float64(c.NumTargets)) + a.targetsPerCollector.Record(context.Background(), int64(c.NumTargets), metric.WithAttributes(attribute.String("collector_name", item.CollectorName), attribute.String("strategy", a.strategy.GetName()))) delete(a.targetItemsPerJobPerCollector[item.CollectorName][item.JobName], item.Hash()) if len(a.targetItemsPerJobPerCollector[item.CollectorName][item.JobName]) == 0 { delete(a.targetItemsPerJobPerCollector[item.CollectorName], item.JobName) @@ -257,7 +300,7 @@ func (a *allocator) removeCollector(collector *Collector) { } } delete(a.targetItemsPerJobPerCollector, collector.Name) - TargetsPerCollector.WithLabelValues(collector.Name, a.strategy.GetName()).Set(0) + a.targetsPerCollector.Record(context.Background(), 0, metric.WithAttributes(attribute.String("collector_name", collector.Name), attribute.String("strategy", a.strategy.GetName()))) } // addCollectorTargetItemMapping keeps track of which collector has which jobs and targets @@ -303,7 +346,7 @@ func (a *allocator) handleCollectors(diff diff.Changes[string, *Collector]) { if unassignedTargets > 0 { err := errors.Join(assignmentErrors...) a.log.Info("Could not assign targets for some jobs", "targets", unassignedTargets, "error", err) - TargetsUnassigned.Set(float64(unassignedTargets)) + a.targetsUnassigned.Record(context.Background(), int64(unassignedTargets)) } } diff --git a/otelcollector/otel-allocator/internal/allocation/strategy.go b/otelcollector/otel-allocator/internal/allocation/strategy.go index 1f6110772..83ef964b4 100644 --- a/otelcollector/otel-allocator/internal/allocation/strategy.go +++ b/otelcollector/otel-allocator/internal/allocation/strategy.go @@ -8,8 +8,6 @@ import ( "github.com/buraksezer/consistent" "github.com/go-logr/logr" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/target" ) @@ -22,29 +20,6 @@ var ( consistentHashingStrategyName: newConsistentHashingStrategy(), perNodeStrategyName: newPerNodeStrategy(), } - - // TargetsPerCollector records how many targets have been assigned to each collector. - // It is currently the responsibility of the strategy to track this information. - TargetsPerCollector = promauto.NewGaugeVec(prometheus.GaugeOpts{ - Name: "opentelemetry_allocator_targets_per_collector", - Help: "The number of targets for each collector.", - }, []string{"collector_name", "strategy"}) - CollectorsAllocatable = promauto.NewGaugeVec(prometheus.GaugeOpts{ - Name: "opentelemetry_allocator_collectors_allocatable", - Help: "Number of collectors the allocator is able to allocate to.", - }, []string{"strategy"}) - TimeToAssign = promauto.NewHistogramVec(prometheus.HistogramOpts{ - Name: "opentelemetry_allocator_time_to_allocate", - Help: "The time it takes to allocate", - }, []string{"method", "strategy"}) - TargetsRemaining = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "opentelemetry_allocator_targets_remaining", - Help: "Number of targets kept after filtering.", - }) - TargetsUnassigned = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "opentelemetry_allocator_targets_unassigned", - Help: "Number of targets that could not be assigned due to missing node label.", - }) ) type Option func(Allocator) @@ -69,13 +44,9 @@ func WithFallbackStrategy(fallbackStrategy string) Option { } } -func RecordTargetsKept(targets []*target.Item) { - TargetsRemaining.Set(float64(len(targets))) -} - func New(name string, log logr.Logger, opts ...Option) (Allocator, error) { if strategy, ok := strategies[name]; ok { - return newAllocator(log.WithValues("allocator", name), strategy, opts...), nil + return newAllocator(log.WithValues("allocator", name), strategy, opts...) } return nil, fmt.Errorf("unregistered strategy: %s", name) } diff --git a/otelcollector/otel-allocator/internal/collector/collector.go b/otelcollector/otel-allocator/internal/collector/collector.go index 2f53a5e34..787dd209e 100644 --- a/otelcollector/otel-allocator/internal/collector/collector.go +++ b/otelcollector/otel-allocator/internal/collector/collector.go @@ -4,11 +4,12 @@ package collector import ( + "context" "time" "github.com/go-logr/logr" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/metric" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/informers" @@ -23,19 +24,13 @@ const ( defaultMinUpdateInterval = time.Second * 5 ) -var ( - collectorsDiscovered = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "opentelemetry_allocator_collectors_discovered", - Help: "Number of collectors discovered.", - }) -) - type Watcher struct { log logr.Logger k8sClient kubernetes.Interface close chan struct{} minUpdateInterval time.Duration collectorNotReadyGracePeriod time.Duration + collectorsDiscovered metric.Int64Gauge } func NewCollectorWatcher(logger logr.Logger, kubeConfig *rest.Config, collectorNotReadyGracePeriod time.Duration) (*Watcher, error) { @@ -44,12 +39,18 @@ func NewCollectorWatcher(logger logr.Logger, kubeConfig *rest.Config, collectorN return &Watcher{}, err } + meter := otel.GetMeterProvider().Meter("targetallocator") + collectorsDiscovered, err := meter.Int64Gauge("opentelemetry_allocator_collectors_discovered", metric.WithDescription("Number of collectors discovered.")) + if err != nil { + return &Watcher{}, err + } return &Watcher{ log: logger.WithValues("component", "opentelemetry-targetallocator"), k8sClient: clientset, close: make(chan struct{}), minUpdateInterval: defaultMinUpdateInterval, collectorNotReadyGracePeriod: collectorNotReadyGracePeriod, + collectorsDiscovered: collectorsDiscovered, }, nil } @@ -134,7 +135,7 @@ func (k *Watcher) runOnCollectors(store cache.Store, fn func(collectors map[stri collectorMap[pod.Name] = allocation.NewCollector(pod.Name, pod.Spec.NodeName) } - collectorsDiscovered.Set(float64(len(collectorMap))) + k.collectorsDiscovered.Record(context.Background(), int64(len(collectorMap))) fn(collectorMap) } diff --git a/otelcollector/otel-allocator/internal/collector/collector_test.go b/otelcollector/otel-allocator/internal/collector/collector_test.go index 17dc28447..9442084b6 100644 --- a/otelcollector/otel-allocator/internal/collector/collector_test.go +++ b/otelcollector/otel-allocator/internal/collector/collector_test.go @@ -9,9 +9,11 @@ import ( "testing" "time" - "github.com/prometheus/client_golang/prometheus/testutil" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/metric/embedded" + "go.uber.org/atomic" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" @@ -29,6 +31,15 @@ var labelSelector = metav1.LabelSelector{ MatchLabels: labelMap, } +type reportingGauge struct { + embedded.Int64Gauge + value atomic.Int64 +} + +func (r *reportingGauge) Record(_ context.Context, value int64, _ ...metric.RecordOption) { + r.value.Store(value) +} + func getTestPodWatcher(collectorNotReadyGracePeriod time.Duration) Watcher { podWatcher := Watcher{ k8sClient: fake.NewSimpleClientset(), @@ -36,6 +47,7 @@ func getTestPodWatcher(collectorNotReadyGracePeriod time.Duration) Watcher { log: logger, minUpdateInterval: time.Millisecond, collectorNotReadyGracePeriod: collectorNotReadyGracePeriod, + collectorsDiscovered: &reportingGauge{}, } return podWatcher } @@ -191,7 +203,7 @@ func Test_runWatch(t *testing.T) { defer mapMutex.Unlock() assert.Len(collect, actual, len(tt.want)) assert.Equal(collect, tt.want, actual) - assert.Equal(collect, testutil.ToFloat64(collectorsDiscovered), float64(len(actual))) + assert.Equal(collect, podWatcher.collectorsDiscovered.(*reportingGauge).value.Load(), int64(len(actual))) }, time.Second*30, time.Millisecond*100) }) } @@ -313,7 +325,7 @@ func Test_gracePeriodWithNonRunningPodPhase(t *testing.T) { defer mapMutex.Unlock() assert.Len(collect, actual, len(tt.want)) assert.Equal(collect, actual, tt.want) - assert.Equal(collect, testutil.ToFloat64(collectorsDiscovered), float64(len(actual))) + assert.Equal(collect, podWatcher.collectorsDiscovered.(*reportingGauge).value.Load(), int64(len(actual))) }, time.Second*3, time.Millisecond) }) } @@ -436,7 +448,7 @@ func Test_gracePeriodWithNonReadyPodCondition(t *testing.T) { defer mapMutex.Unlock() assert.Len(collect, actual, len(tt.want)) assert.Equal(collect, actual, tt.want) - assert.Equal(collect, testutil.ToFloat64(collectorsDiscovered), float64(len(actual))) + assert.Equal(collect, podWatcher.collectorsDiscovered.(*reportingGauge).value.Load(), int64(len(actual))) }, time.Second*3, time.Millisecond) }) } diff --git a/otelcollector/otel-allocator/internal/config/flags.go b/otelcollector/otel-allocator/internal/config/flags.go index ab22a3550..27b001d45 100644 --- a/otelcollector/otel-allocator/internal/config/flags.go +++ b/otelcollector/otel-allocator/internal/config/flags.go @@ -4,9 +4,8 @@ package config import ( - "flag" - uberzap "go.uber.org/zap" + "flag" "github.com/spf13/pflag" "sigs.k8s.io/controller-runtime/pkg/log/zap" diff --git a/otelcollector/otel-allocator/internal/server/bench_test.go b/otelcollector/otel-allocator/internal/server/bench_test.go index 98b88c0fb..7033c1fb6 100644 --- a/otelcollector/otel-allocator/internal/server/bench_test.go +++ b/otelcollector/otel-allocator/internal/server/bench_test.go @@ -15,6 +15,7 @@ import ( promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/model/labels" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/allocation" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/target" @@ -44,7 +45,8 @@ func BenchmarkServerTargetsHandler(b *testing.B) { listenAddr := ":8080" a.SetCollectors(cols) a.SetTargets(targets) - s := NewServer(logger, a, listenAddr) + s, err := NewServer(logger, a, listenAddr) + require.NoError(b, err) b.Run(fmt.Sprintf("%s_num_cols_%d_num_jobs_%d", allocatorName, v.numCollectors, v.numJobs), func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { diff --git a/otelcollector/otel-allocator/internal/server/server.go b/otelcollector/otel-allocator/internal/server/server.go index 77b43e37d..d42cde84d 100644 --- a/otelcollector/otel-allocator/internal/server/server.go +++ b/otelcollector/otel-allocator/internal/server/server.go @@ -10,6 +10,8 @@ import ( "net/http" "net/http/pprof" "net/url" + "sort" + "strconv" "strings" "sync" "time" @@ -18,25 +20,19 @@ import ( "github.com/gin-gonic/gin" "github.com/go-logr/logr" "github.com/goccy/go-json" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/client_golang/prometheus/promhttp" promcommconfig "github.com/prometheus/common/config" promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/model/labels" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" "gopkg.in/yaml.v2" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/allocation" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/target" ) -var ( - httpDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ - Name: "opentelemetry_allocator_http_duration_seconds", - Help: "Duration of received HTTP requests.", - }, []string{"path"}) -) - type collectorJSON struct { Link string `json:"_link"` Jobs []*targetJSON `json:"targets"` @@ -63,6 +59,7 @@ type Server struct { mtx sync.RWMutex scrapeConfigResponse []byte ScrapeConfigMarshalledSecretResponse []byte + httpDuration metric.Float64Histogram } type Option func(*Server) @@ -84,8 +81,16 @@ func (s *Server) setRouter(router *gin.Engine) { router.UnescapePathValues = false router.Use(s.PrometheusMiddleware) + router.GET("/", s.IndexHandler) + router.GET("/debug/collector", s.CollectorHTMLHandler) + router.GET("/debug/job", s.JobHTMLHandler) + router.GET("/debug/target", s.TargetHTMLHandler) + router.GET("/debug/targets", s.TargetsHTMLHandler) + router.GET("/debug/scrape_configs", s.ScrapeConfigsHTMLHandler) + router.GET("/debug/jobs", s.JobsHTMLHandler) + router.GET("/scrape_configs", s.ScrapeConfigsHandler) - router.GET("/jobs", s.JobHandler) + router.GET("/jobs", s.JobsHandler) router.GET("/jobs/:job_id/targets", s.TargetsHandler) router.GET("/metrics", gin.WrapH(promhttp.Handler())) router.GET("/livez", s.LivenessProbeHandler) @@ -93,10 +98,16 @@ func (s *Server) setRouter(router *gin.Engine) { registerPprof(router.Group("/debug/pprof/")) } -func NewServer(log logr.Logger, allocator allocation.Allocator, listenAddr string, options ...Option) *Server { +func NewServer(log logr.Logger, allocator allocation.Allocator, listenAddr string, options ...Option) (*Server, error) { + meter := otel.GetMeterProvider().Meter("targetallocator") + httpDuration, err := meter.Float64Histogram("opentelemetry_allocator_http_duration_seconds", metric.WithDescription("Duration of received HTTP requests.")) + if err != nil { + return nil, err + } s := &Server{ - logger: log, - allocator: allocator, + logger: log, + allocator: allocator, + httpDuration: httpDuration, } gin.SetMode(gin.ReleaseMode) @@ -109,7 +120,7 @@ func NewServer(log logr.Logger, allocator allocation.Allocator, listenAddr strin opt(s) } - return s + return s, nil } func (s *Server) Start() error { @@ -223,6 +234,10 @@ func (s *Server) UpdateScrapeConfigResponse(configs map[string]*promconfig.Scrap // ScrapeConfigsHandler returns the available scrape configuration discovered by the target allocator. func (s *Server) ScrapeConfigsHandler(c *gin.Context) { + if strings.Contains(c.Request.Header.Get("Accept"), "text/html") { + s.ScrapeConfigsHTMLHandler(c) + return + } s.mtx.RLock() result := s.scrapeConfigResponse if c.Request.TLS != nil { @@ -250,11 +265,15 @@ func (s *Server) ReadinessProbeHandler(c *gin.Context) { } } -func (s *Server) JobHandler(c *gin.Context) { +func (s *Server) JobsHandler(c *gin.Context) { displayData := make(map[string]linkJSON) for _, v := range s.allocator.TargetItems() { displayData[v.JobName] = linkJSON{Link: fmt.Sprintf("/jobs/%s/targets", url.QueryEscape(v.JobName))} } + if strings.Contains(c.Request.Header.Get("Accept"), "text/html") { + s.JobsHTMLHandler(c) + return + } s.jsonHandler(c.Writer, displayData) } @@ -264,9 +283,352 @@ func (s *Server) LivenessProbeHandler(c *gin.Context) { func (s *Server) PrometheusMiddleware(c *gin.Context) { path := c.FullPath() - timer := prometheus.NewTimer(httpDuration.WithLabelValues(path)) + begin := time.Now() c.Next() - timer.ObserveDuration() + s.httpDuration.Record(context.Background(), time.Since(begin).Seconds(), metric.WithAttributes(attribute.String("path", path))) +} + +// IndexHandler displays the main page of the allocator. It shows the number of jobs and targets. +// It also displays a table with the collectors and the number of jobs and targets for each collector. +// The collector names are links to the respective pages. The table is sorted by collector name. +func (s *Server) IndexHandler(c *gin.Context) { + c.Writer.Header().Set("Content-Type", "text/html") + WriteHTMLPageHeader(c.Writer, HeaderData{ + Title: "OpenTelemetry Target Allocator", + }) + + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Category", "Count"}, + Rows: [][]Cell{ + {scrapeConfigAnchorLink(), Text(strconv.Itoa(s.getScrapeConfigCount()))}, + {jobsAnchorLink(), Text(strconv.Itoa(s.getJobCount()))}, + {targetsAnchorLink(), Text(strconv.Itoa(len(s.allocator.TargetItems())))}, + }, + }) + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Collector", "Job Count", "Target Count"}, + Rows: func() [][]Cell { + var rows [][]Cell + collectorNames := []string{} + for k := range s.allocator.Collectors() { + collectorNames = append(collectorNames, k) + } + sort.Strings(collectorNames) + + for _, colName := range collectorNames { + jobCount := strconv.Itoa(s.getJobCountForCollector(colName)) + targetCount := strconv.Itoa(s.getTargetCountForCollector(colName)) + rows = append(rows, []Cell{collectorAnchorLink(colName), NewCell(jobCount), NewCell(targetCount)}) + } + return rows + }(), + }) + WriteHTMLPageFooter(c.Writer) +} + +func targetsAnchorLink() Cell { + return Cell{ + Link: "/debug/targets", + Text: "Targets", + } +} + +// TargetsHTMLHandler displays the targets in a table format. Each target is a row in the table. +// The table has four columns: Job, Target, Collector, and Endpoint Slice. +// The Job, Target, and Collector columns are links to the respective pages. +func (s *Server) TargetsHTMLHandler(c *gin.Context) { + c.Writer.Header().Set("X-Content-Type-Options", "nosniff") + c.Writer.Header().Set("Content-Type", "text/html; charset=utf-8") + + WriteHTMLPageHeader(c.Writer, HeaderData{ + Title: "OpenTelemetry Target Allocator - Targets", + }) + + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Job", "Target", "Collector", "Endpoint Slice"}, + Rows: func() [][]Cell { + var rows [][]Cell + for _, v := range s.sortedTargetItems() { + rows = append(rows, []Cell{ + jobAnchorLink(v.JobName), + targetAnchorLink(v), + collectorAnchorLink(v.CollectorName), + NewCell(v.GetEndpointSliceName()), + }) + } + return rows + }(), + }) + WriteHTMLPageFooter(c.Writer) +} + +func targetAnchorLink(t *target.Item) Cell { + return Cell{ + Link: fmt.Sprintf("/debug/target?target_hash=%v", t.Hash()), + Text: t.TargetURL, + } +} + +// TargetHTMLHandler displays information about a target in a table format. +// There are two tables: one for high-level target information and another for the target's labels. +func (s *Server) TargetHTMLHandler(c *gin.Context) { + c.Writer.Header().Set("X-Content-Type-Options", "nosniff") + c.Writer.Header().Set("Content-Type", "text/html; charset=utf-8") + + targetHashStr := c.Request.URL.Query().Get("target_hash") + if targetHashStr == "" || targetHashStr == "0" { + c.Status(http.StatusBadRequest) + WriteHTMLBadRequest(c.Writer, BadRequestData{ + Error: "Expected target_hash in the query string", + Example: "/debug/target?target_hash=my-target-42", + }) + return + } + + // Convert string to uint64 + targetHash, err := strconv.ParseUint(targetHashStr, 10, 64) + if err != nil { + c.Status(http.StatusBadRequest) + WriteHTMLBadRequest(c.Writer, BadRequestData{ + Error: "Expected target_hash to be a number", + Example: "/debug/target?target_hash=42", + }) + } + target, found := s.allocator.TargetItems()[target.ItemHash(targetHash)] + if !found { + c.Status(http.StatusNotFound) + WriteHTMLNotFound(c.Writer, NotFoundData{ + ResourceType: "Target", + ResourceName: targetHashStr, + }) + return + } + + WriteHTMLPageHeader(c.Writer, HeaderData{ + Title: "Target: " + target.TargetURL, + }) + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"", ""}, + Rows: [][]Cell{ + {NewCell("Collector"), collectorAnchorLink(target.CollectorName)}, + {NewCell("Job"), jobAnchorLink(target.JobName)}, + {NewCell("Namespace"), NewCell(target.Labels.Get("__meta_kubernetes_namespace"))}, + {NewCell("Service Name"), NewCell(target.Labels.Get("__meta_kubernetes_service_name"))}, + {NewCell("Service Port"), NewCell(target.Labels.Get("__meta_kubernetes_service_port"))}, + {NewCell("Pod Name"), NewCell(target.Labels.Get("__meta_kubernetes_pod_name"))}, + {NewCell("Container Name"), NewCell(target.Labels.Get("__meta_kubernetes_pod_container_name"))}, + {NewCell("Container Port Name"), NewCell(target.Labels.Get("__meta_kubernetes_pod_container_port_name"))}, + {NewCell("Node Name"), NewCell(target.GetNodeName())}, + {NewCell("Endpoint Slice Name"), NewCell(target.GetEndpointSliceName())}, + }, + }) + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Label", "Value"}, + Rows: func() [][]Cell { + var rows [][]Cell + for _, l := range target.Labels { + rows = append(rows, []Cell{NewCell(l.Name), NewCell(l.Value)}) + } + return rows + }(), + }) + WriteHTMLPageFooter(c.Writer) +} + +func jobsAnchorLink() Cell { + return Cell{ + Link: "/debug/jobs", + Text: "Jobs", + } +} + +// JobsHTMLHandler displays the jobs in a table format. Each job is a row in the table. +// The table has two columns: Job and Target Count. The Job column is a link to the job's targets. +func (s *Server) JobsHTMLHandler(c *gin.Context) { + c.Writer.Header().Set("X-Content-Type-Options", "nosniff") + c.Writer.Header().Set("Content-Type", "text/html; charset=utf-8") + + WriteHTMLPageHeader(c.Writer, HeaderData{ + Title: "OpenTelemetry Target Allocator - Jobs", + }) + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Job", "Target Count"}, + Rows: func() [][]Cell { + var rows [][]Cell + jobs := make(map[string]int) + for _, v := range s.allocator.TargetItems() { + jobs[v.JobName]++ + } + // Sort the jobs by name to ensure consistent order + jobNames := make([]string, 0, len(jobs)) + for k := range jobs { + jobNames = append(jobNames, k) + } + sort.Strings(jobNames) + + for _, j := range jobNames { + v := jobs[j] + rows = append(rows, []Cell{jobAnchorLink(j), NewCell(strconv.Itoa(v))}) + } + return rows + }(), + }) + WriteHTMLPageFooter(c.Writer) +} + +func jobAnchorLink(jobId string) Cell { + return Cell{ + Link: fmt.Sprintf("/debug/job?job_id=%s", url.QueryEscape(jobId)), + Text: jobId, + } +} +func (s *Server) JobHTMLHandler(c *gin.Context) { + c.Writer.Header().Set("X-Content-Type-Options", "nosniff") + c.Writer.Header().Set("Content-Type", "text/html; charset=utf-8") + + jobIdValues := c.Request.URL.Query()["job_id"] + if len(jobIdValues) != 1 { + c.Status(http.StatusBadRequest) + return + } + jobId := jobIdValues[0] + + WriteHTMLPageHeader(c.Writer, HeaderData{ + Title: "Job: " + jobId, + }) + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Collector", "Target Count"}, + Rows: func() [][]Cell { + var rows [][]Cell + targets := map[target.ItemHash]*target.Item{} + for k, v := range s.allocator.TargetItems() { + if v.JobName == jobId { + targets[k] = v + } + } + collectorNames := []string{} + for _, v := range s.allocator.Collectors() { + collectorNames = append(collectorNames, v.Name) + } + sort.Strings(collectorNames) + for _, colName := range collectorNames { + count := 0 + for _, target := range targets { + if target.CollectorName == colName { + count++ + } + } + rows = append(rows, []Cell{collectorAnchorLink(colName), NewCell(strconv.Itoa(count))}) + } + return rows + }(), + }) + WriteHTMLPageFooter(c.Writer) +} + +func collectorAnchorLink(collectorId string) Cell { + return Cell{ + Link: fmt.Sprintf("/debug/collector?collector_id=%s", url.QueryEscape(collectorId)), + Text: collectorId, + } +} + +func (s *Server) CollectorHTMLHandler(c *gin.Context) { + c.Writer.Header().Set("X-Content-Type-Options", "nosniff") + c.Writer.Header().Set("Content-Type", "text/html; charset=utf-8") + collectorIdValues := c.Request.URL.Query()["collector_id"] + collectorId := "" + if len(collectorIdValues) == 1 { + collectorId = collectorIdValues[0] + } + + if collectorId == "" { + c.Status(http.StatusBadRequest) + WriteHTMLBadRequest(c.Writer, BadRequestData{ + Error: "Expected collector_id in the query string", + Example: "/debug/collector?collector_id=my-collector-42", + }) + return + } + + found := false + for _, v := range s.allocator.Collectors() { + if v.Name == collectorId { + found = true + break + } + } + if !found { + c.Status(http.StatusNotFound) + WriteHTMLNotFound(c.Writer, NotFoundData{ + ResourceType: "Collector", + ResourceName: collectorId, + }) + return + } + + WriteHTMLPageHeader(c.Writer, HeaderData{ + Title: "Collector: " + collectorId, + }) + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Job", "Target", "Endpoint Slice"}, + Rows: func() [][]Cell { + var rows [][]Cell + for _, v := range s.sortedTargetItems() { + if v.CollectorName == collectorId { + rows = append(rows, []Cell{ + jobAnchorLink(v.JobName), + targetAnchorLink(v), + NewCell(v.GetEndpointSliceName()), + }) + } + } + return rows + }(), + }) + WriteHTMLPageFooter(c.Writer) +} + +func scrapeConfigAnchorLink() Cell { + return Cell{ + Link: "/scrape_configs", + Text: "Scrape Configs", + } +} +func (s *Server) ScrapeConfigsHTMLHandler(c *gin.Context) { + c.Writer.Header().Set("X-Content-Type-Options", "nosniff") + c.Writer.Header().Set("Content-Type", "text/html; charset=utf-8") + + WriteHTMLPageHeader(c.Writer, HeaderData{ + Title: "OpenTelemetry Target Allocator - Scrape Configs", + }) + //s.scrapeConfigResponse + // Marshal the scrape config to JSON + scrapeConfigs := make(map[string]interface{}) + err := json.Unmarshal(s.scrapeConfigResponse, &scrapeConfigs) + if err != nil { + s.errorHandler(c.Writer, err) + return + } + // Display the JSON in a table + + WriteHTMLPropertiesTable(c.Writer, PropertiesTableData{ + Headers: []string{"Job", "Scrape Config"}, + Rows: func() [][]Cell { + var rows [][]Cell + for job, scrapeConfig := range scrapeConfigs { + // pretty print the JSON + scrapeConfigJSON, err := json.MarshalIndent(scrapeConfig, "", " ") + if err != nil { + s.errorHandler(c.Writer, err) + return nil + } + rows = append(rows, []Cell{jobAnchorLink(job), {Text: string(scrapeConfigJSON), Preformatted: true}}) + } + return rows + }(), + }) + WriteHTMLPageFooter(c.Writer) } func (s *Server) TargetsHandler(c *gin.Context) { @@ -291,7 +653,6 @@ func (s *Server) TargetsHandler(c *gin.Context) { } s.jsonHandler(c.Writer, targets) } - } func (s *Server) errorHandler(w http.ResponseWriter, err error) { @@ -307,13 +668,62 @@ func (s *Server) jsonHandler(w http.ResponseWriter, data interface{}) { } } +// sortedTargetItems returns a sorted list of target items by its hash. +func (s *Server) sortedTargetItems() []*target.Item { + targetItems := make([]*target.Item, 0, len(s.allocator.TargetItems())) + for _, v := range s.allocator.TargetItems() { + targetItems = append(targetItems, v) + } + sort.Slice(targetItems, func(i, j int) bool { + return targetItems[i].Hash() < targetItems[j].Hash() + }) + return targetItems +} + +func (s *Server) getScrapeConfigCount() int { + scrapeConfigs := make(map[string]interface{}) + err := json.Unmarshal(s.scrapeConfigResponse, &scrapeConfigs) + if err != nil { + return 0 + } + return len(scrapeConfigs) +} + +func (s *Server) getJobCount() int { + jobs := make(map[string]struct{}) + for _, v := range s.allocator.TargetItems() { + jobs[v.JobName] = struct{}{} + } + return len(jobs) +} + +func (s *Server) getJobCountForCollector(collector string) int { + jobs := make(map[string]struct{}) + for _, v := range s.allocator.TargetItems() { + if v.CollectorName == collector { + jobs[v.JobName] = struct{}{} + } + } + return len(jobs) +} + +func (s *Server) getTargetCountForCollector(collector string) int { + count := 0 + for _, v := range s.allocator.TargetItems() { + if v.CollectorName == collector { + count++ + } + } + return count +} + // GetAllTargetsByJob is a relatively expensive call that is usually only used for debugging purposes. func GetAllTargetsByJob(allocator allocation.Allocator, job string) map[string]collectorJSON { displayData := make(map[string]collectorJSON) for _, col := range allocator.Collectors() { targets := GetAllTargetsByCollectorAndJob(allocator, col.Name, job) displayData[col.Name] = collectorJSON{ - Link: fmt.Sprintf("/jobs/%s/targets?collector_id=%s", url.QueryEscape(job), col.Name), + Link: fmt.Sprintf("/debug/jobs/%s/targets?collector_id=%s", url.QueryEscape(job), col.Name), Jobs: targets, } } diff --git a/otelcollector/otel-allocator/internal/server/server_test.go b/otelcollector/otel-allocator/internal/server/server_test.go index 24c88f3a8..ac7adff7f 100644 --- a/otelcollector/otel-allocator/internal/server/server_test.go +++ b/otelcollector/otel-allocator/internal/server/server_test.go @@ -22,6 +22,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "gopkg.in/yaml.v2" + "gotest.tools/v3/golden" logf "sigs.k8s.io/controller-runtime/pkg/log" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/allocation" @@ -37,15 +38,17 @@ var ( testJobLabelSetTwo = labels.Labels{ {Name: "test_label", Value: "test-value2"}, } - baseTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector") - secondTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector") - testJobTargetItemTwo = target.NewItem("test-job", "test-url2", testJobLabelSetTwo, "test-collector2") + baseTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector") + secondTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector") + testJobTargetItemTwo = target.NewItem("test-job", "test-url2", testJobLabelSetTwo, "test-collector2") + testJobTwoTargetItemTwo = target.NewItem("test-job2", "test-url3", testJobLabelSetTwo, "test-collector2") ) func TestServer_LivenessProbeHandler(t *testing.T) { leastWeighted, _ := allocation.New("least-weighted", logger) listenAddr := ":8080" - s := NewServer(logger, leastWeighted, listenAddr) + s, err := NewServer(logger, leastWeighted, listenAddr) + require.NoError(t, err) request := httptest.NewRequest("GET", "/livez", nil) w := httptest.NewRecorder() @@ -60,7 +63,7 @@ func TestServer_TargetsHandler(t *testing.T) { type args struct { collector string job string - cMap map[target.ItemHash]*target.Item + targets []*target.Item allocator allocation.Allocator } type want struct { @@ -77,7 +80,7 @@ func TestServer_TargetsHandler(t *testing.T) { args: args{ collector: "test-collector", job: "test-job", - cMap: map[target.ItemHash]*target.Item{}, + targets: []*target.Item{}, allocator: leastWeighted, }, want: want{ @@ -89,8 +92,8 @@ func TestServer_TargetsHandler(t *testing.T) { args: args{ collector: "test-collector", job: "test-job", - cMap: map[target.ItemHash]*target.Item{ - baseTargetItem.Hash(): baseTargetItem, + targets: []*target.Item{ + baseTargetItem, }, allocator: leastWeighted, }, @@ -110,9 +113,9 @@ func TestServer_TargetsHandler(t *testing.T) { args: args{ collector: "test-collector", job: "test-job", - cMap: map[target.ItemHash]*target.Item{ - baseTargetItem.Hash(): baseTargetItem, - secondTargetItem.Hash(): secondTargetItem, + targets: []*target.Item{ + baseTargetItem, + secondTargetItem, }, allocator: leastWeighted, }, @@ -132,9 +135,9 @@ func TestServer_TargetsHandler(t *testing.T) { args: args{ collector: "test-collector", job: "test-job", - cMap: map[target.ItemHash]*target.Item{ - baseTargetItem.Hash(): baseTargetItem, - testJobTargetItemTwo.Hash(): testJobTargetItemTwo, + targets: []*target.Item{ + baseTargetItem, + testJobTargetItemTwo, }, allocator: leastWeighted, }, @@ -159,13 +162,11 @@ func TestServer_TargetsHandler(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { listenAddr := ":8080" - s := NewServer(logger, tt.args.allocator, listenAddr) - targets := []*target.Item{} - for _, item := range tt.args.cMap { - targets = append(targets, item) - } + s, err := NewServer(logger, tt.args.allocator, listenAddr) + require.NoError(t, err) + tt.args.allocator.SetCollectors(map[string]*allocation.Collector{"test-collector": {Name: "test-collector"}}) - tt.args.allocator.SetTargets(targets) + tt.args.allocator.SetTargets(tt.args.targets) request := httptest.NewRequest("GET", fmt.Sprintf("/jobs/%s/targets?collector_id=%s", tt.args.job, tt.args.collector), nil) w := httptest.NewRecorder() @@ -502,7 +503,8 @@ func TestServer_ScrapeConfigsHandler(t *testing.T) { for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { listenAddr := ":8080" - s := NewServer(logger, nil, listenAddr, tc.serverOptions...) + s, err := NewServer(logger, nil, listenAddr, tc.serverOptions...) + require.NoError(t, err) assert.NoError(t, s.UpdateScrapeConfigResponse(tc.scrapeConfigs)) request := httptest.NewRequest("GET", "/scrape_configs", nil) @@ -593,7 +595,8 @@ func TestServer_JobHandler(t *testing.T) { t.Run(tc.description, func(t *testing.T) { listenAddr := ":8080" a := &mockAllocator{targetItems: tc.targetItems} - s := NewServer(logger, a, listenAddr) + s, err := NewServer(logger, a, listenAddr) + require.NoError(t, err) request := httptest.NewRequest("GET", "/jobs", nil) w := httptest.NewRecorder() @@ -610,6 +613,415 @@ func TestServer_JobHandler(t *testing.T) { }) } } +func TestServer_JobsHandler_HTML(t *testing.T) { + tests := []struct { + description string + targetItems map[target.ItemHash]*target.Item + expectedCode int + Golden string + }{ + { + description: "nil jobs", + targetItems: nil, + expectedCode: http.StatusOK, + Golden: "jobs_empty.html", + }, + { + description: "empty jobs", + targetItems: map[target.ItemHash]*target.Item{}, + expectedCode: http.StatusOK, + Golden: "jobs_empty.html", + }, + { + description: "one job", + targetItems: map[target.ItemHash]*target.Item{ + 0: target.NewItem("job1", "", labels.Labels{}, ""), + }, + expectedCode: http.StatusOK, + Golden: "jobs_one.html", + }, + { + description: "multiple jobs", + targetItems: map[target.ItemHash]*target.Item{ + 0: target.NewItem("job1", "1.1.1.1:8080", labels.Labels{}, ""), + 1: target.NewItem("job2", "1.1.1.2:8080", labels.Labels{}, ""), + 2: target.NewItem("job3", "1.1.1.3:8080", labels.Labels{}, ""), + 3: target.NewItem("job3", "1.1.1.4:8080", labels.Labels{}, ""), + 4: target.NewItem("job3", "1.1.1.5:8080", labels.Labels{}, "")}, + expectedCode: http.StatusOK, + Golden: "jobs_multiple.html", + }, + } + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + listenAddr := ":8080" + a := &mockAllocator{targetItems: tc.targetItems} + s, err := NewServer(logger, a, listenAddr) + require.NoError(t, err) + a.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + "test-collector2": {Name: "test-collector2"}, + }) + request := httptest.NewRequest("GET", "/debug/jobs", nil) + request.Header.Set("Accept", "text/html") + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, tc.expectedCode, result.StatusCode) + bodyBytes, err := io.ReadAll(result.Body) + require.NoError(t, err) + golden.Assert(t, string(bodyBytes), tc.Golden) + }) + } +} + +func TestServer_JobHandler_HTML(t *testing.T) { + consistentHashing, _ := allocation.New("consistent-hashing", logger) + type args struct { + job string + cMap []*target.Item + + allocator allocation.Allocator + } + tests := []struct { + name string + args args + Golden string + }{ + { + name: "Empty target map", + args: args{ + job: "test-job", + cMap: []*target.Item{}, + allocator: consistentHashing, + }, + Golden: "job_empty.html", + }, + { + name: "Single entry target map", + args: args{ + job: "test-job", + cMap: []*target.Item{ + baseTargetItem, + }, + allocator: consistentHashing, + }, + Golden: "job_single.html", + }, + { + name: "Multiple entry target map", + args: args{ + job: "test-job", + cMap: []*target.Item{ + baseTargetItem, + testJobTwoTargetItemTwo, + }, + allocator: consistentHashing, + }, + Golden: "job_multiple.html", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + listenAddr := ":8080" + s, err := NewServer(logger, tt.args.allocator, listenAddr) + require.NoError(t, err) + tt.args.allocator.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + "test-collector2": {Name: "test-collector2"}, + }) + tt.args.allocator.SetTargets(tt.args.cMap) + request := httptest.NewRequest("GET", fmt.Sprintf("/debug/job?job_id=%s", tt.args.job), nil) + request.Header.Set("Accept", "text/html") + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusOK, result.StatusCode) + body := result.Body + bodyBytes, err := io.ReadAll(body) + assert.NoError(t, err) + golden.Assert(t, string(bodyBytes), tt.Golden) + }) + } +} + +func TestServer_IndexHandler(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + tests := []struct { + description string + allocator allocation.Allocator + targetItems []*target.Item + Golden string + }{ + { + description: "Empty target map", + targetItems: []*target.Item{}, + allocator: allocator, + Golden: "index_empty.html", + }, + { + description: "Single entry target map", + targetItems: []*target.Item{ + baseTargetItem, + }, + allocator: allocator, + Golden: "index_single.html", + }, + { + description: "Multiple entry target map", + targetItems: []*target.Item{ + baseTargetItem, + testJobTargetItemTwo, + testJobTwoTargetItemTwo, + }, + allocator: allocator, + Golden: "index_multiple.html", + }, + } + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + listenAddr := ":8080" + s, err := NewServer(logger, tc.allocator, listenAddr) + require.NoError(t, err) + tc.allocator.SetCollectors(map[string]*allocation.Collector{ + "test-collector1": {Name: "test-collector1"}, + "test-collector2": {Name: "test-collector2"}, + }) + tc.allocator.SetTargets(tc.targetItems) + request := httptest.NewRequest("GET", "/", nil) + request.Header.Set("Accept", "text/html") + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusOK, result.StatusCode) + body := result.Body + bodyBytes, err := io.ReadAll(body) + assert.NoError(t, err) + golden.Assert(t, string(bodyBytes), tc.Golden) + }) + } +} +func TestServer_TargetsHTMLHandler(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + tests := []struct { + description string + allocator allocation.Allocator + targetItems []*target.Item + Golden string + }{ + { + description: "Empty target map", + targetItems: []*target.Item{}, + allocator: allocator, + Golden: "targets_empty.html", + }, + { + description: "Single entry target map", + targetItems: []*target.Item{ + baseTargetItem, + }, + allocator: allocator, + Golden: "targets_single.html", + }, + { + description: "Multiple entry target map", + targetItems: []*target.Item{ + baseTargetItem, + testJobTargetItemTwo, + testJobTwoTargetItemTwo, + }, + allocator: allocator, + Golden: "targets_multiple.html", + }, + } + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + listenAddr := ":8080" + s, err := NewServer(logger, tc.allocator, listenAddr) + require.NoError(t, err) + tc.allocator.SetCollectors(map[string]*allocation.Collector{ + "test-collector1": {Name: "test-collector1"}, + "test-collector2": {Name: "test-collector2"}, + }) + tc.allocator.SetTargets(tc.targetItems) + request := httptest.NewRequest("GET", "/debug/targets", nil) + request.Header.Set("Accept", "text/html") + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusOK, result.StatusCode) + body := result.Body + bodyBytes, err := io.ReadAll(body) + assert.NoError(t, err) + golden.Assert(t, string(bodyBytes), tc.Golden) + }) + } +} + +func TestServer_CollectorHandler(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + tests := []struct { + description string + collectorId string + allocator allocation.Allocator + targetItems []*target.Item + expectedCode int + Golden string + }{ + { + description: "Empty target map", + collectorId: "test-collector", + targetItems: []*target.Item{}, + allocator: allocator, + expectedCode: http.StatusOK, + Golden: "collector_empty.html", + }, + { + description: "Single entry target map", + collectorId: "test-collector2", + targetItems: []*target.Item{ + baseTargetItem, + }, + allocator: allocator, + expectedCode: http.StatusOK, + Golden: "collector_single.html", + }, + { + description: "Multiple entry target map", + collectorId: "test-collector2", + targetItems: []*target.Item{ + baseTargetItem, + testJobTwoTargetItemTwo, + }, + allocator: allocator, + expectedCode: http.StatusOK, + Golden: "collector_multiple.html", + }, + { + description: "Multiple entry target map, collector id is empty", + collectorId: "", + targetItems: []*target.Item{ + baseTargetItem, + testJobTwoTargetItemTwo, + }, + allocator: allocator, + expectedCode: http.StatusBadRequest, + Golden: "collector_empty_id.html", + }, + { + description: "Multiple entry target map, unknown collector id", + collectorId: "unknown-collector-1", + targetItems: []*target.Item{ + baseTargetItem, + testJobTwoTargetItemTwo, + }, + allocator: allocator, + expectedCode: http.StatusNotFound, + Golden: "collector_unknown_id.html", + }, + } + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + listenAddr := ":8080" + s, err := NewServer(logger, tc.allocator, listenAddr) + require.NoError(t, err) + tc.allocator.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + "test-collector2": {Name: "test-collector2"}, + }) + tc.allocator.SetTargets(tc.targetItems) + request := httptest.NewRequest("GET", "/debug/collector", nil) + request.Header.Set("Accept", "text/html") + request.URL.RawQuery = "collector_id=" + tc.collectorId + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, tc.expectedCode, result.StatusCode) + body := result.Body + bodyBytes, err := io.ReadAll(body) + assert.NoError(t, err) + golden.Assert(t, string(bodyBytes), tc.Golden) + }) + } +} + +func TestServer_TargetHTMLHandler(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + tests := []struct { + description string + targetHash target.ItemHash + allocator allocation.Allocator + targetItems []*target.Item + expectedCode int + Golden string + }{ + { + description: "Missing target hash", + targetHash: 0, + targetItems: []*target.Item{}, + allocator: allocator, + expectedCode: http.StatusBadRequest, + Golden: "target_empty_hash.html", + }, + { + description: "Single entry target map", + targetHash: baseTargetItem.Hash(), + targetItems: []*target.Item{ + baseTargetItem, + }, + allocator: allocator, + expectedCode: http.StatusOK, + Golden: "target_single.html", + }, + { + description: "Multiple entry target map", + targetHash: testJobTwoTargetItemTwo.Hash(), + targetItems: []*target.Item{ + baseTargetItem, + testJobTwoTargetItemTwo, + }, + allocator: allocator, + expectedCode: http.StatusOK, + Golden: "target_multiple.html", + }, + } + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + listenAddr := ":8080" + s, err := NewServer(logger, tc.allocator, listenAddr) + require.NoError(t, err) + tc.allocator.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + "test-collector2": {Name: "test-collector2"}, + }) + tc.allocator.SetTargets(tc.targetItems) + request := httptest.NewRequest("GET", "/debug/target", nil) + request.Header.Set("Accept", "text/html") + request.URL.RawQuery = "target_hash=" + tc.targetHash.String() + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, tc.expectedCode, result.StatusCode) + body := result.Body + bodyBytes, err := io.ReadAll(body) + assert.NoError(t, err) + golden.Assert(t, string(bodyBytes), tc.Golden) + }) + } +} + func TestServer_Readiness(t *testing.T) { tests := []struct { description string @@ -658,7 +1070,8 @@ func TestServer_Readiness(t *testing.T) { for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { listenAddr := ":8080" - s := NewServer(logger, nil, listenAddr) + s, err := NewServer(logger, nil, listenAddr) + require.NoError(t, err) if tc.scrapeConfigs != nil { assert.NoError(t, s.UpdateScrapeConfigResponse(tc.scrapeConfigs)) } @@ -674,7 +1087,7 @@ func TestServer_Readiness(t *testing.T) { } } -func TestServer_ScrapeConfigRespose(t *testing.T) { +func TestServer_ScrapeConfigResponse(t *testing.T) { tests := []struct { description string filePath string @@ -699,10 +1112,11 @@ func TestServer_ScrapeConfigRespose(t *testing.T) { for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { listenAddr := ":8080" - s := NewServer(logger, nil, listenAddr) + s, err := NewServer(logger, nil, listenAddr) + require.NoError(t, err) allocCfg := allocatorconfig.CreateDefaultConfig() - err := allocatorconfig.LoadFromFile(tc.filePath, &allocCfg) + err = allocatorconfig.LoadFromFile(tc.filePath, &allocCfg) require.NoError(t, err) jobToScrapeConfig := make(map[string]*promconfig.ScrapeConfig) diff --git a/otelcollector/otel-allocator/internal/server/templates.go b/otelcollector/otel-allocator/internal/server/templates.go new file mode 100644 index 000000000..009172ab8 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/templates.go @@ -0,0 +1,121 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package server + +import ( + _ "embed" + "html/template" + "io" + "log" +) + +var ( + templateFunctions = template.FuncMap{ + "even": even, + } + + //go:embed templates/page_header.html + headerBytes []byte + headerTemplate = parseTemplate("header", headerBytes) + + //go:embed templates/page_footer.html + footerBytes []byte + footerTemplate = parseTemplate("footer", footerBytes) + + //go:embed templates/properties_table.html + propertiesTableBytes []byte + propertiesTableTemplate = parseTemplate("properties_table", propertiesTableBytes) + + //go:embed templates/bad_request.html + badRequestBytes []byte + badRequestTemplate = parseTemplate("bad_request", badRequestBytes) + + //go:embed templates/not_found.html + notFoundBytes []byte + notFoundTemplate = parseTemplate("not_found", notFoundBytes) +) + +func parseTemplate(name string, bytes []byte) *template.Template { + return template.Must(template.New(name).Funcs(templateFunctions).Parse(string(bytes))) +} + +// HeaderData contains data for the header template. +type HeaderData struct { + Title string +} + +// BadRequestData contains data for the bad request template. +type BadRequestData struct { + Error string + Example string +} + +// BadRequestData contains data for the bad request template. +type NotFoundData struct { + ResourceType string + ResourceName string +} + +// WriteHTMLPageHeader writes the header. +func WriteHTMLPageHeader(w io.Writer, hd HeaderData) { + if err := headerTemplate.Execute(w, hd); err != nil { + log.Printf("ta: executing template: %v", err) + } +} + +// PropertiesTableData contains data for properties table template. +type PropertiesTableData struct { + Headers []string + Rows [][]Cell +} + +// Cell represents a cell in a row. +type Cell struct { + // Link is the URL to link to. If empty, no link is created. + Link string + // Text is the text to display in the cell. + Text string + // Preformatted indicates if the text should be displayed as preformatted text. + Preformatted bool +} + +func NewCell(text string) Cell { + return Cell{Text: text} +} + +func Text(text string) Cell { + return Cell{Text: text} +} + +// WriteHTMLPropertiesTable writes the HTML for properties table. +func WriteHTMLPropertiesTable(w io.Writer, chd PropertiesTableData) { + if err := propertiesTableTemplate.Execute(w, chd); err != nil { + log.Printf("ta: executing template: %v", err) + } +} + +// WriteHTMLPageFooter writes the footer. +func WriteHTMLPageFooter(w io.Writer) { + if err := footerTemplate.Execute(w, nil); err != nil { + log.Printf("ta: executing template: %v", err) + } +} + +// WriteHTMLBadRequest writes the bad request page. +func WriteHTMLBadRequest(w io.Writer, br BadRequestData) { + if err := badRequestTemplate.Execute(w, br); err != nil { + log.Printf("ta: executing template: %v", err) + } +} + +// WriteHTMLNotFound writes the not found page. +func WriteHTMLNotFound(w io.Writer, nf NotFoundData) { + if err := notFoundTemplate.Execute(w, nf); err != nil { + log.Printf("ta: executing template: %v", err) + } +} + +func even(x int) bool { + return x%2 == 0 +} diff --git a/otelcollector/otel-allocator/internal/server/templates/bad_request.html b/otelcollector/otel-allocator/internal/server/templates/bad_request.html new file mode 100644 index 000000000..de440fb45 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/templates/bad_request.html @@ -0,0 +1,7 @@ + + +

Bad Request

+

{{.Error}}

+

Example: {{.Example}}

+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/templates/not_found.html b/otelcollector/otel-allocator/internal/server/templates/not_found.html new file mode 100644 index 000000000..c04a984a6 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/templates/not_found.html @@ -0,0 +1,5 @@ + + +

Unknown {{.ResourceType}}: {{.ResourceName}}

+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/templates/page_footer.html b/otelcollector/otel-allocator/internal/server/templates/page_footer.html new file mode 100644 index 000000000..691287b6e --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/templates/page_footer.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/templates/page_header.html b/otelcollector/otel-allocator/internal/server/templates/page_header.html new file mode 100644 index 000000000..c7bd0bfd2 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/templates/page_header.html @@ -0,0 +1,16 @@ + + + + {{.Title}} + + + +

{{.Title}}

+ diff --git a/otelcollector/otel-allocator/internal/server/templates/properties_table.html b/otelcollector/otel-allocator/internal/server/templates/properties_table.html new file mode 100644 index 000000000..a4abe9d80 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/templates/properties_table.html @@ -0,0 +1,25 @@ + + + {{- range $index, $name := .Headers }} + + {{- end}} + + {{- $index := 0 }} + {{- range $index, $row := .Rows }} + + {{- range $index, $cell := $row}} + + {{- end}} + + {{- end}} +
+ {{$name}} +
+ {{- if $cell.Link }} + {{$cell.Text}} + {{- else if $cell.Preformatted }} +
{{$cell.Text}}
+ {{- else}} + {{$cell.Text}} + {{- end}} +
diff --git a/otelcollector/otel-allocator/internal/server/templates_test.go b/otelcollector/otel-allocator/internal/server/templates_test.go new file mode 100644 index 000000000..8391b3ca6 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/templates_test.go @@ -0,0 +1,45 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package server + +import ( + "bytes" + "html/template" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const tmplBody = ` +

{{.Index|even}}

+` + +const want = ` +

true

+` + +type testFuncsInput struct { + Index int +} + +var tmpl = template.Must(template.New("countTest").Funcs(templateFunctions).Parse(tmplBody)) + +func TestTemplateFuncs(t *testing.T) { + buf := new(bytes.Buffer) + input := testFuncsInput{ + Index: 32, + } + require.NoError(t, tmpl.Execute(buf, input)) + assert.EqualValues(t, want, buf.String()) +} + +func TestNoCrash(t *testing.T) { + buf := new(bytes.Buffer) + assert.NotPanics(t, func() { WriteHTMLPageHeader(buf, HeaderData{Title: "Foo"}) }) + assert.NotPanics(t, func() { + WriteHTMLPropertiesTable(buf, PropertiesTableData{Headers: []string{"foo"}, Rows: [][]Cell{{NewCell("bar")}}}) + }) + assert.NotPanics(t, func() { WriteHTMLPageFooter(buf) }) +} diff --git a/otelcollector/otel-allocator/internal/server/testdata/collector_empty.html b/otelcollector/otel-allocator/internal/server/testdata/collector_empty.html new file mode 100644 index 000000000..1ec766f9c --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/collector_empty.html @@ -0,0 +1,31 @@ + + + + Collector: test-collector + + + +

Collector: test-collector

+ + + + + + + +
+ Job + + Target + + Endpoint Slice +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/collector_empty_id.html b/otelcollector/otel-allocator/internal/server/testdata/collector_empty_id.html new file mode 100644 index 000000000..85a52eac0 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/collector_empty_id.html @@ -0,0 +1,7 @@ + + +

Bad Request

+

Expected collector_id in the query string

+

Example: /debug/collector?collector_id=my-collector-42

+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/collector_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/collector_multiple.html new file mode 100644 index 000000000..a16cf2594 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/collector_multiple.html @@ -0,0 +1,42 @@ + + + + Collector: test-collector2 + + + +

Collector: test-collector2

+ + + + + + + + + + + + +
+ Job + + Target + + Endpoint Slice +
+ test-job + + test-url + + +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/collector_single.html b/otelcollector/otel-allocator/internal/server/testdata/collector_single.html new file mode 100644 index 000000000..a16cf2594 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/collector_single.html @@ -0,0 +1,42 @@ + + + + Collector: test-collector2 + + + +

Collector: test-collector2

+ + + + + + + + + + + + +
+ Job + + Target + + Endpoint Slice +
+ test-job + + test-url + + +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/collector_unknown_id.html b/otelcollector/otel-allocator/internal/server/testdata/collector_unknown_id.html new file mode 100644 index 000000000..edc8ee2cd --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/collector_unknown_id.html @@ -0,0 +1,5 @@ + + +

Unknown Collector: unknown-collector-1

+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/index_empty.html b/otelcollector/otel-allocator/internal/server/testdata/index_empty.html new file mode 100644 index 000000000..48e100ff7 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/index_empty.html @@ -0,0 +1,87 @@ + + + + OpenTelemetry Target Allocator + + + +

OpenTelemetry Target Allocator

+ + + + + + + + + + + + + + + + + + +
+ Category + + Count +
+ Scrape Configs + + 0 +
+ Jobs + + 0 +
+ Targets + + 0 +
+ + + + + + + + + + + + + + + + +
+ Collector + + Job Count + + Target Count +
+ test-collector1 + + 0 + + 0 +
+ test-collector2 + + 0 + + 0 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/index_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/index_multiple.html new file mode 100644 index 000000000..add01979d --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/index_multiple.html @@ -0,0 +1,87 @@ + + + + OpenTelemetry Target Allocator + + + +

OpenTelemetry Target Allocator

+ + + + + + + + + + + + + + + + + + +
+ Category + + Count +
+ Scrape Configs + + 0 +
+ Jobs + + 2 +
+ Targets + + 3 +
+ + + + + + + + + + + + + + + + +
+ Collector + + Job Count + + Target Count +
+ test-collector1 + + 2 + + 2 +
+ test-collector2 + + 1 + + 1 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/index_single.html b/otelcollector/otel-allocator/internal/server/testdata/index_single.html new file mode 100644 index 000000000..6a6183067 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/index_single.html @@ -0,0 +1,87 @@ + + + + OpenTelemetry Target Allocator + + + +

OpenTelemetry Target Allocator

+ + + + + + + + + + + + + + + + + + +
+ Category + + Count +
+ Scrape Configs + + 0 +
+ Jobs + + 1 +
+ Targets + + 1 +
+ + + + + + + + + + + + + + + + +
+ Collector + + Job Count + + Target Count +
+ test-collector1 + + 1 + + 1 +
+ test-collector2 + + 0 + + 0 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/job_empty.html b/otelcollector/otel-allocator/internal/server/testdata/job_empty.html new file mode 100644 index 000000000..baa2e87c5 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/job_empty.html @@ -0,0 +1,44 @@ + + + + Job: test-job + + + +

Job: test-job

+ + + + + + + + + + + + + + +
+ Collector + + Target Count +
+ test-collector + + 0 +
+ test-collector2 + + 0 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/job_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/job_multiple.html new file mode 100644 index 000000000..ca9db7e9f --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/job_multiple.html @@ -0,0 +1,44 @@ + + + + Job: test-job + + + +

Job: test-job

+ + + + + + + + + + + + + + +
+ Collector + + Target Count +
+ test-collector + + 0 +
+ test-collector2 + + 1 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/job_single.html b/otelcollector/otel-allocator/internal/server/testdata/job_single.html new file mode 100644 index 000000000..ca9db7e9f --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/job_single.html @@ -0,0 +1,44 @@ + + + + Job: test-job + + + +

Job: test-job

+ + + + + + + + + + + + + + +
+ Collector + + Target Count +
+ test-collector + + 0 +
+ test-collector2 + + 1 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/jobs_empty.html b/otelcollector/otel-allocator/internal/server/testdata/jobs_empty.html new file mode 100644 index 000000000..acf09a386 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/jobs_empty.html @@ -0,0 +1,28 @@ + + + + OpenTelemetry Target Allocator - Jobs + + + +

OpenTelemetry Target Allocator - Jobs

+ + + + + + +
+ Job + + Target Count +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/jobs_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/jobs_multiple.html new file mode 100644 index 000000000..90f8182e4 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/jobs_multiple.html @@ -0,0 +1,52 @@ + + + + OpenTelemetry Target Allocator - Jobs + + + +

OpenTelemetry Target Allocator - Jobs

+ + + + + + + + + + + + + + + + + + +
+ Job + + Target Count +
+ job1 + + 1 +
+ job2 + + 1 +
+ job3 + + 3 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/jobs_one.html b/otelcollector/otel-allocator/internal/server/testdata/jobs_one.html new file mode 100644 index 000000000..ba54e7d79 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/jobs_one.html @@ -0,0 +1,36 @@ + + + + OpenTelemetry Target Allocator - Jobs + + + +

OpenTelemetry Target Allocator - Jobs

+ + + + + + + + + + +
+ Job + + Target Count +
+ job1 + + 1 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/target_empty_hash.html b/otelcollector/otel-allocator/internal/server/testdata/target_empty_hash.html new file mode 100644 index 000000000..cc729227b --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/target_empty_hash.html @@ -0,0 +1,7 @@ + + +

Bad Request

+

Expected target_hash in the query string

+

Example: /debug/target?target_hash=my-target-42

+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/target_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/target_multiple.html new file mode 100644 index 000000000..6fbc2825f --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/target_multiple.html @@ -0,0 +1,126 @@ + + + + Target: test-url3 + + + +

Target: test-url3

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ Collector + + test-collector +
+ Job + + test-job2 +
+ Namespace + + +
+ Service Name + + +
+ Service Port + + +
+ Pod Name + + +
+ Container Name + + +
+ Container Port Name + + +
+ Node Name + + +
+ Endpoint Slice Name + + +
+ + + + + + + + + +
+ Label + + Value +
+ test_label + + test-value2 +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/target_single.html b/otelcollector/otel-allocator/internal/server/testdata/target_single.html new file mode 100644 index 000000000..58ab85385 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/target_single.html @@ -0,0 +1,126 @@ + + + + Target: test-url + + + +

Target: test-url

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ Collector + + test-collector2 +
+ Job + + test-job +
+ Namespace + + +
+ Service Name + + +
+ Service Port + + +
+ Pod Name + + +
+ Container Name + + +
+ Container Port Name + + +
+ Node Name + + +
+ Endpoint Slice Name + + +
+ + + + + + + + + +
+ Label + + Value +
+ test_label + + test-value +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/targets_empty.html b/otelcollector/otel-allocator/internal/server/testdata/targets_empty.html new file mode 100644 index 000000000..8c2b35978 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/targets_empty.html @@ -0,0 +1,34 @@ + + + + OpenTelemetry Target Allocator - Targets + + + +

OpenTelemetry Target Allocator - Targets

+ + + + + + + + +
+ Job + + Target + + Collector + + Endpoint Slice +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/targets_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/targets_multiple.html new file mode 100644 index 000000000..39773ea48 --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/targets_multiple.html @@ -0,0 +1,76 @@ + + + + OpenTelemetry Target Allocator - Targets + + + +

OpenTelemetry Target Allocator - Targets

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Job + + Target + + Collector + + Endpoint Slice +
+ test-job2 + + test-url3 + + test-collector1 + + +
+ test-job + + test-url + + test-collector1 + + +
+ test-job + + test-url2 + + test-collector2 + + +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/server/testdata/targets_single.html b/otelcollector/otel-allocator/internal/server/testdata/targets_single.html new file mode 100644 index 000000000..c58933a6e --- /dev/null +++ b/otelcollector/otel-allocator/internal/server/testdata/targets_single.html @@ -0,0 +1,48 @@ + + + + OpenTelemetry Target Allocator - Targets + + + +

OpenTelemetry Target Allocator - Targets

+ + + + + + + + + + + + + + +
+ Job + + Target + + Collector + + Endpoint Slice +
+ test-job + + test-url + + test-collector1 + + +
+ + \ No newline at end of file diff --git a/otelcollector/otel-allocator/internal/target/discovery.go b/otelcollector/otel-allocator/internal/target/discovery.go index 201e6bef2..34da6b33d 100644 --- a/otelcollector/otel-allocator/internal/target/discovery.go +++ b/otelcollector/otel-allocator/internal/target/discovery.go @@ -4,6 +4,7 @@ package target import ( + "context" "hash" "hash/fnv" "sync" @@ -11,52 +12,35 @@ import ( "github.com/go-logr/logr" go_yaml "github.com/goccy/go-yaml" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/common/model" promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/discovery/targetgroup" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/model/relabel" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" "go.uber.org/zap/zapcore" allocatorWatcher "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/watcher" ) -const labelBuilderPreallocSize = 100 - -var ( - targetsDiscovered = promauto.NewGaugeVec(prometheus.GaugeOpts{ - Name: "opentelemetry_allocator_targets", - Help: "Number of targets discovered.", - }, []string{"job_name"}) - - processTargetsDuration = promauto.NewHistogram(prometheus.HistogramOpts{ - Name: "opentelemetry_allocator_process_targets_duration_seconds", - Help: "Duration of processing targets.", - Buckets: []float64{1, 5, 10, 30, 60, 120}, - }) - - processTargetGroupsDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ - Name: "opentelemetry_allocator_process_target_groups_duration_seconds", - Help: "Duration of processing target groups.", - Buckets: []float64{1, 5, 10, 30, 60, 120}, - }, []string{"job_name"}) -) - type Discoverer struct { - log logr.Logger - manager *discovery.Manager - close chan struct{} - mtxScrape sync.Mutex // Guards the fields below. - configsMap map[allocatorWatcher.EventSource][]*promconfig.ScrapeConfig - hook discoveryHook - scrapeConfigsHash hash.Hash - scrapeConfigsUpdater scrapeConfigsUpdater - targetSets map[string][]*targetgroup.Group - triggerReload chan struct{} - processTargetsCallBack func(targets []*Item) + log logr.Logger + manager *discovery.Manager + close chan struct{} + mtxScrape sync.Mutex // Guards the fields below. + configsMap map[allocatorWatcher.EventSource][]*promconfig.ScrapeConfig + hook discoveryHook + scrapeConfigsHash hash.Hash + scrapeConfigsUpdater scrapeConfigsUpdater + targetSets map[string][]*targetgroup.Group + triggerReload chan struct{} + processTargetsCallBack func(targets []*Item) + targetsDiscovered metric.Float64Gauge + processTargetsDuration metric.Float64Histogram + processTargetGroupsDuration metric.Float64Histogram } type discoveryHook interface { @@ -67,18 +51,36 @@ type scrapeConfigsUpdater interface { UpdateScrapeConfigResponse(map[string]*promconfig.ScrapeConfig) error } -func NewDiscoverer(log logr.Logger, manager *discovery.Manager, hook discoveryHook, scrapeConfigsUpdater scrapeConfigsUpdater, setTargets func(targets []*Item)) *Discoverer { - return &Discoverer{ - log: log, - manager: manager, - close: make(chan struct{}), - triggerReload: make(chan struct{}, 1), - configsMap: make(map[allocatorWatcher.EventSource][]*promconfig.ScrapeConfig), - hook: hook, - scrapeConfigsHash: nil, // we want the first update to succeed even if the config is empty - scrapeConfigsUpdater: scrapeConfigsUpdater, - processTargetsCallBack: setTargets, +func NewDiscoverer(log logr.Logger, manager *discovery.Manager, hook discoveryHook, scrapeConfigsUpdater scrapeConfigsUpdater, setTargets func(targets []*Item)) (*Discoverer, error) { + meter := otel.GetMeterProvider().Meter("targetallocator") + targetsDiscovered, err := meter.Float64Gauge("opentelemetry_allocator_targets", metric.WithDescription("Number of targets discovered.")) + if err != nil { + return nil, err + } + processTargetsDuration, err := meter.Float64Histogram("opentelemetry_allocator_process_targets_duration_seconds", + metric.WithDescription("Duration of processing targets."), metric.WithExplicitBucketBoundaries(1, 5, 10, 30, 60, 120)) + if err != nil { + return nil, err } + processTargetGroupsDuration, err := meter.Float64Histogram("opentelemetry_allocator_process_target_groups_duration_seconds", + metric.WithDescription("Duration of processing target groups."), metric.WithExplicitBucketBoundaries(1, 5, 10, 30, 60, 120)) + if err != nil { + return nil, err + } + return &Discoverer{ + log: log, + manager: manager, + close: make(chan struct{}), + triggerReload: make(chan struct{}, 1), + configsMap: make(map[allocatorWatcher.EventSource][]*promconfig.ScrapeConfig), + hook: hook, + scrapeConfigsHash: nil, // we want the first update to succeed even if the config is empty + scrapeConfigsUpdater: scrapeConfigsUpdater, + processTargetsCallBack: setTargets, + targetsDiscovered: targetsDiscovered, + processTargetsDuration: processTargetsDuration, + processTargetGroupsDuration: processTargetGroupsDuration, + }, nil } func (m *Discoverer) ApplyConfig(source allocatorWatcher.EventSource, scrapeConfigs []*promconfig.ScrapeConfig) error { @@ -164,8 +166,10 @@ func (m *Discoverer) reloader() { func (m *Discoverer) Reload() { m.mtxScrape.Lock() var wg sync.WaitGroup - timer := prometheus.NewTimer(processTargetsDuration) - defer timer.ObserveDuration() + begin := time.Now() + defer func() { + m.processTargetsDuration.Record(context.Background(), time.Since(begin).Seconds()) + }() // count targets and preallocate targetCount := 0 @@ -195,29 +199,32 @@ func (m *Discoverer) Reload() { // processTargetGroups processes the target groups and returns a map of targets. func (m *Discoverer) processTargetGroups(jobName string, groups []*targetgroup.Group, intoTargets []*Item) { - groupBuilder := labels.NewScratchBuilder(labelBuilderPreallocSize) - timer := prometheus.NewTimer(processTargetGroupsDuration.WithLabelValues(jobName)) + builder := labels.NewBuilder(labels.Labels{}) - defer timer.ObserveDuration() + begin := time.Now() + defer func() { + m.processTargetGroupsDuration.Record(context.Background(), time.Since(begin).Seconds(), metric.WithAttributes(attribute.String("job.name", jobName))) + }() var count float64 = 0 index := 0 for _, tg := range groups { - groupBuilder.Reset() + builder.Reset(labels.EmptyLabels()) for ln, lv := range tg.Labels { - groupBuilder.Add(string(ln), string(lv)) + builder.Set(string(ln), string(lv)) } + groupLabels := builder.Labels() for _, t := range tg.Targets { count++ - targetBuilder := groupBuilder + builder.Reset(groupLabels) for ln, lv := range t { - targetBuilder.Add(string(ln), string(lv)) + builder.Set(string(ln), string(lv)) } - item := NewItem(jobName, string(t[model.AddressLabel]), targetBuilder.Labels(), "") + item := NewItem(jobName, string(t[model.AddressLabel]), builder.Labels(), "") intoTargets[index] = item index++ } } - targetsDiscovered.WithLabelValues(jobName).Set(count) + m.targetsDiscovered.Record(context.Background(), count, metric.WithAttributes(attribute.String("job.name", jobName))) } // Run receives and saves target set updates and triggers the scraping loops reloading. diff --git a/otelcollector/otel-allocator/internal/target/discovery_test.go b/otelcollector/otel-allocator/internal/target/discovery_test.go index cf59a7a7f..23e21b25d 100644 --- a/otelcollector/otel-allocator/internal/target/discovery_test.go +++ b/otelcollector/otel-allocator/internal/target/discovery_test.go @@ -16,6 +16,7 @@ import ( "github.com/prometheus/common/model" promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/targetgroup" "github.com/prometheus/prometheus/model/relabel" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -62,13 +63,14 @@ func TestDiscovery(t *testing.T) { require.NoError(t, err) d := discovery.NewManager(ctx, config.NopLogger, registry, sdMetrics) results := make(chan []string) - manager := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, func(targets []*Item) { + manager, err := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, func(targets []*Item) { var result []string for _, t := range targets { result = append(result, t.TargetURL) } results <- result }) + require.NoError(t, err) defer func() { manager.Close() }() defer cancelFunc() @@ -309,7 +311,8 @@ func TestDiscovery_ScrapeConfigHashing(t *testing.T) { sdMetrics, err := discovery.CreateAndRegisterSDMetrics(registry) require.NoError(t, err) d := discovery.NewManager(ctx, config.NopLogger, registry, sdMetrics) - manager := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, nil) + manager, err := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, nil) + require.NoError(t, err) for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { @@ -400,11 +403,12 @@ func TestDiscoveryTargetHashing(t *testing.T) { require.NoError(t, err) d := discovery.NewManager(ctx, config.NopLogger, registry, sdMetrics) results := make(chan []*Item) - manager := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, func(targets []*Item) { + manager, err := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, func(targets []*Item) { var result []*Item result = append(result, targets...) results <- result }) + require.NoError(t, err) defer manager.Close() defer cancelFunc() @@ -448,7 +452,8 @@ func TestDiscovery_NoConfig(t *testing.T) { sdMetrics, err := discovery.CreateAndRegisterSDMetrics(registry) require.NoError(t, err) d := discovery.NewManager(ctx, config.NopLogger, registry, sdMetrics) - manager := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, nil) + manager, err := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, nil) + require.NoError(t, err) defer close(manager.close) defer cancelFunc() @@ -461,6 +466,48 @@ func TestDiscovery_NoConfig(t *testing.T) { assert.Equal(t, expectedScrapeConfigs, scu.mockCfg) } +func TestProcessTargetGroups_StableLabelIterationOrder(t *testing.T) { + // Labels are used to compute the hash of targets and hashing is + // reliant on consistent ordering of labels. Creating one label + // per letter of the english alphabet is enough to reliably + // reproduce inconsistent label ordering due to non-deterministic + // map iteration order + lack of sorting. + groupLabels := model.LabelSet{} + for i := 'a'; i <= 'm'; i++ { + groupLabels[model.LabelName(i)] = model.LabelValue(i) + } + + targetLabels := model.LabelSet{} + for i := 'n'; i <= 'z'; i++ { + targetLabels[model.LabelName(i)] = model.LabelValue(i) + } + + groups := []*targetgroup.Group{ + { + Labels: groupLabels, + Source: "", + Targets: []model.LabelSet{targetLabels}, + }, + } + + results := make([]*Item, 1) + scu := &mockScrapeConfigUpdater{} + ctx := context.Background() + registry := prometheus.NewRegistry() + sdMetrics, err := discovery.CreateAndRegisterSDMetrics(registry) + require.NoError(t, err) + manager := discovery.NewManager(ctx, config.NopLogger, registry, sdMetrics) + d, err := NewDiscoverer(ctrl.Log.WithName("test"), manager, nil, scu, nil) + require.NoError(t, err) + d.processTargetGroups("test", groups, results) + + for i, l := range results[0].Labels { + expected := string(rune('a' + i)) + assert.Equal(t, expected, l.Name, "unexpected label key at index %d", i) + assert.Equal(t, expected, l.Value, "unexpected label value at index %d", i) + } +} + func BenchmarkApplyScrapeConfig(b *testing.B) { numConfigs := 1000 scrapeConfig := promconfig.ScrapeConfig{ @@ -498,7 +545,8 @@ func BenchmarkApplyScrapeConfig(b *testing.B) { sdMetrics, err := discovery.CreateAndRegisterSDMetrics(registry) require.NoError(b, err) d := discovery.NewManager(ctx, config.NopLogger, registry, sdMetrics) - manager := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, nil) + manager, err := NewDiscoverer(ctrl.Log.WithName("test"), d, nil, scu, nil) + require.NoError(b, err) b.ResetTimer() for i := 0; i < b.N; i++ { diff --git a/otelcollector/otel-allocator/internal/target/target.go b/otelcollector/otel-allocator/internal/target/target.go index ca59cdccf..c8a1ad388 100644 --- a/otelcollector/otel-allocator/internal/target/target.go +++ b/otelcollector/otel-allocator/internal/target/target.go @@ -4,6 +4,8 @@ package target import ( + "strconv" + "github.com/cespare/xxhash/v2" "github.com/prometheus/prometheus/model/labels" ) @@ -19,11 +21,17 @@ var ( } endpointSliceTargetKindLabel = "__meta_kubernetes_endpointslice_address_target_kind" endpointSliceTargetNameLabel = "__meta_kubernetes_endpointslice_address_target_name" + endpointSliceName = "__meta_kubernetes_endpointslice_name" relevantLabelNames = append(nodeLabels, endpointSliceTargetKindLabel, endpointSliceTargetNameLabel) ) type ItemHash uint64 +func (h ItemHash) String() string { + return strconv.FormatUint(uint64(h), 10) +} + +// Item represents a target to be scraped. type Item struct { JobName string TargetURL string @@ -54,6 +62,12 @@ func (t *Item) GetNodeName() string { return relevantLabels.Get(endpointSliceTargetNameLabel) } +// GetEndpointSliceName returns the name of the EndpointSlice that the target is part of. +// If the target is not part of an EndpointSlice, it returns an empty string. +func (t *Item) GetEndpointSliceName() string { + return t.Labels.Get(endpointSliceName) +} + // NewItem Creates a new target item. // INVARIANTS: // * Item fields must not be modified after creation. diff --git a/otelcollector/otel-allocator/internal/target/target_test.go b/otelcollector/otel-allocator/internal/target/target_test.go new file mode 100644 index 000000000..a5fd5b725 --- /dev/null +++ b/otelcollector/otel-allocator/internal/target/target_test.go @@ -0,0 +1,34 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package target + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestItemHash_String(t *testing.T) { + tests := []struct { + name string + h ItemHash + want string + }{ + { + name: "empty", + h: 0, + want: "0", + }, + { + name: "non-empty", + h: 1, + want: "1", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equalf(t, tt.want, tt.h.String(), "String()") + }) + } +} diff --git a/otelcollector/otel-allocator/internal/watcher/promOperator.go b/otelcollector/otel-allocator/internal/watcher/promOperator.go index 341977026..4ea16f7b7 100644 --- a/otelcollector/otel-allocator/internal/watcher/promOperator.go +++ b/otelcollector/otel-allocator/internal/watcher/promOperator.go @@ -28,7 +28,6 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" - "k8s.io/client-go/metadata" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/retry" @@ -54,17 +53,11 @@ func NewPrometheusCRWatcher(ctx context.Context, logger logr.Logger, cfg allocat return nil, err } - mdClient, err := metadata.NewForConfig(cfg.ClusterConfig) - if err != nil { - return nil, err - } - allowList, denyList := cfg.PrometheusCR.GetAllowDenyLists() - monitoringInformerFactory := informers.NewMonitoringInformerFactories(allowList, denyList, mClient, allocatorconfig.DefaultResyncTime, nil) - metaDataInformerFactory := informers.NewMetadataInformerFactory(allowList, denyList, mdClient, allocatorconfig.DefaultResyncTime, nil) - monitoringInformers, err := getInformers(monitoringInformerFactory, metaDataInformerFactory) + factory := informers.NewMonitoringInformerFactories(allowList, denyList, mClient, allocatorconfig.DefaultResyncTime, nil) + monitoringInformers, err := getInformers(factory) if err != nil { return nil, err } @@ -196,7 +189,7 @@ func getNamespaceInformer(ctx context.Context, allowList, denyList map[string]st } // getInformers returns a map of informers for the given resources. -func getInformers(factory informers.FactoriesForNamespaces, metaDataInformerFactory informers.FactoriesForNamespaces) (map[string]*informers.ForResource, error) { +func getInformers(factory informers.FactoriesForNamespaces) (map[string]*informers.ForResource, error) { serviceMonitorInformers, err := informers.NewInformersForResource(factory, monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.ServiceMonitorName)) if err != nil { return nil, err @@ -217,17 +210,11 @@ func getInformers(factory informers.FactoriesForNamespaces, metaDataInformerFact return nil, err } - secretInformers, err := informers.NewInformersForResourceWithTransform(metaDataInformerFactory, v1.SchemeGroupVersion.WithResource(string(v1.ResourceSecrets)), informers.PartialObjectMetadataStrip) - if err != nil { - return nil, err - } - return map[string]*informers.ForResource{ monitoringv1.ServiceMonitorName: serviceMonitorInformers, monitoringv1.PodMonitorName: podMonitorInformers, monitoringv1.ProbeName: probeInformers, promv1alpha1.ScrapeConfigName: scrapeConfigInformers, - string(v1.ResourceSecrets): secretInformers, }, nil } @@ -288,131 +275,29 @@ func (w *PrometheusCRWatcher) Watch(upstreamEvents chan Event, upstreamErrors ch continue } - // Use a custom event handler for secrets since secret update requires asset store to be updated so that CRs can pick up updated secrets. - if name == string(v1.ResourceSecrets) { - w.logger.Info("Using custom event handler for secrets informer", "informer", name) - // only send an event notification if there isn't one already - resource.AddEventHandler(cache.ResourceEventHandlerFuncs{ - // these functions only write to the notification channel if it's empty to avoid blocking - // if scrape config updates are being rate-limited - AddFunc: func(obj interface{}) { - select { - case notifyEvents <- struct{}{}: - default: - } - }, - UpdateFunc: func(oldObj, newObj interface{}) { - oldMeta, _ := oldObj.(metav1.ObjectMetaAccessor) - newMeta, _ := newObj.(metav1.ObjectMetaAccessor) - secretName := newMeta.GetObjectMeta().GetName() - secretNamespace := newMeta.GetObjectMeta().GetNamespace() - _, exists, err := w.store.GetObject(&v1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: secretName, - Namespace: secretNamespace, - }, - }) - if !exists || err != nil { - if err != nil { - w.logger.Error("unexpected store error when checking if secret exists, skipping update", secretName, "error", err) - return - } - // if the secret does not exist in the store, we skip the update - return - } - - newSecret, err := w.store.GetSecretClient().Secrets(secretNamespace).Get(context.Background(), secretName, metav1.GetOptions{}) - - if err != nil { - w.logger.Error("unexpected store error when getting updated secret - ", secretName, "error", err) - return - } - - w.logger.Info("Updating secret in store", "newObjName", newMeta.GetObjectMeta().GetName(), "newobjnamespace", newMeta.GetObjectMeta().GetNamespace()) - if err := w.store.UpdateObject(newSecret); err != nil { - w.logger.Error("unexpected store error when updating secret - ", newMeta.GetObjectMeta().GetName(), "error", err) - } else { - w.logger.Info( - "Successfully updated store, sending update event to notifyEvents channel", - "oldObjName", oldMeta.GetObjectMeta().GetName(), - "oldobjnamespace", oldMeta.GetObjectMeta().GetNamespace(), - "newObjName", newMeta.GetObjectMeta().GetName(), - "newobjnamespace", newMeta.GetObjectMeta().GetNamespace(), - ) - select { - case notifyEvents <- struct{}{}: - default: - } - } - }, - DeleteFunc: func(obj interface{}) { - secretMeta, _ := obj.(metav1.ObjectMetaAccessor) - - secretName := secretMeta.GetObjectMeta().GetName() - secretNamespace := secretMeta.GetObjectMeta().GetNamespace() - - // check if the secret exists in the store - secretObj := &v1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: secretName, - Namespace: secretNamespace, - }, - } - _, exists, err := w.store.GetObject(secretObj) - // if the secret does not exist in the store, we skip the delete - if !exists || err != nil { - if err != nil { - w.logger.Error("unexpected store error when checking if secret exists, skipping delete", secretMeta.GetObjectMeta().GetName(), "error", err) - return - } - // if the secret does not exist in the store, we skip the delete - return - } - w.logger.Info("Deleting secret from store", "objName", secretMeta.GetObjectMeta().GetName(), "objnamespace", secretMeta.GetObjectMeta().GetNamespace()) - // if the secret exists in the store, we delete it - // and send an event notification to the notifyEvents channel - if err := w.store.DeleteObject(secretObj); err != nil { - w.logger.Error("unexpected store error when deleting secret - ", secretMeta.GetObjectMeta().GetName(), "error", err) - //return - } else { - w.logger.Info( - "Successfully removed secret from store, sending update event to notifyEvents channel", - "objName", secretMeta.GetObjectMeta().GetName(), - "objnamespace", secretMeta.GetObjectMeta().GetNamespace(), - ) - select { - case notifyEvents <- struct{}{}: - default: - } - } - }, - }) - } else { - w.logger.Info("Using default event handler for informer", "informer", name) - // only send an event notification if there isn't one already - resource.AddEventHandler(cache.ResourceEventHandlerFuncs{ - // these functions only write to the notification channel if it's empty to avoid blocking - // if scrape config updates are being rate-limited - AddFunc: func(obj interface{}) { - select { - case notifyEvents <- struct{}{}: - default: - } - }, - UpdateFunc: func(oldObj, newObj interface{}) { - select { - case notifyEvents <- struct{}{}: - default: - } - }, - DeleteFunc: func(obj interface{}) { - select { - case notifyEvents <- struct{}{}: - default: - } - }, - }) - } + // only send an event notification if there isn't one already + resource.AddEventHandler(cache.ResourceEventHandlerFuncs{ + // these functions only write to the notification channel if it's empty to avoid blocking + // if scrape config updates are being rate-limited + AddFunc: func(obj interface{}) { + select { + case notifyEvents <- struct{}{}: + default: + } + }, + UpdateFunc: func(oldObj, newObj interface{}) { + select { + case notifyEvents <- struct{}{}: + default: + } + }, + DeleteFunc: func(obj interface{}) { + select { + case notifyEvents <- struct{}{}: + default: + } + }, + }) } if !success { return fmt.Errorf("failed to sync one of the caches") diff --git a/otelcollector/otel-allocator/main.go b/otelcollector/otel-allocator/main.go index 1d18a5632..afeb30c35 100644 --- a/otelcollector/otel-allocator/main.go +++ b/otelcollector/otel-allocator/main.go @@ -13,8 +13,12 @@ import ( "github.com/oklog/run" "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/prometheus/discovery" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + otelprom "go.opentelemetry.io/otel/exporters/prometheus" + "go.opentelemetry.io/otel/metric" + sdkmetric "go.opentelemetry.io/otel/sdk/metric" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" ctrl "sigs.k8s.io/controller-runtime" @@ -28,14 +32,15 @@ import ( ) var ( - setupLog = ctrl.Log.WithName("setup") - eventsMetric = promauto.NewCounterVec(prometheus.CounterOpts{ - Name: "opentelemetry_allocator_events", - Help: "Number of events in the channel.", - }, []string{"source"}) + setupLog = ctrl.Log.WithName("setup") ) func main() { + // EULA statement is required for Arc extension + clusterResourceId := os.Getenv("CLUSTER") + if strings.EqualFold(clusterResourceId, "connectedclusters") { + setupLog.Info("MICROSOFT SOFTWARE LICENSE TERMS\n\nMICROSOFT Azure Arc-enabled Kubernetes\n\nThis software is licensed to you as part of your or your company's subscription license for Microsoft Azure Services. You may only use the software with Microsoft Azure Services and subject to the terms and conditions of the agreement under which you obtained Microsoft Azure Services. If you do not have an active subscription license for Microsoft Azure Services, you may not use the software. Microsoft Azure Legal Information: https://azure.microsoft.com/en-us/support/legal/") + } var ( // allocatorPrehook will be nil if filterStrategy is not set or // unrecognized. No filtering will be used in this case. @@ -43,7 +48,6 @@ func main() { allocator allocation.Allocator discoveryManager *discovery.Manager collectorWatcher *collector.Watcher - promWatcher allocatorWatcher.Watcher targetDiscoverer *target.Discoverer discoveryCancel context.CancelFunc @@ -53,14 +57,9 @@ func main() { interrupts = make(chan os.Signal, 1) errChan = make(chan error) ) - // EULA statement is required for Arc extension - clusterResourceId := os.Getenv("CLUSTER") - if strings.EqualFold(clusterResourceId, "connectedclusters") { - setupLog.Info("MICROSOFT SOFTWARE LICENSE TERMS\n\nMICROSOFT Azure Arc-enabled Kubernetes\n\nThis software is licensed to you as part of your or your company's subscription license for Microsoft Azure Services. You may only use the software with Microsoft Azure Services and subject to the terms and conditions of the agreement under which you obtained Microsoft Azure Services. If you do not have an active subscription license for Microsoft Azure Services, you may not use the software. Microsoft Azure Legal Information: https://azure.microsoft.com/en-us/support/legal/") - } - cfg, err := config.Load(os.Args) - if err != nil { - fmt.Printf("Failed to load config: %v", err) + cfg, loadErr := config.Load(os.Args) + if loadErr != nil { + fmt.Printf("Failed to load config: %v", loadErr) os.Exit(1) } ctrl.SetLogger(cfg.RootLogger) @@ -74,10 +73,17 @@ func main() { ctx := context.Background() log := ctrl.Log.WithName("allocator") + metricExporter, promErr := otelprom.New() + if promErr != nil { + panic(promErr) + } + meterProvider := sdkmetric.NewMeterProvider(sdkmetric.WithReader(metricExporter)) + otel.SetMeterProvider(meterProvider) + allocatorPrehook = prehook.New(cfg.FilterStrategy, log) - allocator, err = allocation.New(cfg.AllocationStrategy, log, allocation.WithFilter(allocatorPrehook), allocation.WithFallbackStrategy(cfg.AllocationFallbackStrategy)) - if err != nil { - setupLog.Error(err, "Unable to initialize allocation strategy") + allocator, allocErr := allocation.New(cfg.AllocationStrategy, log, allocation.WithFilter(allocatorPrehook), allocation.WithFallbackStrategy(cfg.AllocationFallbackStrategy)) + if allocErr != nil { + setupLog.Error(allocErr, "Unable to initialize allocation strategy") os.Exit(1) } @@ -90,17 +96,23 @@ func main() { } httpOptions = append(httpOptions, server.WithTLSConfig(tlsConfig, cfg.HTTPS.ListenAddr)) } - srv := server.NewServer(log, allocator, cfg.ListenAddr, httpOptions...) + srv, serverErr := server.NewServer(log, allocator, cfg.ListenAddr, httpOptions...) + if serverErr != nil { + panic(serverErr) + } discoveryCtx, discoveryCancel := context.WithCancel(ctx) - sdMetrics, err := discovery.CreateAndRegisterSDMetrics(prometheus.DefaultRegisterer) - if err != nil { - setupLog.Error(err, "Unable to register metrics for Prometheus service discovery") + sdMetrics, discErr := discovery.CreateAndRegisterSDMetrics(prometheus.DefaultRegisterer) + if discErr != nil { + setupLog.Error(discErr, "Unable to register metrics for Prometheus service discovery") os.Exit(1) } discoveryManager = discovery.NewManager(discoveryCtx, config.NopLogger, prometheus.DefaultRegisterer, sdMetrics) - targetDiscoverer = target.NewDiscoverer(log, discoveryManager, allocatorPrehook, srv, allocator.SetTargets) + targetDiscoverer, targetErr := target.NewDiscoverer(log, discoveryManager, allocatorPrehook, srv, allocator.SetTargets) + if targetErr != nil { + panic(targetErr) + } collectorWatcher, collectorWatcherErr := collector.NewCollectorWatcher(log, cfg.ClusterConfig, cfg.CollectorNotReadyGracePeriod) if collectorWatcherErr != nil { setupLog.Error(collectorWatcherErr, "Unable to initialize collector watcher") @@ -110,20 +122,20 @@ func main() { defer close(interrupts) if cfg.PrometheusCR.Enabled { - promWatcher, err = allocatorWatcher.NewPrometheusCRWatcher(ctx, setupLog.WithName("prometheus-cr-watcher"), *cfg) - if err != nil { - setupLog.Error(err, "Can't start the prometheus watcher") + promWatcher, allocErr := allocatorWatcher.NewPrometheusCRWatcher(ctx, setupLog.WithName("prometheus-cr-watcher"), *cfg) + if allocErr != nil { + setupLog.Error(allocErr, "Can't start the prometheus watcher") os.Exit(1) } // apply the initial configuration promConfig, loadErr := promWatcher.LoadConfig(ctx) if loadErr != nil { - setupLog.Error(err, "Can't load initial Prometheus configuration from Prometheus CRs") + setupLog.Error(loadErr, "Can't load initial Prometheus configuration from Prometheus CRs") os.Exit(1) } loadErr = targetDiscoverer.ApplyConfig(allocatorWatcher.EventSourcePrometheusCR, promConfig.ScrapeConfigs) if loadErr != nil { - setupLog.Error(err, "Can't load initial scrape targets from Prometheus CRs") + setupLog.Error(loadErr, "Can't load initial scrape targets from Prometheus CRs") os.Exit(1) } runGroup.Add( @@ -154,7 +166,7 @@ func main() { func() error { // Initial loading of the config file's scrape config if cfg.PromConfig != nil && len(cfg.PromConfig.ScrapeConfigs) > 0 { - err = targetDiscoverer.ApplyConfig(allocatorWatcher.EventSourceConfigMap, cfg.PromConfig.ScrapeConfigs) + err := targetDiscoverer.ApplyConfig(allocatorWatcher.EventSourceConfigMap, cfg.PromConfig.ScrapeConfigs) if err != nil { setupLog.Error(err, "Unable to apply initial configuration") return err @@ -207,12 +219,17 @@ func main() { } }) } + meter := otel.GetMeterProvider().Meter("targetallocator") + eventsMetric, err := meter.Int64Counter("opentelemetry_allocator_events", metric.WithDescription("Number of events in the channel.")) + if err != nil { + panic(err) + } runGroup.Add( func() error { for { select { case event := <-eventChan: - eventsMetric.WithLabelValues(event.Source.String()).Inc() + eventsMetric.Add(context.Background(), 1, metric.WithAttributes(attribute.String("source", event.Source.String()))) loadConfig, err := event.Watcher.LoadConfig(ctx) if err != nil { setupLog.Error(err, "Unable to load configuration") diff --git a/otelcollector/prom-config-validator-builder/go.mod b/otelcollector/prom-config-validator-builder/go.mod index d48b04cda..8a4aa00a3 100644 --- a/otelcollector/prom-config-validator-builder/go.mod +++ b/otelcollector/prom-config-validator-builder/go.mod @@ -3,35 +3,35 @@ module github.com/microsoft/prometheus-collector/otelcollector/prom-config-valid go 1.23.0 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.127.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.129.0 github.com/prometheus-collector/shared v0.0.0-00010101000000-000000000000 - go.opentelemetry.io/collector/component v1.33.0 - go.opentelemetry.io/collector/confmap v1.33.0 - go.opentelemetry.io/collector/confmap/provider/envprovider v1.33.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0 - go.opentelemetry.io/collector/exporter v0.127.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.127.0 - go.opentelemetry.io/collector/extension v1.33.0 - go.opentelemetry.io/collector/otelcol v0.127.0 - go.opentelemetry.io/collector/processor v1.33.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.127.0 - go.opentelemetry.io/collector/receiver v1.33.0 + go.opentelemetry.io/collector/component v1.35.0 + go.opentelemetry.io/collector/confmap v1.35.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v1.35.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0 + go.opentelemetry.io/collector/exporter v0.129.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.129.0 + go.opentelemetry.io/collector/extension v1.35.0 + go.opentelemetry.io/collector/otelcol v0.129.0 + go.opentelemetry.io/collector/processor v1.35.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.129.0 + go.opentelemetry.io/collector/receiver v1.35.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go/auth v0.15.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect + cloud.google.com/go/auth v0.16.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.6.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect @@ -40,19 +40,18 @@ require ( github.com/antchfx/xpath v1.3.4 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go v1.55.6 // indirect + github.com/aws/aws-sdk-go v1.55.7 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dennwc/varint v1.0.0 // indirect - github.com/digitalocean/godo v1.132.0 // indirect + github.com/digitalocean/godo v1.144.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.0.1+incompatible // indirect + github.com/docker/docker v28.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.4 // indirect @@ -62,7 +61,7 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect - github.com/expr-lang/expr v1.17.3 // indirect + github.com/expr-lang/expr v1.17.5 // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -83,8 +82,8 @@ require ( github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-openapi/validate v0.24.0 // indirect - github.com/go-resty/resty/v2 v2.16.3 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-resty/resty/v2 v2.16.5 // indirect + github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/goccy/go-json v0.10.5 // indirect @@ -100,13 +99,13 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.5 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect github.com/googleapis/gax-go/v2 v2.14.1 // indirect - github.com/gophercloud/gophercloud/v2 v2.4.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect - github.com/hashicorp/consul/api v1.31.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/hashicorp/consul/api v1.32.0 // indirect github.com/hashicorp/cronexpr v1.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -120,11 +119,10 @@ require ( github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.18.0 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.21.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect - github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.3.2 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.3.3 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect @@ -133,10 +131,10 @@ require ( github.com/klauspost/compress v1.18.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect - github.com/knadh/koanf/v2 v2.2.0 // indirect + github.com/knadh/koanf/v2 v2.2.1 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.46.0 // indirect + github.com/linode/linodego v1.49.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magefile/mage v1.15.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -144,7 +142,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.4.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect - github.com/miekg/dns v1.1.63 // indirect + github.com/miekg/dns v1.1.65 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect @@ -156,36 +154,38 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/oklog/ulid v1.3.1 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.127.0 // indirect + github.com/oklog/ulid/v2 v2.1.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.129.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect - github.com/ovh/go-ovh v1.6.0 // indirect + github.com/ovh/go-ovh v1.7.0 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/alertmanager v0.28.0 // indirect + github.com/prometheus/alertmanager v0.28.1 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/common/assets v0.2.0 // indirect github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect - github.com/prometheus/prometheus v0.302.1 // indirect - github.com/prometheus/sigv4 v0.1.1 // indirect + github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 // indirect + github.com/prometheus/procfs v0.16.1 // indirect + github.com/prometheus/prometheus v0.304.1 // indirect + github.com/prometheus/sigv4 v0.1.2 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 // indirect - github.com/shirou/gopsutil/v4 v4.25.4 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect + github.com/shirou/gopsutil/v4 v4.25.5 // indirect github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/pflag v1.0.6 // indirect @@ -199,108 +199,110 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector v0.127.0 // indirect - go.opentelemetry.io/collector/client v1.33.0 // indirect - go.opentelemetry.io/collector/component/componentstatus v0.127.0 // indirect - go.opentelemetry.io/collector/component/componenttest v0.127.0 // indirect - go.opentelemetry.io/collector/config/configauth v0.127.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.33.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.127.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.127.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v0.127.0 // indirect - go.opentelemetry.io/collector/config/confignet v1.33.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.33.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.33.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.127.0 // indirect - go.opentelemetry.io/collector/config/configtls v1.33.0 // indirect - go.opentelemetry.io/collector/confmap/xconfmap v0.127.0 // indirect - go.opentelemetry.io/collector/connector v0.127.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.127.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.127.0 // indirect - go.opentelemetry.io/collector/consumer v1.33.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/consumertest v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.33.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.127.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.127.0 // indirect - go.opentelemetry.io/collector/featuregate v1.33.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.127.0 // indirect - go.opentelemetry.io/collector/pdata v1.33.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.127.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.127.0 // indirect - go.opentelemetry.io/collector/pipeline v0.127.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper v0.127.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.127.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.127.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.127.0 // indirect - go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0 // indirect - go.opentelemetry.io/collector/receiver/receivertest v0.127.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.127.0 // indirect - go.opentelemetry.io/collector/semconv v0.127.0 // indirect - go.opentelemetry.io/collector/service v0.127.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.127.0 // indirect - go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/contrib/otelconf v0.15.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.35.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.57.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0 // indirect - go.opentelemetry.io/otel/log v0.11.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.11.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/collector v0.129.0 // indirect + go.opentelemetry.io/collector/client v1.35.0 // indirect + go.opentelemetry.io/collector/component/componentstatus v0.129.0 // indirect + go.opentelemetry.io/collector/component/componenttest v0.129.0 // indirect + go.opentelemetry.io/collector/config/configauth v0.129.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.35.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.129.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.129.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v0.129.0 // indirect + go.opentelemetry.io/collector/config/confignet v1.35.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.35.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.35.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.129.0 // indirect + go.opentelemetry.io/collector/config/configtls v1.35.0 // indirect + go.opentelemetry.io/collector/confmap/xconfmap v0.129.0 // indirect + go.opentelemetry.io/collector/connector v0.129.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.129.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.129.0 // indirect + go.opentelemetry.io/collector/consumer v1.35.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/consumertest v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.35.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.129.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.129.0 // indirect + go.opentelemetry.io/collector/featuregate v1.35.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.129.0 // indirect + go.opentelemetry.io/collector/pdata v1.35.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.129.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.129.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.129.0 // indirect + go.opentelemetry.io/collector/pipeline v0.129.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper v0.129.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.129.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.129.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.129.0 // indirect + go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0 // indirect + go.opentelemetry.io/collector/receiver/receivertest v0.129.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.129.0 // indirect + go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 // indirect + go.opentelemetry.io/collector/service v0.129.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.129.0 // indirect + go.opentelemetry.io/contrib/bridges/otelzap v0.11.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.16.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.36.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.58.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 // indirect + go.opentelemetry.io/otel/log v0.12.2 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.12.2 // indirect + go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.uber.org/zap/exp v0.3.0 // indirect - golang.org/x/crypto v0.38.0 // indirect - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect - golang.org/x/mod v0.24.0 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sync v0.14.0 // indirect + golang.org/x/crypto v0.39.0 // indirect + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/net v0.41.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.11.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.34.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.226.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.72.1 // indirect + google.golang.org/api v0.230.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.31.3 // indirect - k8s.io/apimachinery v0.32.0 // indirect - k8s.io/client-go v0.31.3 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect diff --git a/otelcollector/prom-config-validator-builder/go.sum b/otelcollector/prom-config-validator-builder/go.sum index cedba73f0..2e20d9be1 100644 --- a/otelcollector/prom-config-validator-builder/go.sum +++ b/otelcollector/prom-config-validator-builder/go.sum @@ -1,17 +1,17 @@ -cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps= -cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8= -cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= -cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= +cloud.google.com/go/auth v0.16.0 h1:Pd8P1s9WkcrBE2n/PhAwKsdrR35V3Sg2II9B+ndM3CU= +cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 h1:g0EZJwz7xkXQiZAI5xi9f3WWFYBlX1CPTrR+NDToRkQ= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 h1:1mvYtZfWQAnwNah/C+Z+Jb9rQH95LPE2vlmMuWAHJk8= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1/go.mod h1:75I/mXtme1JyWFtz8GocPHVFyH421IBoZErnO16dd0k= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1 h1:Bk5uOhSAenHyR5P61D/NzeQCv+4fEVV8mOkJ82NqpWw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1/go.mod h1:QZ4pw3or1WPmRBxf0cHd1tknzrT54WPBOQoGutCPvSU= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0 h1:OVoM452qUFBrX+URdH3VpR299ma4kfom0yB0URYky9g= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0/go.mod h1:kUjrAo8bgEwLeZ/CmHqNl3Z/kPm7y6FKfxxK0izYUg4= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= 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/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -24,8 +24,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5gYVyhkij+RTJ/VR6QIUaCfWeaFm2ycsjQ= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= 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/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -56,8 +56,8 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= 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.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= -github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= +github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -74,8 +74,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/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= @@ -89,14 +89,14 @@ github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.132.0 h1:n0x6+ZkwbyQBtIU1wwBhv26EINqHg0wWQiBXlwYg/HQ= -github.com/digitalocean/godo v1.132.0/go.mod h1:PU8JB6I1XYkQIdHFop8lLAY9ojp6M0XcU0TWaQSxbrc= +github.com/digitalocean/godo v1.144.0 h1:rDCsmpwcDe5egFQ3Ae45HTde685/GzX037mWRMPufW0= +github.com/digitalocean/godo v1.144.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v28.0.1+incompatible h1:FCHjSRdXhNRFjlHMTv4jUNlIBbTeRjrWfeFuJp7jpo0= -github.com/docker/docker v28.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= +github.com/docker/docker v28.1.1+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= @@ -115,8 +115,8 @@ github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8k github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= -github.com/expr-lang/expr v1.17.3 h1:myeTTuDFz7k6eFe/JPlep/UsiIjVhG61FMHFu63U7j0= -github.com/expr-lang/expr v1.17.3/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= +github.com/expr-lang/expr v1.17.5 h1:i1WrMvcdLF249nSNlpQZN1S6NXuW9WaOfF5tPi3aw3k= +github.com/expr-lang/expr v1.17.5/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb h1:IT4JYU7k4ikYg1SCxNI1/Tieq/NFvh6dzLdgi7eu0tM= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -167,13 +167,13 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= -github.com/go-resty/resty/v2 v2.16.3 h1:zacNT7lt4b8M/io2Ahj6yPypL7bqx9n1iprfQuodV+E= -github.com/go-resty/resty/v2 v2.16.3/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= +github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I= github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -223,20 +223,20 @@ github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= 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.5 h1:VgzTY2jogw3xt39CusEnFJWm7rlsq5yL5q9XdLOuP5g= -github.com/googleapis/enterprise-certificate-proxy v0.3.5/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= -github.com/gophercloud/gophercloud/v2 v2.4.0 h1:XhP5tVEH3ni66NSNK1+0iSO6kaGPH/6srtx6Cr+8eCg= -github.com/gophercloud/gophercloud/v2 v2.4.0/go.mod h1:uJWNpTgJPSl2gyzJqcU/pIAhFUWvIkp8eE8M15n9rs4= +github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= +github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= 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-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= -github.com/hashicorp/consul/api v1.31.0 h1:32BUNLembeSRek0G/ZAM6WNfdEwYdYo8oQ4+JoqGkNQ= -github.com/hashicorp/consul/api v1.31.0/go.mod h1:2ZGIiXM3A610NmDULmCHd/aqBJj8CkMfOhswhOafxRg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= +github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= @@ -291,18 +291,16 @@ github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977Vrm github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/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.18.0 h1:BemrVGeWI8Kn/pvaC1jBsHZxQMnRqOydS7Ju4BERB4Q= -github.com/hetznercloud/hcloud-go/v2 v2.18.0/go.mod h1:r5RTzv+qi8IbLcDIskTzxkFIji7Ovc8yNgepQR9M+UA= +github.com/hetznercloud/hcloud-go/v2 v2.21.0 h1:wUpQT+fgAxIcdMtFvuCJ78ziqc/VARubpOQPQyj4Q84= +github.com/hetznercloud/hcloud-go/v2 v2.21.0/go.mod h1:WSM7w+9tT86sJTNcF8a/oHljC3HUmQfcLxYsgx6PpSc= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -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.3.2 h1:2mUmrZZz6cPyT9IRX0T8fBLc/7XU/eTxP2Y5tS7/09k= -github.com/ionos-cloud/sdk-go/v6 v6.3.2/go.mod h1:SXrO9OGyWjd2rZhAhEpdYN6VUAODzzqRdqA9BCviQtI= +github.com/ionos-cloud/sdk-go/v6 v6.3.3 h1:q33Sw1ZqsvqDkFaKG53dGk7BCOvPCPbGZpYqsF6tdjw= +github.com/ionos-cloud/sdk-go/v6 v6.3.3/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInww= github.com/jarcoal/httpmock v1.3.1/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -320,8 +318,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKuao2vNdfD82fjjgPLfyHLpR41Z88viRWs= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw= +github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= +github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -330,8 +328,8 @@ github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpb github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= -github.com/knadh/koanf/v2 v2.2.0 h1:FZFwd9bUjpb8DyCWARUBy5ovuhDs1lI87dOEn2K8UVU= -github.com/knadh/koanf/v2 v2.2.0/go.mod h1:PSFru3ufQgTsI7IF+95rf9s8XA1+aHxKuO/W+dPoHEY= +github.com/knadh/koanf/v2 v2.2.1 h1:jaleChtw85y3UdBnI0wCqcg1sj1gPoz6D3caGNHtrNE= +github.com/knadh/koanf/v2 v2.2.1/go.mod h1:PSFru3ufQgTsI7IF+95rf9s8XA1+aHxKuO/W+dPoHEY= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -345,8 +343,8 @@ 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/linode/linodego v1.46.0 h1:+uOG4SD2MIrhbrLrvOD5HrbdLN3D19Wgn3MgdUNQjeU= -github.com/linode/linodego v1.46.0/go.mod h1:vyklQRzZUWhFVBZdYx4dcYJU/gG9yKB9VUcUs6ub0Lk= +github.com/linode/linodego v1.49.0 h1:MNd3qwvQzbXB5mCpvdCqlUIu1RPA9oC+50LyB9kK+GQ= +github.com/linode/linodego v1.49.0/go.mod h1:B+HAM3//4w1wOS0BwdaQBKwBxlfe6kYJ7bSC6jJ/xtc= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= @@ -377,8 +375,8 @@ github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.63 h1:8M5aAw6OMZfFXTT7K5V0Eu5YiiL8l7nUAkyN6C9YwaY= -github.com/miekg/dns v1.1.63/go.mod h1:6NGHfjhpmr5lt3XPLuyfDJi5AXbNIPM9PY6H6sF1Nfs= +github.com/miekg/dns v1.1.65 h1:0+tIPHzUW0GCge7IiK3guGP57VAw7hoPDfApjkMD1Fc= +github.com/miekg/dns v1.1.65/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= 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= @@ -393,6 +391,10 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx 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/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -413,49 +415,52 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.127.0 h1:5Qqp8m+kWf3wswoxcf28ero3J5ddVz0GXfPBu5dsF4E= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.127.0/go.mod h1:vlbeN9M+WAQJXx+KXihRdFpYtL10YiG7hirBw0jVQTE= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.127.0 h1:D66eqoO8s9GBeqvpJpOeXPdml2pf1LAxFIDp3sW6kQ0= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.127.0/go.mod h1:3s2sN5SPnIgcj/REtDRm7ra7wbamUXRNsKWdiq9ozqo= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.127.0 h1:x4YN4Pp56JLyfvG/LA05Xc0d6QGwbXy3MzjyzQn7jfU= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.127.0/go.mod h1:bEWsX7jbO6OPCW1DJ1GFfcAYBNaGVmJ/FAuJsCbh294= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.127.0 h1:e+Dv7xCw9+XHWHlCD4jvU8xhu/+ckHTEFxDI+wuZVT8= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.127.0/go.mod h1:jGwB3dMiscECgE859rLB9O7aA8lR11EemBYVssV0kzA= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.127.0 h1:+rH1wkeYNBwK2FGpEejlgQ+y7rAky8NI+jZmXPe4ba8= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.127.0/go.mod h1:iEHea6+K/GmU8euv5xc8jCWCITUySuGsd6raknzduEM= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.127.0 h1:F689FgJA1wCHJ/1eyNu8JDMr4hAWQrMcArrQx1K2sMg= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.127.0/go.mod h1:69n06/kjFG1HLrhhZJaLR5zYPHIpEcFyO0SdPYQphaw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.127.0 h1:vfFBZP6CSrxo0d5jSk7bTvT3hdwhfdshCthzmFFOugg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.127.0/go.mod h1:u9L3gSCAckl6Iy5fLY0W8EGA8uuXcLxYbgxLoipxBiE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.127.0 h1:1gE/wca+n2hptpCrH60oqbTdXUMvMyZSe0lBkaBmUpQ= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.127.0/go.mod h1:kEufI2rLrjeBxAyV+SElguqAyZNU3OUVOVhPCC+eJDw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.127.0 h1:htRqI1VzOR/9ATKKl28Ps4q/GR9T6tG+lwSdXnbufRE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.127.0/go.mod h1:eYArfh5F/dmAP8LKFcZfTThRUGYyuN/zaUA2G+H88qg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.127.0 h1:a2SVv64zTC3jaVMgb3K0D2cbKD/5exbXcCE6jqALt18= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.127.0/go.mod h1:EIx6/BjN4E6wNvYsdqeaBcnS+nZJ9rqPRxs704Jjl4o= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.127.0 h1:y7YbF7K9VaU2NkewxdI1/Df/QOYMo8Ly7KHPqEsN0w0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.127.0/go.mod h1:5ktyJQUOSlQ5h4n1AviKkSB60NPubS6Vn7B3x4gJ5jI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.127.0 h1:c74zBRjbux3Y5OqZkRfEnB5a1fvq8O8gqMgOJsD9Vyg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.127.0/go.mod h1:tS1U2wt/i4Ca1r1hUZ1zY8NykuT/zNp9bVQGqC1U9cs= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.127.0 h1:ti7n1evZjVhrb4nfNkz/DoX786Te7K6LIijDrwuJDiI= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.127.0/go.mod h1:T2+yXuRD1SnC7agO/EQYPXHhBe6DKdoWdomGTUMJwyM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.127.0 h1:ggBXcC9DfzB3jFOjpfQmJQ2aZOQYUCsV+SIRn/LeOhU= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.127.0/go.mod h1:3AnEA5nUFnw0JffKBaR7zREcHM7vqb5Jxd6+d2X7id8= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.127.0 h1:hEkxkds7W8hntvJ25dKKAFTgG7bslG3AusIrAQlk3zk= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.127.0/go.mod h1:QcaxF8M7uGC0kValHUHww9/Lz2S18sQL34ZYjW9klz0= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.129.0 h1:mTTeFCilT/HHcONIEBkiEhbiDdQTn+8YMt2G2sVldXw= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.129.0/go.mod h1:N9AkTWrUjZeFw/omtMQhYvVlsVE5Cfq3RNYw6YZNWvw= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.129.0 h1:SVyXnxngCd+WIIigY6XmYjnrbBthfY26cuSNu2AxVhc= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.129.0/go.mod h1:UEZMQUgG5ABPySiMTfINW5CTYa0LWC3B6/8UFUhRQ60= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.129.0 h1:oM7A/qZBgALjdsIaxsq35Czi09ufqhqIuhwT+Yu/lqY= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.129.0/go.mod h1:7LPAdyC0Sfe3Cg+edlUL3wv2C9Vai3i6GAAOJTKLMIg= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.129.0 h1:qwuUfLK8ukEHcoq8CK9HFvnBcOmxNxfMtLkuKN8texM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.129.0/go.mod h1:fyuzPZMBR5V1YqLnFj3rYXlTmBgdkToH7PQA4PRU8yg= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.129.0 h1:2pzb6bC/AAfciC9DN+8d7Y8Rsk8ZPCfp/ACTfZu87FQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.129.0/go.mod h1:tIE4dzdxuM7HnFeYA6sj5zfLuUA/JxzQ+UDl1YrHvQw= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.129.0 h1:YT2+mIjPrlfND+Xy1gTH3Z3jYH8hT4/C1sm5P9SmF8M= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.129.0/go.mod h1:kVQ7xRVQ1XEa2YOiHkJGZRskbGXhOvzuzjpVNZEBbtg= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.129.0 h1:WUSLlIn6qhSUyE/eZ5hW8gXeDEwVpr0PGTycpiPLjOk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.129.0/go.mod h1:CjSV4GdX6JLzja2MXTbDaSAkcR4TBKK708+VTWCNy/g= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.129.0 h1:ydkfqpZ5BWZfEJEs7OUhTHW59og5aZspbUYxoGcAEok= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.129.0/go.mod h1:oA+49dkzmhUx0YFC9JXGuPPSBL0TOTp6jkv7qSr2n0Q= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.129.0 h1:AOVxBvCZfTPj0GLGqBVHpAnlC9t9pl1JXUQXymHliiY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.129.0/go.mod h1:0CAJ32V/bCUBhNTEvnN9wlOG5IsyZ+Bmhe9e3Eri7CU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.129.0 h1:EZD2wflQTQz5h6H5z3gsayaXai+VZEPRaZgTaLFSPno= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.129.0/go.mod h1:mSzwL296y6nJOP30eWXxwzWa9PyjG4kReAw7EzyEvok= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.129.0 h1:t2SrDHDfHY+oJeCdxKto8nrvlnL6/2J2nvQRId0EuRE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.129.0/go.mod h1:BfBbOhQeNA0O+dIYDf9KZSXUfzDvGReJAKrJlTaiaFw= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.129.0 h1:dTZkwlnfngCQ7z0s20a87CFrOq2NzTRFKAKvsloXZ9Y= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.129.0/go.mod h1:wFDQdxMJD+2g71kKfmscQtUbqVhl134QNKFUZP1show= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.129.0 h1:yDLSAoIi3jNt4R/5xN4IJ9YAg1rhOShgchlO/ESv8EY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.129.0/go.mod h1:IXQHbTPxqNcuu44FvkyvpYJ6Qy4wh4YsCVkKsp0Flzo= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.129.0 h1:UK1h8eiorz5ZbgIwK3rnYF0L2/lcDDlgWUolIIoDawI= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.129.0/go.mod h1:D9EzpKY7pQq0NVBK8iMfUvqWNmleUOhidAhEeT81alU= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.129.0 h1:3g+anm7gMT8QwztsLolMWbG3JjWMpkCMAtWEqQvNG20= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.129.0/go.mod h1:itXoSFDh2/D2r7QC4TdkV3q/D/Hy8O6Msagxe/mHvfY= 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.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= -github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= +github.com/ovh/go-ovh v1.7.0 h1:V14nF7FwDjQrZt9g7jzcvAAQ3HN6DNShRFRMC3jLoPw= +github.com/ovh/go-ovh v1.7.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= @@ -473,8 +478,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/alertmanager v0.28.0 h1:sLN+6HhZet8hrbmGHLAHWsTXgZSVCvq9Ix3U3wvivqc= -github.com/prometheus/alertmanager v0.28.0/go.mod h1:/okSnb2LlodbMlRoOWQEKtqI/coOo2NKZDm2Hu9QHLQ= +github.com/prometheus/alertmanager v0.28.1 h1:BK5pCoAtaKg01BYRUJhEDV1tqJMEtYBGzPw8QdvnnvA= +github.com/prometheus/alertmanager v0.28.1/go.mod h1:0StpPUDDHi1VXeM7p2yYfeZgLVi/PPlt39vo9LQUHxM= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= @@ -487,37 +492,39 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= +github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 h1:YaJ1JqyKGIUFIMUpMeT22yewZMXiTt5sLgWG1D/m4Yc= +github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07/go.mod h1:ZO/4EUanXL7wbvfMHcS+rq9sCBxICdaU8RBFkVg5wv0= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -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.302.1 h1:xqVdrwrB4WNpdgJqxsz5loqFWNUZitsK8myqLuSZ6Ag= -github.com/prometheus/prometheus v0.302.1/go.mod h1:YcyCoTbUR/TM8rY3Aoeqr0AWTu/pu1Ehh+trpX3eRzg= -github.com/prometheus/sigv4 v0.1.1 h1:UJxjOqVcXctZlwDjpUpZ2OiMWJdFijgSofwLzO1Xk0Q= -github.com/prometheus/sigv4 v0.1.1/go.mod h1:RAmWVKqx0bwi0Qm4lrKMXFM0nhpesBcenfCtz9qRyH8= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/prometheus v0.304.1 h1:e4kpJMb2Vh/PcR6LInake+ofcvFYHT+bCfmBvOkaZbY= +github.com/prometheus/prometheus v0.304.1/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= +github.com/prometheus/sigv4 v0.1.2 h1:R7570f8AoM5YnTUPFm3mjZH5q2k4D+I/phCWvZ4PXG8= +github.com/prometheus/sigv4 v0.1.2/go.mod h1:GF9fwrvLgkQwDdQ5BXeV9XUSCH/IPNqzvAoaohfjqMU= github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg= github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= -github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E= -github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw= +github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM= +github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 h1:yoKAVkEVwAqbGbR8n87rHQ1dulL25rKloGadb3vm770= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30/go.mod h1:sH0u6fq6x4R5M7WxkoQFY/o7UaiItec0o1LinLCJNq8= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shirou/gopsutil/v4 v4.25.4 h1:cdtFO363VEOOFrUCjZRh4XVJkb548lyF0q0uTeMqYPw= -github.com/shirou/gopsutil/v4 v4.25.4/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= +github.com/shirou/gopsutil/v4 v4.25.5 h1:rtd9piuSMGeU8g1RMXjZs9y9luK5BwtnG7dZaQUJAsc= +github.com/shirou/gopsutil/v4 v4.25.5/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c= github.com/shoenig/test v1.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= @@ -578,186 +585,192 @@ go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector v0.127.0 h1:W8Gs3W/Z2kY6cDSb6yv79Wtqg8DbcKEYz5dNIBooaFk= -go.opentelemetry.io/collector v0.127.0/go.mod h1:wtiUNv3pd9r104JaFq1IlGrKdD5ExNkjPcfST8+rgxM= -go.opentelemetry.io/collector/client v1.33.0 h1:1S/t3CV3SnmwjbTSKj1DoMsQkDq3bBlLt9eREX/Lzrk= -go.opentelemetry.io/collector/client v1.33.0/go.mod h1:CMX7Ly/zQE7hH9T4NUyT9kKYlZC8JIu7ncBzEL6kLYM= -go.opentelemetry.io/collector/component v1.33.0 h1:AoP5ZGEU7Q3YDYQx2CgYy82Xmy3gLgh1WCMeLtTXXFo= -go.opentelemetry.io/collector/component v1.33.0/go.mod h1:/5v3hl1GSQT45D6T7sE/LB6nlQMMRHCYDX1glJamh7E= -go.opentelemetry.io/collector/component/componentstatus v0.127.0 h1:3oZU2b7Giyc+tnrStYDWJAPHt2QxWOWuhTumGiHl9OQ= -go.opentelemetry.io/collector/component/componentstatus v0.127.0/go.mod h1:9afwixYMvsb1xvmxxg33XzMU7ZTe4pBitkugj5DDZdQ= -go.opentelemetry.io/collector/component/componenttest v0.127.0 h1:2cieQeh5OS1zf73Aad4b8Rf5vCDk5Hlb6oeJH7Q1VYs= -go.opentelemetry.io/collector/component/componenttest v0.127.0/go.mod h1:0jHbHYRXSNS+nm2vSsxpdAsIj+EDehxKRGk4oclyHKs= -go.opentelemetry.io/collector/config/configauth v0.127.0 h1:31PvdHi0mSXJQAUT0jlicOlT2CsPlkc9KHr/Ek3tIj0= -go.opentelemetry.io/collector/config/configauth v0.127.0/go.mod h1:Jzle3Nup5LCxcJPb4DdPpH5iEqDOD6WSMeiqBBWksbo= -go.opentelemetry.io/collector/config/configcompression v1.33.0 h1:nXKQ+wN/8O0dyjkpieIwQ3PWclJa0mcGwv9mmYd48oU= -go.opentelemetry.io/collector/config/configcompression v1.33.0/go.mod h1:QwbNpaOl6Me+wd0EdFuEJg0Cc+WR42HNjJtdq4TwE6w= -go.opentelemetry.io/collector/config/configgrpc v0.127.0 h1:GiRwMDLqKO3OfvzHkGNXxoRRZSiOrXWgGYJ8qGeO+Zw= -go.opentelemetry.io/collector/config/configgrpc v0.127.0/go.mod h1:5Jj5+q4czPlTjvxHnDPOHo7Vod4oRWeTvyWyJSRL61M= -go.opentelemetry.io/collector/config/confighttp v0.127.0 h1:VOMJ4v79SxiUVabl+kw/j56zOKs0zC5073R4SaQ4gbY= -go.opentelemetry.io/collector/config/confighttp v0.127.0/go.mod h1:/HxOPqXjYm1ViIwmxesqayozvTWawnd1bg6F2WMfBTs= -go.opentelemetry.io/collector/config/configmiddleware v0.127.0 h1:gJ6xTs3cip7Q5zgMcdBj5fiYYHpmXGclGuHCxDKs+RA= -go.opentelemetry.io/collector/config/configmiddleware v0.127.0/go.mod h1:yYxOsEgHG8WoX4ShSJMpXVskU5GTK3ecTAHzqH6YixE= -go.opentelemetry.io/collector/config/confignet v1.33.0 h1:WYka8fdJV3x8gecGiW7nhXa4wwhRxjNK2mEOWDYWXLw= -go.opentelemetry.io/collector/config/confignet v1.33.0/go.mod h1:HgpLwdRLzPTwbjpUXR0Wdt6pAHuYzaIr8t4yECKrEvo= -go.opentelemetry.io/collector/config/configopaque v1.33.0 h1:QNiPszINK/pBA+tFWgct7IXka+X6W2E4k/Sy8TTg0s8= -go.opentelemetry.io/collector/config/configopaque v1.33.0/go.mod h1:rw0/X78O8cOk0dhACqNbdiKk1PF7z7mwq9wgSpWoqgs= -go.opentelemetry.io/collector/config/configretry v1.33.0 h1:HAzchQZKq1lCVzLZnUjRYt3J+Uk4Q1Mr1SZXMgwtb+c= -go.opentelemetry.io/collector/config/configretry v1.33.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ= -go.opentelemetry.io/collector/config/configtelemetry v0.127.0 h1:m4HKEbxcxclMiJJyIvbaJrQbnG+Eck9l8827f8jTcWw= -go.opentelemetry.io/collector/config/configtelemetry v0.127.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA= -go.opentelemetry.io/collector/config/configtls v1.33.0 h1:4pGT0nFM24KCtyyq8ng7VWW9fVN1VLQMlkNrMhiWRhU= -go.opentelemetry.io/collector/config/configtls v1.33.0/go.mod h1:50tvOLlI6iedkrQ9/HMO1KWxzzx0Nu28MgSRXxTwSkY= -go.opentelemetry.io/collector/confmap v1.33.0 h1:dCLSrONMssTWhnbELZZpJoWMn+P+DVJc8r10JJCeS/4= -go.opentelemetry.io/collector/confmap v1.33.0/go.mod h1:fq5ccP4lzF3IVK/Cs0kWsiH0dynejXkMc8gaNwvkvtk= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.33.0 h1:A61tuCM6vlBH6Pk1YoJnkOeFUwUnH/vZMQHTKqEL3eo= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.33.0/go.mod h1:nbNjPiB6XBrGo4L+IR3W2NjK3AS1eK84yY1g2iDWgto= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0 h1:T7rVBmAKgLDLXYKQbCrgw15eD9sAhHqvnSGxYv735ew= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0/go.mod h1:JlAC1QMaaPiPx7x8hQYRcxxf2GiOeHYaM8uEIri1dPg= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.33.0 h1:M14VV2/mSU9TMnxfZeHi/fVgzPMv0caPPDNgFXoN8SU= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.33.0/go.mod h1:8yugd3piWlNFCssSTlSdc9KAWGGah+dJ86Yr2wdFg9I= -go.opentelemetry.io/collector/confmap/xconfmap v0.127.0 h1:isSNkBXltLxUWstxJyHcJ3qVo9qp9GABCVhzIvZgIdM= -go.opentelemetry.io/collector/confmap/xconfmap v0.127.0/go.mod h1:K9GaSgmMYxM1/QlAVNIj2fX9LekInm9dwFnIeF1HCgs= -go.opentelemetry.io/collector/connector v0.127.0 h1:oH1qfmZK5Ma6ytbXcInFHySSv3M34rBTCS+DbXzZK/4= -go.opentelemetry.io/collector/connector v0.127.0/go.mod h1:KYOVGKGj23WL4+y5bHvbPc7VSPRm8BpwzKdx6YOzb98= -go.opentelemetry.io/collector/connector/connectortest v0.127.0 h1:bTJCvSWj4TywQ4i9AAF3PFMcAuE7oUtYBXyzl6ng7Yo= -go.opentelemetry.io/collector/connector/connectortest v0.127.0/go.mod h1:1khc74iFfEJYYOazVfr6KRAfHESNrR9fUgpNtx0I55I= -go.opentelemetry.io/collector/connector/xconnector v0.127.0 h1:re8+Wt4uzgcXRs2uagBotAImGgjjqdZg6i/vpdjAe7U= -go.opentelemetry.io/collector/connector/xconnector v0.127.0/go.mod h1:UQODXm9pN1LbOEQqjQ225PMI8caNCmWHMQxmW9V72cA= -go.opentelemetry.io/collector/consumer v1.33.0 h1:y6ohYtFsXHdD3eJ67SRHSgumRQRNlR6N+DuyjOq3hYo= -go.opentelemetry.io/collector/consumer v1.33.0/go.mod h1:WwB/nHWw6KwumVy7OayUmvRa7V3UsfK+f8qwW8/c5rY= -go.opentelemetry.io/collector/consumer/consumererror v0.127.0 h1:9MylkP5eR2hlaj80v67VRUjSoiHNNHTK37gCrtz/9+w= -go.opentelemetry.io/collector/consumer/consumererror v0.127.0/go.mod h1:7FRcHa5E8rMytzJHRdzd9SzgweDwfvEc92Clq54BjSA= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.127.0 h1:gMUY5EUu6YxAZY0ZvrpQ6jDsvjyItLyXlSAA/ietxtA= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.127.0/go.mod h1:Jlkd5T8Qs2DcrBj1wn3fqh8DT5piaNDTm0GvvmUvdPs= -go.opentelemetry.io/collector/consumer/consumertest v0.127.0 h1:rtp7ilS1P1xVfmZu0XnWohhi1N2d+wtWo9ORo8A1Xb8= -go.opentelemetry.io/collector/consumer/consumertest v0.127.0/go.mod h1:SFn8ifdrKulaQWDIvQskmEjSNdMZMQ5upQYJXLFEvzg= -go.opentelemetry.io/collector/consumer/xconsumer v0.127.0 h1:23qpVECDiqad44d9HtQ1M4P4g2xbB4A7R1b9yux2Gag= -go.opentelemetry.io/collector/consumer/xconsumer v0.127.0/go.mod h1:vZ06tk8nu2OyeizjN6AtlaftY79WuODi2rC3U7lxsb4= -go.opentelemetry.io/collector/exporter v0.127.0 h1:qy86B33YBKaBRwEbXLPe6ju3P05MqozyfUGW11RiaQ0= -go.opentelemetry.io/collector/exporter v0.127.0/go.mod h1:P72zzaz4tdK/MOGhliimvs4Cjrlefa5XunEfrs0U5i8= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.127.0 h1:cSkBz/MsvmRtkca3B1SLrT2Qyy8nOblGJ1/eVBQ3Zmg= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.127.0/go.mod h1:1XTbvObfifCdHV+uIyTzY1Nx7ZFpxha//aCIkBk7Vsg= -go.opentelemetry.io/collector/exporter/exportertest v0.127.0 h1:P6QYcPw1VSpXb9QYiLjUeIGKpbwfx+P9b0hlPDO5JLo= -go.opentelemetry.io/collector/exporter/exportertest v0.127.0/go.mod h1:5qdUXbocIpzAA8SJOyYq+gGz2h3JNileYnLJ6fBR2/8= -go.opentelemetry.io/collector/exporter/otlpexporter v0.127.0 h1:MWdGc06C/8L4QqmUcYVUw2OzQIG4sG8pAzfj/5GKomU= -go.opentelemetry.io/collector/exporter/otlpexporter v0.127.0/go.mod h1:hSISdbZv52Ik7pVukcIVovmamQwK9QAyTVX5qIfFavQ= -go.opentelemetry.io/collector/exporter/xexporter v0.127.0 h1:vP5Sk3s35u6oazXqm4nLkz/0Xud3dVAIqdWt8wrqQBs= -go.opentelemetry.io/collector/exporter/xexporter v0.127.0/go.mod h1:0x+KzQsI6VmQnx3MO4C/XmMeL7zmY6bZPHaktTAekKY= -go.opentelemetry.io/collector/extension v1.33.0 h1:QXNOwcvKi9iwai83ielK8B8fCOH9wNO9K98IY0ftotM= -go.opentelemetry.io/collector/extension v1.33.0/go.mod h1:EVsoOULEODW5vzHE76ltl7BjOdaYnDw5/EmAFFFAmBg= -go.opentelemetry.io/collector/extension/extensionauth v1.33.0 h1:m7PQze6Z9xddM1UmbU2P25cipAe7koAEaR6lPgxPMxE= -go.opentelemetry.io/collector/extension/extensionauth v1.33.0/go.mod h1:4sqbOn6DeRFEFpmBKElk92mdv9lImrXrCJaR8s05K68= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.127.0 h1:CXSYbXZBD7cLI1HlIp1w+hJmyznf75ZYeFitj6FDxDg= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.127.0/go.mod h1:GKxP+mkK2Pq6h9trvZ7/Vb4XM/fosuwvB08A1mnlNYM= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0 h1:WHe1RZScVJJV3sh1pHIF/WJAaZ7VeqejmbQ1bU4/TDM= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0/go.mod h1:OZRBpnrS7reS0PfQeyQiFgE1UnHFHwU6V4jHo51NGh8= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0 h1:5dM/Wqnvn6g6qLaPZy+86dyfiEZgibNcY/EGOgaxtCM= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0/go.mod h1:XGFqdRdGYXJt3IotRW72tgSCFS20Vr9jk5jqQiinmXc= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.127.0 h1:18YkheReX/x/pJGGCtwBLPUcCnzGUy79IQAmQibGVLA= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.127.0/go.mod h1:aqtxnTgH5F6OfWanYrEM9KKy1uWaBU46MZKEvDOzBv0= -go.opentelemetry.io/collector/extension/extensiontest v0.127.0 h1:wf+rP15+mRRyNfhAPNccNOsRAOyEIOMNleJiMbYYI2A= -go.opentelemetry.io/collector/extension/extensiontest v0.127.0/go.mod h1:yZKXiLKaJOTXgNOmvWgYKZ2DGToCxHzrqN6PX8YC+fI= -go.opentelemetry.io/collector/extension/xextension v0.127.0 h1:JT2lXY+MGiXuU6AoBX5kRLnUtr5jG6+xKSV0o//rMTk= -go.opentelemetry.io/collector/extension/xextension v0.127.0/go.mod h1:IFx3P/zH8Gey2XP70eb5q4OZHBWMtizg5Gr71eXBndA= -go.opentelemetry.io/collector/extension/zpagesextension v0.127.0 h1:iwxxrUh/5B858EAKqYDxjfiiINtioyFhty/0apHDV5A= -go.opentelemetry.io/collector/extension/zpagesextension v0.127.0/go.mod h1:w6wwIJ1f+yM28kphp7leqeho2lpVr8Sb5qt6Cwwpzk4= -go.opentelemetry.io/collector/featuregate v1.33.0 h1:ronhxafsUE7H3Cem4U2PXrvDZhxA9Gixx4Wik7X32X8= -go.opentelemetry.io/collector/featuregate v1.33.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0 h1:LXLYLmPuf7ZwygcQmzFJzbc66CGC+CrFSxEjKH/ZOQ8= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0/go.mod h1:V16/QfrzLcGVI8gcTujYU4i9U9+IDA6UOC8hjM659tY= -go.opentelemetry.io/collector/internal/telemetry v0.127.0 h1:/wAnPmFjUN7MwnRyDYJzUJZa5n0qK9zM1F7PgMWM5Y0= -go.opentelemetry.io/collector/internal/telemetry v0.127.0/go.mod h1:Un7Zn//l0BkE6hk6wirsTGwnJJpxw/gJWgzYL3eSruk= -go.opentelemetry.io/collector/otelcol v0.127.0 h1:nCOfC4IpJe36QOmLcFubwyFjeTfo268uWpMmRo5R0I4= -go.opentelemetry.io/collector/otelcol v0.127.0/go.mod h1:jN1rfCDqohNNy/KnLhIEWLSUz0ZQC+GuI6VkNMdjZZs= -go.opentelemetry.io/collector/pdata v1.33.0 h1:PuqiZzdCoBJo9NmMzuYfzazpeFZyLmbDVcRrvb497lg= -go.opentelemetry.io/collector/pdata v1.33.0/go.mod h1:TDvbHuvIK+g6xqu1gxtz8ti4pB2x1WcBpjFob5KfleU= -go.opentelemetry.io/collector/pdata/pprofile v0.127.0 h1:t0fpwMunK+dkUTPFc0zim8qfAan086eMqpSufnt+H30= -go.opentelemetry.io/collector/pdata/pprofile v0.127.0/go.mod h1:6S6q2+vaF7qfDxLKctQUB+CN7hThuz73p4le6mYLWnQ= -go.opentelemetry.io/collector/pdata/testdata v0.127.0 h1:1j6KWO/7TyyUaYpIeyxWzsE/klVYGFhbsTCJp4GaTco= -go.opentelemetry.io/collector/pdata/testdata v0.127.0/go.mod h1:UXvOckTD4hhAA9nzRQik0lVBU/hJ+SFes+ar9LjzYBk= -go.opentelemetry.io/collector/pipeline v0.127.0 h1:WdllRrWwsJ1yAr9l4LRiArb0ekdNaGuMJP8zQ6lZlos= -go.opentelemetry.io/collector/pipeline v0.127.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4= -go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0 h1:dWftaJ1yr5BoI5S5Xi5g73yAFm439Uqy5oKio7dPKyc= -go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0/go.mod h1:w/l+ks0aBhxJyDG8chLY8wff6SgqycWpxjBPlaVD2UI= -go.opentelemetry.io/collector/processor v1.33.0 h1:oI8gBA/HvGQru/45tUp1kGXz9EzemhGS0ufInPZzQoA= -go.opentelemetry.io/collector/processor v1.33.0/go.mod h1:frlKFbtD+VBSK2vqbiDX1qy0bzkfdjpnUEdIl9wCZeA= -go.opentelemetry.io/collector/processor/batchprocessor v0.127.0 h1:HyG0C5xCo8JbvctyzWsyeeOcH5VU+3oQSHBvgrB3njQ= -go.opentelemetry.io/collector/processor/batchprocessor v0.127.0/go.mod h1:xuxPowQ7xXLmWfNpBlVVb+N79CmQAiMqgqSeh6KjCfg= -go.opentelemetry.io/collector/processor/processorhelper v0.127.0 h1:6RpqeTVrhXmo0klrsasGUNtn6ElIhqRERMmYZESCWwA= -go.opentelemetry.io/collector/processor/processorhelper v0.127.0/go.mod h1:BjMXafflYUHZc3KhXZJSLm5g+IZmK9r2Z+4XWQXMFU0= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.127.0 h1:e3WsFWKgL3JRTH5xR+/8i4H7JdL9AMlf+VAnMHcGZJc= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.127.0/go.mod h1:BNBpwxwFUTt90n6jJ+cken5N0JYkVB+Jg92v7akEn5w= -go.opentelemetry.io/collector/processor/processortest v0.127.0 h1:NKSOBWg5ggJO0km5FJ/UeFU5MORvbqNJEhdT1O74OtA= -go.opentelemetry.io/collector/processor/processortest v0.127.0/go.mod h1:6Q0HdaiuakBwfnVjEhf3HtilfIlXRu0DKQGgfv5FasY= -go.opentelemetry.io/collector/processor/xprocessor v0.127.0 h1:WEXmmIbh/ifag9yS42CUHHMOwbdGvbr8jr6MLrL2MDU= -go.opentelemetry.io/collector/processor/xprocessor v0.127.0/go.mod h1:IHpB7FxRjgzHr3+EwfleRx33iMkkNq5GxzlGaxuRhBY= -go.opentelemetry.io/collector/receiver v1.33.0 h1:ge3LSQZ5uSZQUQhGb9hg1iWIUg6NQwOs+Wv29DyRZmk= -go.opentelemetry.io/collector/receiver v1.33.0/go.mod h1:RkTKFqh9+lSY3QayvfJ39dv7bAMRIHHnx1dd8TvmVMU= -go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0 h1:Hjhd9xV+IlJLFxx3d1k3hos/CinkDj6diBZSU208mRQ= -go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0/go.mod h1:gsOnOAQRjShnnIDMGFJBd4N8jiDmt7JPEmcvQp6g/Jw= -go.opentelemetry.io/collector/receiver/receivertest v0.127.0 h1:3XtARAYqYxhcOa9LMmr9tc03sKZZFjsTjUgcJlPxZI0= -go.opentelemetry.io/collector/receiver/receivertest v0.127.0/go.mod h1:OSMA/bmiB+a73JboiCuvVPrPR7+1CuMh1PTNRTWDTEQ= -go.opentelemetry.io/collector/receiver/xreceiver v0.127.0 h1:oUAz3sCcOl+Mt/e5Gq3nZX0J0bpFUghLkItnC0bqWy0= -go.opentelemetry.io/collector/receiver/xreceiver v0.127.0/go.mod h1:spfky570JgiS7CRDbM/DiWJSM/mkq5RmdwldbFOMVoM= -go.opentelemetry.io/collector/semconv v0.127.0 h1:Mh5VEhH0bXAHQSvjHK31sN0Ct8vSNqaxG7aghQBC8Y8= -go.opentelemetry.io/collector/semconv v0.127.0/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= -go.opentelemetry.io/collector/service v0.127.0 h1:72JKDcEhTqEsEGrlzX7g459O4HgS8ryczGwIr67T4So= -go.opentelemetry.io/collector/service v0.127.0/go.mod h1:yL3cVJhbISZZgGOuNFa4inPNS+IeFUfLLJ2FZio5dO8= -go.opentelemetry.io/collector/service/hostcapabilities v0.127.0 h1:nAdem/Lz9JLvWpZ41atvc1EUhk7Np2VmmBHx1AP/N3w= -go.opentelemetry.io/collector/service/hostcapabilities v0.127.0/go.mod h1:IbK3DF5IplTqXpj37iGSeOej6F6FZAFb/QroQ7F8p+8= -go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 h1:ojdSRDvjrnm30beHOmwsSvLpoRF40MlwNCA+Oo93kXU= -go.opentelemetry.io/contrib/bridges/otelzap v0.10.0/go.mod h1:oTTm4g7NEtHSV2i/0FeVdPaPgUIZPfQkFbq0vbzqnv0= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0 h1:iQZYNQ7WwIcYXzOPR46FQv9O0dS1PW16RjvR0TjDOe8= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0/go.mod h1:54CaSNqYEXvpzDh8KPjiMVoWm60t5R0dZRt0leEPgAs= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/contrib/otelconf v0.15.0 h1:BLNiIUsrNcqhSKpsa6CnhE6LdrpY1A8X0szMVsu99eo= -go.opentelemetry.io/contrib/otelconf v0.15.0/go.mod h1:OPH1seO5z9dp1P26gnLtoM9ht7JDvh3Ws6XRHuXqImY= -go.opentelemetry.io/contrib/propagators/b3 v1.35.0 h1:DpwKW04LkdFRFCIgM3sqwTJA/QREHMeMHYPWP1WeaPQ= -go.opentelemetry.io/contrib/propagators/b3 v1.35.0/go.mod h1:9+SNxwqvCWo1qQwUpACBY5YKNVxFJn5mlbXg/4+uKBg= -go.opentelemetry.io/contrib/zpages v0.60.0 h1:wOM9ie1Hz4H88L9KE6GrGbKJhfm+8F1NfW/Y3q9Xt+8= -go.opentelemetry.io/contrib/zpages v0.60.0/go.mod h1:xqfToSRGh2MYUsfyErNz8jnNDPlnpZqWM/y6Z2Cx7xw= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 h1:QcFwRrZLc82r8wODjvyCbP7Ifp3UANaBSmhDSFjnqSc= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0/go.mod h1:CXIWhUomyWBG/oY2/r/kLp6K/cmx9e/7DLpBuuGdLCA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 h1:0NIXxOCFx+SKbhCVxwl3ETG8ClLPAa0KuKV6p3yhxP8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0/go.mod h1:ChZSJbbfbl/DcRZNc9Gqh6DYGlfjw4PvO1pEOZH1ZsE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0 h1:k6KdfZk72tVW/QVZf60xlDziDvYAePj5QHwoQvrB2m8= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0/go.mod h1:5Y3ZJLqzi/x/kYtrSrPSx7TFI/SGsL7q2kME027tH6I= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0 h1:T0Ec2E+3YZf5bgTNQVet8iTDW7oIk03tXHq+wkwIDnE= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0/go.mod h1:30v2gqH+vYGJsesLWFov8u47EpYTcIQcBjKpI6pJThg= -go.opentelemetry.io/otel/log v0.11.0 h1:c24Hrlk5WJ8JWcwbQxdBqxZdOK7PcP/LFtOtwpDTe3Y= -go.opentelemetry.io/otel/log v0.11.0/go.mod h1:U/sxQ83FPmT29trrifhQg+Zj2lo1/IPN1PF6RTFqdwc= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/log v0.11.0 h1:7bAOpjpGglWhdEzP8z0VXc4jObOiDEwr3IYbhBnjk2c= -go.opentelemetry.io/otel/sdk/log v0.11.0/go.mod h1:dndLTxZbwBstZoqsJB3kGsRPkpAgaJrWfQg3lhlHFFY= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/collector v0.129.0 h1:9RIJkrkJHWisk7xSIl7T3Vzrn29iAxRiRboSzhO7VFc= +go.opentelemetry.io/collector v0.129.0/go.mod h1:xK+smJWmW4NKMjLAe5/nNIhnZji0T8B0QXKTMz79YPY= +go.opentelemetry.io/collector/client v1.35.0 h1:0nLRdQKFpxGZp5XkYZoZwIc03+cBqzA8lIakxnQSGwE= +go.opentelemetry.io/collector/client v1.35.0/go.mod h1:hFg+6sGvwIvz8mR8zhSHGTRrP6JUIPdc//ROrww1D9U= +go.opentelemetry.io/collector/component v1.35.0 h1:JpvBukEcEUvJ/TInF1KYpXtWEP+C7iYkxCHKjI0o7BQ= +go.opentelemetry.io/collector/component v1.35.0/go.mod h1:hU/ieWPxWbMAacODCSqem5ZaN6QH9W5GWiZ3MtXVuwc= +go.opentelemetry.io/collector/component/componentstatus v0.129.0 h1:ejpBAt7hXAAZiQKcSxLvcy8sj8SjY4HOLdoXIlW6ybw= +go.opentelemetry.io/collector/component/componentstatus v0.129.0/go.mod h1:/dLPIxn/tRMWmGi+DPtuFoBsffOLqPpSZ2IpEQzYtwI= +go.opentelemetry.io/collector/component/componenttest v0.129.0 h1:gpKkZGCRPu3Yn0U2co09bMvhs17yLFb59oV8Gl9mmRI= +go.opentelemetry.io/collector/component/componenttest v0.129.0/go.mod h1:JR9k34Qvd/pap6sYkPr5QqdHpTn66A5lYeYwhenKBAM= +go.opentelemetry.io/collector/config/configauth v0.129.0 h1:utGWTWNr2Udmhft6GeGvKMHaPJAfo//yv7rdBOg2eB8= +go.opentelemetry.io/collector/config/configauth v0.129.0/go.mod h1:nJAWAIT5mj7iw4w/pFa66tV6ChMDPnQd2gQ9V+UtJ7Q= +go.opentelemetry.io/collector/config/configcompression v1.35.0 h1:mc3kg5xNj0+V7uIrKMSXlkIOC0ILFay0XqZyvMZ8gPk= +go.opentelemetry.io/collector/config/configcompression v1.35.0/go.mod h1:QwbNpaOl6Me+wd0EdFuEJg0Cc+WR42HNjJtdq4TwE6w= +go.opentelemetry.io/collector/config/configgrpc v0.129.0 h1:oCo87VEqgi13Xj+5kM3WxSbj4zcjvJyyaKQjYZP+PLM= +go.opentelemetry.io/collector/config/configgrpc v0.129.0/go.mod h1:QnOeQrMyetto03zlciFieZet9DVWVZ4b3cRe125/fjU= +go.opentelemetry.io/collector/config/confighttp v0.129.0 h1:3Q3FuTbujR15gL34tvHnbzOhk3q04SK3+seYV+blbqA= +go.opentelemetry.io/collector/config/confighttp v0.129.0/go.mod h1:x/bHu26G6YPCnELgbL8KZdgcRUi22uIoGRC0x4nMJFg= +go.opentelemetry.io/collector/config/configmiddleware v0.129.0 h1:ILDUqd/krni++HsZtXSheHguxKm3IGI+gBiSCDk/1mk= +go.opentelemetry.io/collector/config/configmiddleware v0.129.0/go.mod h1:jp4nK4r6duZhXlVCL/Nop8sU9jYUIt5IdjW+bcyTBoQ= +go.opentelemetry.io/collector/config/confignet v1.35.0 h1:H76z4c2z+X4gbtYH7+hE2peF7HcP0fyNq2cFSLmBG2U= +go.opentelemetry.io/collector/config/confignet v1.35.0/go.mod h1:HgpLwdRLzPTwbjpUXR0Wdt6pAHuYzaIr8t4yECKrEvo= +go.opentelemetry.io/collector/config/configopaque v1.35.0 h1:icetANbNljFgvLyJzf2paWQnsVa/KoUzoRbfHU+f0KU= +go.opentelemetry.io/collector/config/configopaque v1.35.0/go.mod h1:rw0/X78O8cOk0dhACqNbdiKk1PF7z7mwq9wgSpWoqgs= +go.opentelemetry.io/collector/config/configretry v1.35.0 h1:RVgIDmhcDqxF3U1vw+Klk4wI5Xu2Pj80jvMwU30ku+M= +go.opentelemetry.io/collector/config/configretry v1.35.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ= +go.opentelemetry.io/collector/config/configtelemetry v0.129.0 h1:91m/gtGUTyXN4PCI0uK/mPf1J0mWytk33u85YS3a9AU= +go.opentelemetry.io/collector/config/configtelemetry v0.129.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA= +go.opentelemetry.io/collector/config/configtls v1.35.0 h1:MaZrtIW4Bq87dz41shLMpyUjVuFBStBAoJA2RX+IUbg= +go.opentelemetry.io/collector/config/configtls v1.35.0/go.mod h1:twLYBQkeB4r1EpGoDGiyOj6CVpxyTX9qCji/hRs75EE= +go.opentelemetry.io/collector/confmap v1.35.0 h1:U4JDATAl4PrKWe9bGHbZkoQXmJXefWgR2DIkFvw8ULQ= +go.opentelemetry.io/collector/confmap v1.35.0/go.mod h1:qX37ExVBa+WU4jWWJCZc7IJ+uBjb58/9oL+/ctF1Bt0= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.35.0 h1:oDLfFfA+a59DEwsEejt6ikOu0VI2M3QVn60jRUZcqjY= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.35.0/go.mod h1:rux84f9ykZ2jmuFF6h/MODMjRNcHVKYFY5Y1uBcp9WM= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0 h1:6Z3uy4wlLXOeCWt265ekPZPglB2Eh9t9vD1NWCrWDn8= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0/go.mod h1:kcCOECduHBpJQjFlze1XZdc+dR8qzHmKPkMrlfkXlMw= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.35.0 h1:ISxrkHXQWlxLdifbn3/XciydQeWFEMygPr0oqeZpN0I= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.35.0/go.mod h1:jmIxi1X2uD4lq4vJ30lmdQgiYs7UaiyzXr/86FX1b1E= +go.opentelemetry.io/collector/confmap/xconfmap v0.129.0 h1:Q/+pJKrkCaMPSoSAH2BpC3UZCh+5hTiFkh/bdy5yChk= +go.opentelemetry.io/collector/confmap/xconfmap v0.129.0/go.mod h1:RNMnlay2meJDXcKjxiLbST9/YAhKLJlj0kZCrJrLGgw= +go.opentelemetry.io/collector/connector v0.129.0 h1:z5PLMTE0sGV3t+AbibIbSZsh4CS9YErLhNqirxa92Pk= +go.opentelemetry.io/collector/connector v0.129.0/go.mod h1:DUYCv0jbJhNiR+/Bloa6TXkn2910LSWn4R+aQSxjUps= +go.opentelemetry.io/collector/connector/connectortest v0.129.0 h1:zbiXswz2A8Kx9A7ag2z/rZ4H9IBCvJiinPpGOmYL0O4= +go.opentelemetry.io/collector/connector/connectortest v0.129.0/go.mod h1:5vuW7keNPNobSTWv1D1l4B1xiAd42RnS4cWhwTj1Vqk= +go.opentelemetry.io/collector/connector/xconnector v0.129.0 h1:bPQuaEwLOHtocoWfUeIa4skRrfIgO2PGPf4Zn8rGyiQ= +go.opentelemetry.io/collector/connector/xconnector v0.129.0/go.mod h1:N4AxnF2sqjSdMZWqf0fap2kAuFuyubh04IsKvzfr6lw= +go.opentelemetry.io/collector/consumer v1.35.0 h1:mgS42yh1maXBIE65IT4//iOA89BE+7xSUzV8czyevHg= +go.opentelemetry.io/collector/consumer v1.35.0/go.mod h1:9sSPX0hDHaHqzR2uSmfLOuFK9v3e9K3HRQ+fydAjOWs= +go.opentelemetry.io/collector/consumer/consumererror v0.129.0 h1:ud92OBWwqQlHjjx9cB48XhXU/Lz5QSAnXUAErsNHHME= +go.opentelemetry.io/collector/consumer/consumererror v0.129.0/go.mod h1:wtg7mcOkncUO/oZQUfHYoTPiVgMT4yrEKeskFv9dUJg= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.129.0 h1:pz6Xzaf0hWUhPtQQZXNkUubSfCpoeq92IzX2QPV3880= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.129.0/go.mod h1:YUFtf7/GmfR4C7kBvMIU9rcclz5oL2lDS/i229ca4EU= +go.opentelemetry.io/collector/consumer/consumertest v0.129.0 h1:kRmrAgVvPxH5c/rTaOYAzyy0YrrYhQpBNkuqtDRrgeU= +go.opentelemetry.io/collector/consumer/consumertest v0.129.0/go.mod h1:JgJKms1+v/CuAjkPH+ceTnKeDgUUGTQV4snGu5wTEHY= +go.opentelemetry.io/collector/consumer/xconsumer v0.129.0 h1:bRyJ9TGWwnrUnB5oQGTjPhxpVRbkIVeugmvks22bJ4A= +go.opentelemetry.io/collector/consumer/xconsumer v0.129.0/go.mod h1:pbe5ZyPJrtzdt/RRI0LqfT1GVBiJLbtkDKx3SBRTiTY= +go.opentelemetry.io/collector/exporter v0.129.0 h1:HsJ0Q/CkwgWmkXv/nNjgwXY4Dc5ibQsHLvcqscUhMns= +go.opentelemetry.io/collector/exporter v0.129.0/go.mod h1:lIRe4Vo5kyOWUkwSB+2J15Jhl/io964x+MhpV5tJaOY= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.129.0 h1:Wricx4p/QQSzooRmIscwH0ta5zrc+NF0uWwx4NUdU8s= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.129.0/go.mod h1:PbiLvdwaXrClDfhh2WvR39v1YdOvbsTLj0amYe6VXz0= +go.opentelemetry.io/collector/exporter/exportertest v0.129.0 h1:HGS5KgbKwvLrtR972ejTSJgE7iPp0+d1fRcCznf3CVA= +go.opentelemetry.io/collector/exporter/exportertest v0.129.0/go.mod h1:ngH3IeEUNGVO8skhOYhQK56j3e81gRZmgT2qH5iHipA= +go.opentelemetry.io/collector/exporter/otlpexporter v0.129.0 h1:CFUnUA38pQfX2wg7Zr0e5CKma6y0yXgjKpabdEkbZZE= +go.opentelemetry.io/collector/exporter/otlpexporter v0.129.0/go.mod h1:o1wdz9iJJVGVg6zSUmqmT4gBxXtUhrzENH7v66891Ho= +go.opentelemetry.io/collector/exporter/xexporter v0.129.0 h1:BQeQFnvtqv8g0zYBoWimIRX5W9WgiCFo3MSYYBjgbyM= +go.opentelemetry.io/collector/exporter/xexporter v0.129.0/go.mod h1:uoZG9n5maYged7BUIeUYRKANgDgJBnd930u90GHtU0Y= +go.opentelemetry.io/collector/extension v1.35.0 h1:MBnBq5HiXbj+HGCGoqRYPK4tp5cC5+7L9bhiO59T/3k= +go.opentelemetry.io/collector/extension v1.35.0/go.mod h1:Ry/QgkfYUfcQEK96t4d/oi4A7+v56T7wZMyPgnZtEco= +go.opentelemetry.io/collector/extension/extensionauth v1.35.0 h1:dw/G8RdS2x2jbap52TOVpb0NHIGKLTo0iuk69T2NaJg= +go.opentelemetry.io/collector/extension/extensionauth v1.35.0/go.mod h1:bjGAFwd0pjtPbevALtgazGWfHAoOzGr+e/oP5NjAGv4= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.129.0 h1:JFm1T3rxtSmWwG3oltSaZpDrS7KF8AU1efvW2g/0dy8= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.129.0/go.mod h1:So7bI+k8rtVVTosMHoRMKq0+amTg9D6TY/i73sIhhrk= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0 h1:dkE/8H6Ik+2VTpAzwanTe+EzpeqhDNdPTVO4NWIuEPA= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0/go.mod h1:V/Kdpr3nrKru8YrhH8950ac2gfQonifINiddUUmn+g8= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0 h1:04blWaKcbloymwhG8Y3IEJEHlvtDmxgJi0iFchbWOxw= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0/go.mod h1:xc1VLLUebuxPAdKCDopohorTZifokuwFfdvPINmx/GQ= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.129.0 h1:V85S9H4UnhPWEmSewFx0L25+XKXZbNUnQHdjT0YAMRY= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.129.0/go.mod h1:1sWR6V3xQt+9wsc4vW/lM9zn0YmpJH4o/tLBWQFnAxg= +go.opentelemetry.io/collector/extension/extensiontest v0.129.0 h1:YYXwF3rE9/4py+BD/GPUs2k/7e9WwJSDh47L2ljyxMk= +go.opentelemetry.io/collector/extension/extensiontest v0.129.0/go.mod h1:r1aMvxZLlHub1/28ABW/EM88YFP0AW0B+KrB/yxXlHc= +go.opentelemetry.io/collector/extension/xextension v0.129.0 h1:I9Mj+zJDpHVTonZOr7D9wcf94fENPohtt8TBvDCWOTg= +go.opentelemetry.io/collector/extension/xextension v0.129.0/go.mod h1:kdroFrrmIrV3Usm0RTOHXhWoGohdFwsvGWRirJUJYpw= +go.opentelemetry.io/collector/extension/zpagesextension v0.129.0 h1:vmvvh4QoHrjfzcPyHi3cfahJ6GfY1xfaDE5oVtE5Iq8= +go.opentelemetry.io/collector/extension/zpagesextension v0.129.0/go.mod h1:pqA6D+7/KLoq4VkcSYZzzH6/Qwfugkove48SRsY5dQ4= +go.opentelemetry.io/collector/featuregate v1.35.0 h1:c/XRtA35odgxVc4VgOF/PTIk7ajw1wYdQ6QI562gzd4= +go.opentelemetry.io/collector/featuregate v1.35.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0 h1:fx3c7NRDSnvHj6OLFeZPWqCM82RFcAqAKrmM9dCSoiI= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0/go.mod h1:ExshKbDe5u7PdIzWEvrbMXTW9YQUXCCwE7VMjzNmlU4= +go.opentelemetry.io/collector/internal/telemetry v0.129.0 h1:jkzRpIyMxMGdAzVOcBe8aRNrbP7eUrMq6cxEHe0sbzA= +go.opentelemetry.io/collector/internal/telemetry v0.129.0/go.mod h1:riAPlR2LZBV7VEx4LicOKebg3N1Ja3izzkv5fl1Lhiw= +go.opentelemetry.io/collector/otelcol v0.129.0 h1:c9tyaphcIoStM2vcAOqvtpKewN6jNkajlaDXbFrmn7Y= +go.opentelemetry.io/collector/otelcol v0.129.0/go.mod h1:zmV3C/z6TdwGUoJOxAUiDuZRLmv89XHfudklz4V3NL4= +go.opentelemetry.io/collector/pdata v1.35.0 h1:ck6WO6hCNjepADY/p9sT9/rLECTLO5ukYTumKzsqB/E= +go.opentelemetry.io/collector/pdata v1.35.0/go.mod h1:pttpb089864qG1k0DMeXLgwwTFLk+o3fAW9I6MF9tzw= +go.opentelemetry.io/collector/pdata/pprofile v0.129.0 h1:DgZTvjOGmyZRx7Or80hz8XbEaGwHPkIh2SX1A5eXttQ= +go.opentelemetry.io/collector/pdata/pprofile v0.129.0/go.mod h1:uUBZxqJNOk6QIMvbx30qom//uD4hXJ1K/l3qysijMLE= +go.opentelemetry.io/collector/pdata/testdata v0.129.0 h1:n1QLnLOtrcAR57oMSVzmtPsQEpCc/nE5Avk1xfuAkjY= +go.opentelemetry.io/collector/pdata/testdata v0.129.0/go.mod h1:RfY5IKpmcvkS2IGVjl9jG9fcT7xpQEBWpg9sQOn/7mY= +go.opentelemetry.io/collector/pdata/xpdata v0.129.0 h1:adn3OSRQ8fVHMpAoPXCzwV4yygvBskgWzKShfZdbJcw= +go.opentelemetry.io/collector/pdata/xpdata v0.129.0/go.mod h1:J5v/SAmqBo06PthOhfi6dFBOm64z07DdAUn1Sih02TA= +go.opentelemetry.io/collector/pipeline v0.129.0 h1:Mp7RuKLizLQJ0381eJqKQ0zpgkFlhTE9cHidpJQIvMU= +go.opentelemetry.io/collector/pipeline v0.129.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4= +go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0 h1:JDLSoGiUg4JgahMqHXj5TwoZdLsqU/iDG1cGLcMiBeY= +go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0/go.mod h1:qDjE/5uvKmXRHaDzy7yMo/VwSm4njtRWzACTjf5CVjg= +go.opentelemetry.io/collector/processor v1.35.0 h1:YOfHemhhodYn4BnPjN7kWYYDhzPVqRkyHCaQ8mAlavs= +go.opentelemetry.io/collector/processor v1.35.0/go.mod h1:cWHDOpmpAaVNCc9K9j2/okZoLIuP/EpGGRNhM4JGmFM= +go.opentelemetry.io/collector/processor/batchprocessor v0.129.0 h1:eVsu5PpK7OAqYE49uywEV+gtjoOd1GtADKz4va9LUDo= +go.opentelemetry.io/collector/processor/batchprocessor v0.129.0/go.mod h1:V2m/F0zMEAjtKIiuBMhaJ/lxwI8Bv8rVpuL4rbIC36k= +go.opentelemetry.io/collector/processor/processorhelper v0.129.0 h1:/B2UJ7wOc5oJlQBnzwXjqnhFJOidHbdGmFfWyhi1Iyg= +go.opentelemetry.io/collector/processor/processorhelper v0.129.0/go.mod h1:tZXfmQgvpIE/gxLS9tjX82/EBzWt+xNIE0lUmgZzZlk= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.129.0 h1:nd3HNVPKOElqYh9atHDy4pLWB1sr7MnvtOxkce+DdD0= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.129.0/go.mod h1:oSVxVjhARkNU3K2Yp0K13CPZdTDSajucOifk3ur8MbY= +go.opentelemetry.io/collector/processor/processortest v0.129.0 h1:r5iJHdS7Ffdb2zmMVYx4ahe92PLrce5cas/AJEXivkY= +go.opentelemetry.io/collector/processor/processortest v0.129.0/go.mod h1:gdf8GzyzjGoDTA11+CPwC4jfXphtC+B7MWbWn+LIWXc= +go.opentelemetry.io/collector/processor/xprocessor v0.129.0 h1:V3Zgd+YIeu3Ij3DPlGtzdcTwpqOQIqQVcL5jdHHS7sc= +go.opentelemetry.io/collector/processor/xprocessor v0.129.0/go.mod h1:78T+AP5NO137W/E+SibQhaqOyS67fR+IN697b4JFh00= +go.opentelemetry.io/collector/receiver v1.35.0 h1:JOLa0cHLi6cKU+qsBWXkAWLnd5MoHdh8GaUJ97jWguY= +go.opentelemetry.io/collector/receiver v1.35.0/go.mod h1:y1y8DNoP54RsiucXP/qeRuCErBLc1gyvFjO+GIIn91s= +go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0 h1:zBo8oqHqbNapEYZjGdwiyF7crndtt/DIzw/MfBaBzCc= +go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0/go.mod h1:4Le74/C0ErWozM+Pdq2ZNz0OjEMYGG+BFApHHuI4h1k= +go.opentelemetry.io/collector/receiver/receivertest v0.129.0 h1:abzNSUJXrtPwRqDM1R+BWs0uzYN2g7YZa7t6nyeLu3s= +go.opentelemetry.io/collector/receiver/receivertest v0.129.0/go.mod h1:hcn7bZ0gfcQYW00GKfEbhwVDsPhOAKALtxK67dywjYA= +go.opentelemetry.io/collector/receiver/xreceiver v0.129.0 h1:jQSsDPLbnX8tWDNz0a495ACoA4vVe/FlPEIftPdVtmU= +go.opentelemetry.io/collector/receiver/xreceiver v0.129.0/go.mod h1:5vzmNL4Mv2q3xlvw2ypg1d1WWWut9i5bUcphXNbQNN4= +go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 h1:XCN7qkZRNzRYfn6chsMZkbFZxoFcW6fZIsZs2aCzcbc= +go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= +go.opentelemetry.io/collector/service v0.129.0 h1:iauNP1MwcEdSmBW6ls30itxszV8biZRClJyO62B1KCo= +go.opentelemetry.io/collector/service v0.129.0/go.mod h1:U5ulge2o/5Mvoubp0BMU7+xC7SUfw0fpXyPSDbCPAtc= +go.opentelemetry.io/collector/service/hostcapabilities v0.129.0 h1:XYrwQJ8PnO+uMoc6804sm2bZfVB3pNC0G0e2O99oq3Y= +go.opentelemetry.io/collector/service/hostcapabilities v0.129.0/go.mod h1:GArFdsQM1rx56IiYGwOaXE25J3MBoO6JcA3m1xTf2LU= +go.opentelemetry.io/contrib/bridges/otelzap v0.11.0 h1:u2E32P7j1a/gRgZDWhIXC+Shd4rLg70mnE7QLI/Ssnw= +go.opentelemetry.io/contrib/bridges/otelzap v0.11.0/go.mod h1:pJPCLM8gzX4ASqLlyAXjHBEYxgbOQJ/9bidWxD6PEPQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 h1:0tY123n7CdWMem7MOVdKOt0YfshufLCwfE5Bob+hQuM= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0/go.mod h1:CosX/aS4eHnG9D7nESYpV753l4j9q5j3SL/PUYd2lR8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/contrib/otelconf v0.16.0 h1:mTYGRlZtpc/zDaTaUQSnsZ1hyoRONaS4Od/Ny5++lhE= +go.opentelemetry.io/contrib/otelconf v0.16.0/go.mod h1:gnsljuyDyVDg39vUvXKj0BVCiVaokN3b8N5BL/ab8fQ= +go.opentelemetry.io/contrib/propagators/b3 v1.36.0 h1:xrAb/G80z/l5JL6XlmUMSD1i6W8vXkWrLfmkD3w/zZo= +go.opentelemetry.io/contrib/propagators/b3 v1.36.0/go.mod h1:UREJtqioFu5awNaCR8aEx7MfJROFlAWb6lPaJFbHaG0= +go.opentelemetry.io/contrib/zpages v0.61.0 h1:tYvUj377Dn3k1wf1le/f8YWSNQ8k0byS3jK8PiIXu9Y= +go.opentelemetry.io/contrib/zpages v0.61.0/go.mod h1:MFNPHMJOGA1P6m5501ANjOJDp4A9BUQja1Y53CDL8LQ= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 h1:06ZeJRe5BnYXceSM9Vya83XXVaNGe3H1QqsvqRANQq8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2/go.mod h1:DvPtKE63knkDVP88qpatBj81JxN+w1bqfVbsbCbj1WY= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 h1:tPLwQlXbJ8NSOfZc4OkgU5h2A38M4c9kfHSVc4PFQGs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2/go.mod h1:QTnxBwT/1rBIgAG1goq6xMydfYOBKU6KTiYF4fp5zL8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 h1:zwdo1gS2eH26Rg+CoqVQpEK1h8gvt5qyU5Kk5Bixvow= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0/go.mod h1:rUKCPscaRWWcqGT6HnEmYrK+YNe5+Sw64xgQTOJ5b30= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 h1:gAU726w9J8fwr4qRDqu1GYMNNs4gXrU+Pv20/N1UpB4= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0/go.mod h1:RboSDkp7N292rgu+T0MgVt2qgFGu6qa1RpZDOtpL76w= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ= +go.opentelemetry.io/otel/exporters/prometheus v0.58.0 h1:CJAxWKFIqdBennqxJyOgnt5LqkeFRT+Mz3Yjz3hL+h8= +go.opentelemetry.io/otel/exporters/prometheus v0.58.0/go.mod h1:7qo/4CLI+zYSNbv0GMNquzuss2FVZo3OYrGh96n4HNc= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2 h1:12vMqzLLNZtXuXbJhSENRg+Vvx+ynNilV8twBLBsXMY= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2/go.mod h1:ZccPZoPOoq8x3Trik/fCsba7DEYDUnN6yX79pgp2BUQ= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 h1:G8Xec/SgZQricwWBJF/mHZc7A02YHedfFDENwJEdRA0= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0/go.mod h1:PD57idA/AiFD5aqoxGxCvT/ILJPeHy3MjqU/NS7KogY= +go.opentelemetry.io/otel/log v0.12.2 h1:yob9JVHn2ZY24byZeaXpTVoPS6l+UrrxmxmPKohXTwc= +go.opentelemetry.io/otel/log v0.12.2/go.mod h1:ShIItIxSYxufUMt+1H5a2wbckGli3/iCfuEbVZi/98E= +go.opentelemetry.io/otel/log/logtest v0.0.0-20250526142609-aa5bd0e64989 h1:4JF7oY9CcHrPGfBLijDcXZyCzGckVEyOjuat5ktmQRg= +go.opentelemetry.io/otel/log/logtest v0.0.0-20250526142609-aa5bd0e64989/go.mod h1:NToOxLDCS1tXDSB2dIj44H9xGPOpKr0csIN+gnuihv4= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/log v0.12.2 h1:yNoETvTByVKi7wHvYS6HMcZrN5hFLD7I++1xIZ/k6W0= +go.opentelemetry.io/otel/sdk/log v0.12.2/go.mod h1:DcpdmUXHJgSqN/dh+XMWa7Vf89u9ap0/AAk/XGLnEzY= +go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc h1:uqxdywfHqqCl6LmZzI3pUnXT1RGFYyUgxj0AkWPFxi0= +go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc/go.mod h1:TY/N/FT7dmFrP/r5ym3g0yysP1DefqGpAZr4f82P0dE= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -778,10 +791,10 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= 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= @@ -789,8 +802,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -807,10 +820,10 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -823,8 +836,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -885,8 +898,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -898,22 +911,22 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= 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= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.226.0 h1:9A29y1XUD+YRXfnHkO66KggxHBZWg9LsTGqm7TkUvtQ= -google.golang.org/api v0.226.0/go.mod h1:WP/0Xm4LVvMOCldfvOISnWquSRWbG2kArDZcg+W2DbY= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/api v0.230.0 h1:2u1hni3E+UXAXrONrrkfWpi/V6cyKVAbfGVeGtC3OxM= +google.golang.org/api v0.230.0/go.mod h1:aqvtoMk7YkiXx+6U12arQFExiRV9D/ekvMCwCd/TksQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -939,12 +952,12 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -k8s.io/api v0.31.3 h1:umzm5o8lFbdN/hIXbrK9oRpOproJO62CV1zqxXrLgk8= -k8s.io/api v0.31.3/go.mod h1:UJrkIp9pnMOI9K2nlL6vwpxRzzEX5sWgn8kGQe92kCE= -k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg= -k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.31.3 h1:CAlZuM+PH2cm+86LOBemaJI/lQ5linJ6UFxKX/SoG+4= -k8s.io/client-go v0.31.3/go.mod h1:2CgjPUTpv3fE5dNygAr2NcM8nhHzXvxB8KL5gYc3kJs= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= diff --git a/otelcollector/prometheusreceiver/README.md b/otelcollector/prometheusreceiver/README.md index cca64a9de..3fef14006 100644 --- a/otelcollector/prometheusreceiver/README.md +++ b/otelcollector/prometheusreceiver/README.md @@ -68,6 +68,11 @@ prometheus --config.file=prom.yaml ```shell "--feature-gates=receiver.prometheusreceiver.UseCreatedMetric" ``` +- `receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion`: Enables the Prometheus feature flag [created-timestamps-zero-injection](https://prometheus.io/docs/prometheus/latest/feature_flags/#created-timestamps-zero-injection). Currently, this behaviour is disabled by default due to worse CPU performance with higher metric volumes. To enable it, use the following feature gate option: + +```shell +"--feature-gates=receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion" +``` - `receiver.prometheusreceiver.UseCollectorStartTimeFallback`: enables using the collector start time as the metric start time if the process_start_time_seconds metric yields no result (for example if targets @@ -85,12 +90,6 @@ prometheus --config.file=prom.yaml "--feature-gates=receiver.prometheusreceiver.EnableNativeHistograms" ``` -- `receiver.prometheusreceiver.RemoveLegacyResourceAttributes`: Remove `net.host.name`, `net.host.port`, and `http.scheme` resource attributes, which are redundant with the new `server.address`, `server.port`, and `url.scheme` attributes. - -```shell -"--feature-gates=receiver.prometheusreceiver.RemoveLegacyResourceAttributes" -``` - - `receiver.prometheusreceiver.RemoveStartTimeAdjustment`: If enabled, the prometheus receiver no longer sets the start timestamp of metrics if it is not known. Use the `metricstarttime` processor instead if you need this functionality. ```shell diff --git a/otelcollector/prometheusreceiver/apiserver/config.go b/otelcollector/prometheusreceiver/apiserver/config.go deleted file mode 100644 index f1f8464db..000000000 --- a/otelcollector/prometheusreceiver/apiserver/config.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package apiserver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/apiserver" - -import ( - "errors" - - "go.opentelemetry.io/collector/config/confighttp" -) - -type Config struct { - Enabled bool `mapstructure:"enabled"` - ServerConfig confighttp.ServerConfig `mapstructure:"server_config"` -} - -func (cfg *Config) Validate() error { - if !cfg.Enabled { - return nil - } - - if cfg.ServerConfig.Endpoint == "" { - return errors.New("if api_server is enabled, it requires a non-empty server_config endpoint") - } - - return nil -} diff --git a/otelcollector/prometheusreceiver/apiserver/manager.go b/otelcollector/prometheusreceiver/apiserver/manager.go deleted file mode 100644 index 0872065ab..000000000 --- a/otelcollector/prometheusreceiver/apiserver/manager.go +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package apiserver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/apiserver" - -import ( - "context" - "fmt" - "net/http" - "net/url" - "os" - "runtime" - "runtime/debug" - "strings" - "sync" - "time" - - "github.com/mwitkow/go-conntrack" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promhttp" - "github.com/prometheus/common/promslog" - "github.com/prometheus/common/route" - "github.com/prometheus/common/version" - promconfig "github.com/prometheus/prometheus/config" - "github.com/prometheus/prometheus/scrape" - "github.com/prometheus/prometheus/storage" - "github.com/prometheus/prometheus/util/httputil" - "github.com/prometheus/prometheus/web" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/receiver" - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" - "go.uber.org/zap" - "golang.org/x/net/netutil" - - grafanaRegexp "github.com/grafana/regexp" - toolkit_web "github.com/prometheus/exporter-toolkit/web" - api_v1 "github.com/prometheus/prometheus/web/api/v1" -) - -// Use same settings as Prometheus web server -const ( - maxConnections = 512 - readTimeoutMinutes = 10 -) - -type Manager struct { - settings receiver.Settings - shutdown chan struct{} - cfg *Config - promCfg *promconfig.Config - scrapeManager *scrape.Manager - registry *prometheus.Registry - registerer prometheus.Registerer - server *http.Server - mtx sync.RWMutex -} - -func NewManager(set receiver.Settings, cfg *Config, promCfg *promconfig.Config, registry *prometheus.Registry, registerer prometheus.Registerer) *Manager { - return &Manager{ - shutdown: make(chan struct{}), - settings: set, - cfg: cfg, - promCfg: promCfg, - registry: registry, - registerer: registerer, - } -} - -func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager *scrape.Manager) error { - m.settings.Logger.Info("Starting Prometheus API server") - m.scrapeManager = scrapeManager - - // If allowed CORS origins are provided in the receiver config, combine them into a single regex since the Prometheus API server requires this format. - var corsOriginRegexp *grafanaRegexp.Regexp - if m.cfg.ServerConfig.CORS != nil && len(m.cfg.ServerConfig.CORS.AllowedOrigins) > 0 { - var combinedOriginsBuilder strings.Builder - combinedOriginsBuilder.WriteString(m.cfg.ServerConfig.CORS.AllowedOrigins[0]) - for _, origin := range m.cfg.ServerConfig.CORS.AllowedOrigins[1:] { - combinedOriginsBuilder.WriteString("|") - combinedOriginsBuilder.WriteString(origin) - } - combinedRegexp, err := grafanaRegexp.Compile(combinedOriginsBuilder.String()) - if err != nil { - return fmt.Errorf("failed to compile combined CORS allowed origins into regex: %s", err.Error()) - } - corsOriginRegexp = combinedRegexp - } - - // If read timeout is not set in the receiver config, use the default Prometheus value. - readTimeout := m.cfg.ServerConfig.ReadTimeout - if readTimeout == 0 { - readTimeout = time.Duration(readTimeoutMinutes) * time.Minute - } - - // Set the options to keep similar code to the Prometheus repo. - o := &web.Options{ - ScrapeManager: m.scrapeManager, - Context: ctx, - ListenAddresses: []string{m.cfg.ServerConfig.Endpoint}, - ExternalURL: &url.URL{ - Scheme: "http", - Host: m.cfg.ServerConfig.Endpoint, - Path: "", - }, - RoutePrefix: "/", - ReadTimeout: readTimeout, - PageTitle: "Prometheus Receiver", - Flags: make(map[string]string), - MaxConnections: maxConnections, - IsAgent: true, - Registerer: m.registerer, - Gatherer: m.registry, - CORSOrigin: corsOriginRegexp, - } - - // Creates the API object in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L314-L354 - // Anything not defined by the options above will be nil, such as o.QueryEngine, o.Storage, etc. IsAgent=true, so these being nil is expected by Prometheus. - factorySPr := func(_ context.Context) api_v1.ScrapePoolsRetriever { return o.ScrapeManager } - factoryTr := func(_ context.Context) api_v1.TargetRetriever { return o.ScrapeManager } - factoryAr := func(_ context.Context) api_v1.AlertmanagerRetriever { return nil } - factoryRr := func(_ context.Context) api_v1.RulesRetriever { return nil } - var app storage.Appendable - logger := promslog.NewNopLogger() - - apiV1 := api_v1.NewAPI(o.QueryEngine, o.Storage, app, o.ExemplarStorage, factorySPr, factoryTr, factoryAr, - - // This ensures that any changes to the config made, even by the target allocator, are reflected in the API. - func() promconfig.Config { - m.mtx.RLock() - defer m.mtx.RUnlock() - return *m.promCfg - }, - o.Flags, // nil - api_v1.GlobalURLOptions{ - ListenAddress: o.ListenAddresses[0], - Host: o.ExternalURL.Host, - Scheme: o.ExternalURL.Scheme, - }, - func(f http.HandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - f(w, r) - } - }, - o.LocalStorage, // nil - o.TSDBDir, // nil - o.EnableAdminAPI, // nil - logger, - factoryRr, - o.RemoteReadSampleLimit, // nil - o.RemoteReadConcurrencyLimit, // nil - o.RemoteReadBytesInFrame, // nil - o.IsAgent, - o.CORSOrigin, - func() (api_v1.RuntimeInfo, error) { - status := api_v1.RuntimeInfo{ - GoroutineCount: runtime.NumGoroutine(), - GOMAXPROCS: runtime.GOMAXPROCS(0), - GOMEMLIMIT: debug.SetMemoryLimit(-1), - GOGC: os.Getenv("GOGC"), - GODEBUG: os.Getenv("GODEBUG"), - } - - return status, nil - }, - &web.PrometheusVersion{ - Version: version.Version, - Revision: version.Revision, - Branch: version.Branch, - BuildUser: version.BuildUser, - BuildDate: version.BuildDate, - GoVersion: version.GoVersion, - }, - o.NotificationsGetter, - o.NotificationsSub, - o.Gatherer, - o.Registerer, - nil, - o.EnableRemoteWriteReceiver, - o.AcceptRemoteWriteProtoMsgs, - o.EnableOTLPWriteReceiver, - o.ConvertOTLPDelta, - false, - ) - - // Create listener and monitor with conntrack in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L564-L579 - listener, err := m.cfg.ServerConfig.ToListener(ctx) - if err != nil { - return fmt.Errorf("failed to create listener: %s", err.Error()) - } - listener = netutil.LimitListener(listener, o.MaxConnections) - listener = conntrack.NewListener(listener, - conntrack.TrackWithName("http"), - conntrack.TrackWithTracing()) - - // Run the API server in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L582-L630 - mux := http.NewServeMux() - promHandler := promhttp.HandlerFor(o.Gatherer, promhttp.HandlerOpts{Registry: o.Registerer}) - mux.Handle("/metrics", promHandler) - - // This is the path the web package uses, but the router above with no prefix can also be Registered by apiV1 instead. - apiPath := "/api" - if o.RoutePrefix != "/" { - apiPath = o.RoutePrefix + apiPath - logger.Info("Router prefix", "prefix", o.RoutePrefix) - } - av1 := route.New(). - WithInstrumentation(setPathWithPrefix(apiPath + "/v1")) - apiV1.Register(av1) - mux.Handle(apiPath+"/v1/", http.StripPrefix(apiPath+"/v1", av1)) - - spanNameFormatter := otelhttp.WithSpanNameFormatter(func(_ string, r *http.Request) string { - return fmt.Sprintf("%s %s", r.Method, r.URL.Path) - }) - m.server, err = m.cfg.ServerConfig.ToServer(ctx, host, m.settings.TelemetrySettings, otelhttp.NewHandler(mux, "", spanNameFormatter)) - if err != nil { - return err - } - webconfig := "" - - go func() { - if err := toolkit_web.Serve(listener, m.server, &toolkit_web.FlagConfig{WebConfigFile: &webconfig}, logger); err != nil { - m.settings.Logger.Error("API server failed", zap.Error(err)) - } - }() - - return nil -} - -// ApplyConfig updates the config field of the Manager struct. -func (m *Manager) ApplyConfig(cfg *promconfig.Config) error { - m.mtx.Lock() - defer m.mtx.Unlock() - - m.promCfg = cfg - - return nil -} - -func (m *Manager) GetConfig() *promconfig.Config { - m.mtx.RLock() - defer m.mtx.RUnlock() - - return m.promCfg -} - -func (m *Manager) Shutdown(ctx context.Context) error { - close(m.shutdown) - if m.server != nil { - return m.server.Shutdown(ctx) - } - return nil -} - -// Helper function from the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L582-L630 -func setPathWithPrefix(prefix string) func(handlerName string, handler http.HandlerFunc) http.HandlerFunc { - return func(_ string, handler http.HandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - handler(w, r.WithContext(httputil.ContextWithPath(r.Context(), prefix+r.URL.Path))) - } - } -} diff --git a/otelcollector/prometheusreceiver/config.go b/otelcollector/prometheusreceiver/config.go index 0e763d036..bf4e66504 100644 --- a/otelcollector/prometheusreceiver/config.go +++ b/otelcollector/prometheusreceiver/config.go @@ -14,10 +14,10 @@ import ( commonconfig "github.com/prometheus/common/config" promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery/kubernetes" + "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/confmap" "gopkg.in/yaml.v3" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/apiserver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" ) @@ -42,7 +42,7 @@ type Config struct { // APIServer has the settings to enable the receiver to host the Prometheus API // server in agent mode. This allows the user to call the endpoint to get // the config, service discovery, and targets for debugging purposes. - APIServer *apiserver.Config `mapstructure:"api_server"` + APIServer *APIServer `mapstructure:"api_server"` } // Validate checks the receiver configuration is valid. @@ -188,3 +188,20 @@ func checkTLSConfig(tlsConfig commonconfig.TLSConfig) error { } return nil } + +type APIServer struct { + Enabled bool `mapstructure:"enabled"` + ServerConfig confighttp.ServerConfig `mapstructure:"server_config"` +} + +func (cfg *APIServer) Validate() error { + if !cfg.Enabled { + return nil + } + + if cfg.ServerConfig.Endpoint == "" { + return errors.New("if api_server is enabled, it requires a non-empty server_config endpoint") + } + + return nil +} diff --git a/otelcollector/prometheusreceiver/config_test.go b/otelcollector/prometheusreceiver/config_test.go index ab0bfcc21..c020b5374 100644 --- a/otelcollector/prometheusreceiver/config_test.go +++ b/otelcollector/prometheusreceiver/config_test.go @@ -74,7 +74,7 @@ func TestLoadTargetAllocatorConfig(t *testing.T) { assert.NotNil(t, r0.PrometheusConfig) assert.Equal(t, "http://localhost:8080", r0.TargetAllocator.Endpoint) assert.Equal(t, 5*time.Second, r0.TargetAllocator.Timeout) - assert.Equal(t, "client.crt", r0.TargetAllocator.TLSSetting.CertFile) + assert.Equal(t, "client.crt", r0.TargetAllocator.TLS.CertFile) assert.Equal(t, 30*time.Second, r0.TargetAllocator.Interval) assert.Equal(t, "collector-1", r0.TargetAllocator.CollectorID) assert.NotNil(t, r0.PrometheusConfig) diff --git a/otelcollector/prometheusreceiver/factory.go b/otelcollector/prometheusreceiver/factory.go index ed0d4a65d..cfcf2e7dc 100644 --- a/otelcollector/prometheusreceiver/factory.go +++ b/otelcollector/prometheusreceiver/factory.go @@ -6,7 +6,6 @@ package prometheusreceiver // import "github.com/open-telemetry/opentelemetry-co import ( "context" - "github.com/prometheus/common/model" promconfig "github.com/prometheus/prometheus/config" _ "github.com/prometheus/prometheus/discovery/install" // init() of this package registers service discovery impl. "go.opentelemetry.io/collector/component" @@ -34,14 +33,15 @@ var enableNativeHistogramsGate = featuregate.GlobalRegistry().MustRegister( " those Prometheus classic histograms that have a native histogram alternative"), ) +var enableCreatedTimestampZeroIngestionGate = featuregate.GlobalRegistry().MustRegister( + "receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("Enables ingestion of created timestamp."+ + " Created timestamps are injected as 0 valued samples when appropriate."), +) + // NewFactory creates a new Prometheus receiver factory. func NewFactory() receiver.Factory { - // Since Prometheus 3.0, the default validation scheme for metric names is UTF8. - // This includes ScrapeManager lib that is used by the Promethes receiver. - // We need to set the validation scheme to _something_ to avoid panics, and - // UTF8 is the default in Prometheus. - model.NameValidationScheme = model.UTF8Validation - return receiver.NewFactory( metadata.Type, createDefaultConfig, diff --git a/otelcollector/prometheusreceiver/go.mod b/otelcollector/prometheusreceiver/go.mod index da680fd94..e3c981499 100644 --- a/otelcollector/prometheusreceiver/go.mod +++ b/otelcollector/prometheusreceiver/go.mod @@ -8,74 +8,74 @@ require ( github.com/golang/snappy v1.0.0 github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.127.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.127.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.129.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.129.0 github.com/prometheus/client_golang v1.22.0 - github.com/prometheus/common v0.62.0 + github.com/prometheus/common v0.65.0 github.com/prometheus/exporter-toolkit v0.14.0 - github.com/prometheus/prometheus v0.302.1 + github.com/prometheus/prometheus v0.304.1 github.com/stretchr/testify v1.10.0 - go.opentelemetry.io/collector/component v1.33.0 - go.opentelemetry.io/collector/component/componentstatus v0.127.0 - go.opentelemetry.io/collector/component/componenttest v0.127.0 - go.opentelemetry.io/collector/config/confighttp v0.127.0 - go.opentelemetry.io/collector/config/configopaque v1.33.0 - go.opentelemetry.io/collector/config/configtls v1.33.0 - go.opentelemetry.io/collector/confmap v1.33.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0 - go.opentelemetry.io/collector/confmap/xconfmap v0.127.0 - go.opentelemetry.io/collector/consumer v1.33.0 - go.opentelemetry.io/collector/consumer/consumertest v0.127.0 - go.opentelemetry.io/collector/exporter v0.127.0 - go.opentelemetry.io/collector/featuregate v1.33.0 - go.opentelemetry.io/collector/otelcol v0.127.0 - go.opentelemetry.io/collector/pdata v1.33.0 - go.opentelemetry.io/collector/processor v1.33.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.127.0 - go.opentelemetry.io/collector/receiver v1.33.0 - go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0 - go.opentelemetry.io/collector/receiver/receivertest v0.127.0 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 - go.opentelemetry.io/otel v1.35.0 + go.opentelemetry.io/collector/component v1.35.0 + go.opentelemetry.io/collector/component/componentstatus v0.129.0 + go.opentelemetry.io/collector/component/componenttest v0.129.0 + go.opentelemetry.io/collector/config/confighttp v0.129.0 + go.opentelemetry.io/collector/config/configopaque v1.35.0 + go.opentelemetry.io/collector/config/configtls v1.35.0 + go.opentelemetry.io/collector/confmap v1.35.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0 + go.opentelemetry.io/collector/confmap/xconfmap v0.129.0 + go.opentelemetry.io/collector/consumer v1.35.0 + go.opentelemetry.io/collector/consumer/consumertest v0.129.0 + go.opentelemetry.io/collector/exporter v0.129.0 + go.opentelemetry.io/collector/featuregate v1.35.0 + go.opentelemetry.io/collector/otelcol v0.129.0 + go.opentelemetry.io/collector/pdata v1.35.0 + go.opentelemetry.io/collector/processor v1.35.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.129.0 + go.opentelemetry.io/collector/receiver v1.35.0 + go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0 + go.opentelemetry.io/collector/receiver/receivertest v0.129.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 + go.opentelemetry.io/otel v1.36.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 go.uber.org/zap/exp v0.3.0 - golang.org/x/net v0.40.0 + golang.org/x/net v0.41.0 google.golang.org/protobuf v1.36.6 gopkg.in/yaml.v3 v3.0.1 ) require ( - cloud.google.com/go/auth v0.15.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect + cloud.google.com/go/auth v0.16.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.6.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go v1.55.6 // indirect + github.com/aws/aws-sdk-go v1.55.7 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dennwc/varint v1.0.0 // indirect - github.com/digitalocean/godo v1.132.0 // indirect + github.com/digitalocean/godo v1.144.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v27.4.1+incompatible // indirect + github.com/docker/docker v28.1.1+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.4 // indirect @@ -102,8 +102,8 @@ require ( github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-openapi/validate v0.24.0 // indirect - github.com/go-resty/resty/v2 v2.16.3 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-resty/resty/v2 v2.16.5 // indirect + github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/golang-jwt/jwt/v5 v5.2.2 // indirect @@ -115,12 +115,12 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.5 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect github.com/googleapis/gax-go/v2 v2.14.1 // indirect - github.com/gophercloud/gophercloud/v2 v2.4.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect - github.com/hashicorp/consul/api v1.31.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/hashicorp/consul/api v1.32.0 // indirect github.com/hashicorp/cronexpr v1.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -133,10 +133,9 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.18.0 // indirect - github.com/imdario/mergo v0.3.16 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.21.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.3.2 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.3.3 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect @@ -145,48 +144,51 @@ require ( github.com/klauspost/compress v1.18.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect - github.com/knadh/koanf/v2 v2.2.0 // indirect + github.com/knadh/koanf/v2 v2.2.1 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.46.0 // indirect + github.com/linode/linodego v1.49.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.4.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect - github.com/miekg/dns v1.1.63 // indirect + github.com/miekg/dns v1.1.65 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/sys/sequential v0.6.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oklog/ulid v1.3.1 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.127.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.127.0 // indirect + github.com/oklog/ulid/v2 v2.1.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.129.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.129.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect - github.com/ovh/go-ovh v1.6.0 // indirect + github.com/ovh/go-ovh v1.7.0 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/alertmanager v0.28.0 // indirect + github.com/prometheus/alertmanager v0.28.1 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common/assets v0.2.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect - github.com/prometheus/sigv4 v0.1.1 // indirect + github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 // indirect + github.com/prometheus/procfs v0.16.1 // indirect + github.com/prometheus/sigv4 v0.1.2 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 // indirect - github.com/shirou/gopsutil/v4 v4.25.4 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect + github.com/shirou/gopsutil/v4 v4.25.5 // indirect github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/pflag v1.0.6 // indirect @@ -202,87 +204,89 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector/client v1.33.0 // indirect - go.opentelemetry.io/collector/config/configauth v0.127.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.33.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v0.127.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.33.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.127.0 // indirect - go.opentelemetry.io/collector/connector v0.127.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.127.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.127.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.127.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.127.0 // indirect - go.opentelemetry.io/collector/extension v1.33.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.33.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.127.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.127.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.127.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.127.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.127.0 // indirect - go.opentelemetry.io/collector/pipeline v0.127.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.127.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.127.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.127.0 // indirect - go.opentelemetry.io/collector/semconv v0.127.0 // indirect - go.opentelemetry.io/collector/service v0.127.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.127.0 // indirect - go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0 // indirect - go.opentelemetry.io/contrib/otelconf v0.15.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.57.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0 // indirect - go.opentelemetry.io/otel/log v0.11.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.11.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/collector/client v1.35.0 // indirect + go.opentelemetry.io/collector/config/configauth v0.129.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.35.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v0.129.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.35.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.129.0 // indirect + go.opentelemetry.io/collector/connector v0.129.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.129.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.129.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.129.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.129.0 // indirect + go.opentelemetry.io/collector/extension v1.35.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.35.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.129.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.129.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.129.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.129.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.129.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.129.0 // indirect + go.opentelemetry.io/collector/pipeline v0.129.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.129.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.129.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.129.0 // indirect + go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 // indirect + go.opentelemetry.io/collector/service v0.129.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.129.0 // indirect + go.opentelemetry.io/contrib/bridges/otelzap v0.11.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.16.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.58.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 // indirect + go.opentelemetry.io/otel/log v0.12.2 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.12.2 // indirect + go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.38.0 // indirect - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect - golang.org/x/mod v0.24.0 // indirect - golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sync v0.14.0 // indirect + golang.org/x/crypto v0.39.0 // indirect + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.11.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.34.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.226.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.72.1 // indirect + google.golang.org/api v0.230.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/grpc v1.73.0 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/api v0.31.3 // indirect - k8s.io/apimachinery v0.31.3 // indirect - k8s.io/client-go v0.31.3 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect - k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/otelcollector/prometheusreceiver/go.sum b/otelcollector/prometheusreceiver/go.sum index af2b2c7c1..d80692932 100644 --- a/otelcollector/prometheusreceiver/go.sum +++ b/otelcollector/prometheusreceiver/go.sum @@ -1,17 +1,17 @@ -cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps= -cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8= -cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= -cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= +cloud.google.com/go/auth v0.16.0 h1:Pd8P1s9WkcrBE2n/PhAwKsdrR35V3Sg2II9B+ndM3CU= +cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 h1:g0EZJwz7xkXQiZAI5xi9f3WWFYBlX1CPTrR+NDToRkQ= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 h1:1mvYtZfWQAnwNah/C+Z+Jb9rQH95LPE2vlmMuWAHJk8= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1/go.mod h1:75I/mXtme1JyWFtz8GocPHVFyH421IBoZErnO16dd0k= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1 h1:Bk5uOhSAenHyR5P61D/NzeQCv+4fEVV8mOkJ82NqpWw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1/go.mod h1:QZ4pw3or1WPmRBxf0cHd1tknzrT54WPBOQoGutCPvSU= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0 h1:OVoM452qUFBrX+URdH3VpR299ma4kfom0yB0URYky9g= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0/go.mod h1:kUjrAo8bgEwLeZ/CmHqNl3Z/kPm7y6FKfxxK0izYUg4= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= 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/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -24,8 +24,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5gYVyhkij+RTJ/VR6QIUaCfWeaFm2ycsjQ= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= 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/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -45,8 +45,8 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= 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.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= -github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= +github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -63,8 +63,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/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= @@ -78,14 +78,14 @@ github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.132.0 h1:n0x6+ZkwbyQBtIU1wwBhv26EINqHg0wWQiBXlwYg/HQ= -github.com/digitalocean/godo v1.132.0/go.mod h1:PU8JB6I1XYkQIdHFop8lLAY9ojp6M0XcU0TWaQSxbrc= +github.com/digitalocean/godo v1.144.0 h1:rDCsmpwcDe5egFQ3Ae45HTde685/GzX037mWRMPufW0= +github.com/digitalocean/godo v1.144.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v27.4.1+incompatible h1:ZJvcY7gfwHn1JF48PfbyXg7Jyt9ZCWDW+GGXOIxEwp4= -github.com/docker/docker v27.4.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= +github.com/docker/docker v28.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -150,13 +150,13 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= -github.com/go-resty/resty/v2 v2.16.3 h1:zacNT7lt4b8M/io2Ahj6yPypL7bqx9n1iprfQuodV+E= -github.com/go-resty/resty/v2 v2.16.3/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= +github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I= github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -201,20 +201,20 @@ github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= 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.5 h1:VgzTY2jogw3xt39CusEnFJWm7rlsq5yL5q9XdLOuP5g= -github.com/googleapis/enterprise-certificate-proxy v0.3.5/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= -github.com/gophercloud/gophercloud/v2 v2.4.0 h1:XhP5tVEH3ni66NSNK1+0iSO6kaGPH/6srtx6Cr+8eCg= -github.com/gophercloud/gophercloud/v2 v2.4.0/go.mod h1:uJWNpTgJPSl2gyzJqcU/pIAhFUWvIkp8eE8M15n9rs4= +github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= +github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= 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-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= -github.com/hashicorp/consul/api v1.31.0 h1:32BUNLembeSRek0G/ZAM6WNfdEwYdYo8oQ4+JoqGkNQ= -github.com/hashicorp/consul/api v1.31.0/go.mod h1:2ZGIiXM3A610NmDULmCHd/aqBJj8CkMfOhswhOafxRg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= +github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= @@ -266,14 +266,12 @@ github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977Vrm github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/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.18.0 h1:BemrVGeWI8Kn/pvaC1jBsHZxQMnRqOydS7Ju4BERB4Q= -github.com/hetznercloud/hcloud-go/v2 v2.18.0/go.mod h1:r5RTzv+qi8IbLcDIskTzxkFIji7Ovc8yNgepQR9M+UA= -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/hetznercloud/hcloud-go/v2 v2.21.0 h1:wUpQT+fgAxIcdMtFvuCJ78ziqc/VARubpOQPQyj4Q84= +github.com/hetznercloud/hcloud-go/v2 v2.21.0/go.mod h1:WSM7w+9tT86sJTNcF8a/oHljC3HUmQfcLxYsgx6PpSc= 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.3.2 h1:2mUmrZZz6cPyT9IRX0T8fBLc/7XU/eTxP2Y5tS7/09k= -github.com/ionos-cloud/sdk-go/v6 v6.3.2/go.mod h1:SXrO9OGyWjd2rZhAhEpdYN6VUAODzzqRdqA9BCviQtI= +github.com/ionos-cloud/sdk-go/v6 v6.3.3 h1:q33Sw1ZqsvqDkFaKG53dGk7BCOvPCPbGZpYqsF6tdjw= +github.com/ionos-cloud/sdk-go/v6 v6.3.3/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInww= github.com/jarcoal/httpmock v1.3.1/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -291,8 +289,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKuao2vNdfD82fjjgPLfyHLpR41Z88viRWs= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw= +github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= +github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -301,8 +299,8 @@ github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpb github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= -github.com/knadh/koanf/v2 v2.2.0 h1:FZFwd9bUjpb8DyCWARUBy5ovuhDs1lI87dOEn2K8UVU= -github.com/knadh/koanf/v2 v2.2.0/go.mod h1:PSFru3ufQgTsI7IF+95rf9s8XA1+aHxKuO/W+dPoHEY= +github.com/knadh/koanf/v2 v2.2.1 h1:jaleChtw85y3UdBnI0wCqcg1sj1gPoz6D3caGNHtrNE= +github.com/knadh/koanf/v2 v2.2.1/go.mod h1:PSFru3ufQgTsI7IF+95rf9s8XA1+aHxKuO/W+dPoHEY= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -316,8 +314,8 @@ 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/linode/linodego v1.46.0 h1:+uOG4SD2MIrhbrLrvOD5HrbdLN3D19Wgn3MgdUNQjeU= -github.com/linode/linodego v1.46.0/go.mod h1:vyklQRzZUWhFVBZdYx4dcYJU/gG9yKB9VUcUs6ub0Lk= +github.com/linode/linodego v1.49.0 h1:MNd3qwvQzbXB5mCpvdCqlUIu1RPA9oC+50LyB9kK+GQ= +github.com/linode/linodego v1.49.0/go.mod h1:B+HAM3//4w1wOS0BwdaQBKwBxlfe6kYJ7bSC6jJ/xtc= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= @@ -346,8 +344,8 @@ github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.63 h1:8M5aAw6OMZfFXTT7K5V0Eu5YiiL8l7nUAkyN6C9YwaY= -github.com/miekg/dns v1.1.63/go.mod h1:6NGHfjhpmr5lt3XPLuyfDJi5AXbNIPM9PY6H6sF1Nfs= +github.com/miekg/dns v1.1.65 h1:0+tIPHzUW0GCge7IiK3guGP57VAw7hoPDfApjkMD1Fc= +github.com/miekg/dns v1.1.65/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= 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= @@ -362,6 +360,10 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx 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/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -380,19 +382,22 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= 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.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= -github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= +github.com/ovh/go-ovh v1.7.0 h1:V14nF7FwDjQrZt9g7jzcvAAQ3HN6DNShRFRMC3jLoPw= +github.com/ovh/go-ovh v1.7.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= @@ -410,8 +415,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/alertmanager v0.28.0 h1:sLN+6HhZet8hrbmGHLAHWsTXgZSVCvq9Ix3U3wvivqc= -github.com/prometheus/alertmanager v0.28.0/go.mod h1:/okSnb2LlodbMlRoOWQEKtqI/coOo2NKZDm2Hu9QHLQ= +github.com/prometheus/alertmanager v0.28.1 h1:BK5pCoAtaKg01BYRUJhEDV1tqJMEtYBGzPw8QdvnnvA= +github.com/prometheus/alertmanager v0.28.1/go.mod h1:0StpPUDDHi1VXeM7p2yYfeZgLVi/PPlt39vo9LQUHxM= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= @@ -424,37 +429,39 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= +github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 h1:YaJ1JqyKGIUFIMUpMeT22yewZMXiTt5sLgWG1D/m4Yc= +github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07/go.mod h1:ZO/4EUanXL7wbvfMHcS+rq9sCBxICdaU8RBFkVg5wv0= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -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.302.1 h1:xqVdrwrB4WNpdgJqxsz5loqFWNUZitsK8myqLuSZ6Ag= -github.com/prometheus/prometheus v0.302.1/go.mod h1:YcyCoTbUR/TM8rY3Aoeqr0AWTu/pu1Ehh+trpX3eRzg= -github.com/prometheus/sigv4 v0.1.1 h1:UJxjOqVcXctZlwDjpUpZ2OiMWJdFijgSofwLzO1Xk0Q= -github.com/prometheus/sigv4 v0.1.1/go.mod h1:RAmWVKqx0bwi0Qm4lrKMXFM0nhpesBcenfCtz9qRyH8= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/prometheus v0.304.1 h1:e4kpJMb2Vh/PcR6LInake+ofcvFYHT+bCfmBvOkaZbY= +github.com/prometheus/prometheus v0.304.1/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= +github.com/prometheus/sigv4 v0.1.2 h1:R7570f8AoM5YnTUPFm3mjZH5q2k4D+I/phCWvZ4PXG8= +github.com/prometheus/sigv4 v0.1.2/go.mod h1:GF9fwrvLgkQwDdQ5BXeV9XUSCH/IPNqzvAoaohfjqMU= github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg= github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= -github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E= -github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw= +github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM= +github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 h1:yoKAVkEVwAqbGbR8n87rHQ1dulL25rKloGadb3vm770= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30/go.mod h1:sH0u6fq6x4R5M7WxkoQFY/o7UaiItec0o1LinLCJNq8= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shirou/gopsutil/v4 v4.25.4 h1:cdtFO363VEOOFrUCjZRh4XVJkb548lyF0q0uTeMqYPw= -github.com/shirou/gopsutil/v4 v4.25.4/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= +github.com/shirou/gopsutil/v4 v4.25.5 h1:rtd9piuSMGeU8g1RMXjZs9y9luK5BwtnG7dZaQUJAsc= +github.com/shirou/gopsutil/v4 v4.25.5/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c= github.com/shoenig/test v1.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= @@ -510,168 +517,174 @@ go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector v0.127.0 h1:W8Gs3W/Z2kY6cDSb6yv79Wtqg8DbcKEYz5dNIBooaFk= -go.opentelemetry.io/collector v0.127.0/go.mod h1:wtiUNv3pd9r104JaFq1IlGrKdD5ExNkjPcfST8+rgxM= -go.opentelemetry.io/collector/client v1.33.0 h1:1S/t3CV3SnmwjbTSKj1DoMsQkDq3bBlLt9eREX/Lzrk= -go.opentelemetry.io/collector/client v1.33.0/go.mod h1:CMX7Ly/zQE7hH9T4NUyT9kKYlZC8JIu7ncBzEL6kLYM= -go.opentelemetry.io/collector/component v1.33.0 h1:AoP5ZGEU7Q3YDYQx2CgYy82Xmy3gLgh1WCMeLtTXXFo= -go.opentelemetry.io/collector/component v1.33.0/go.mod h1:/5v3hl1GSQT45D6T7sE/LB6nlQMMRHCYDX1glJamh7E= -go.opentelemetry.io/collector/component/componentstatus v0.127.0 h1:3oZU2b7Giyc+tnrStYDWJAPHt2QxWOWuhTumGiHl9OQ= -go.opentelemetry.io/collector/component/componentstatus v0.127.0/go.mod h1:9afwixYMvsb1xvmxxg33XzMU7ZTe4pBitkugj5DDZdQ= -go.opentelemetry.io/collector/component/componenttest v0.127.0 h1:2cieQeh5OS1zf73Aad4b8Rf5vCDk5Hlb6oeJH7Q1VYs= -go.opentelemetry.io/collector/component/componenttest v0.127.0/go.mod h1:0jHbHYRXSNS+nm2vSsxpdAsIj+EDehxKRGk4oclyHKs= -go.opentelemetry.io/collector/config/configauth v0.127.0 h1:31PvdHi0mSXJQAUT0jlicOlT2CsPlkc9KHr/Ek3tIj0= -go.opentelemetry.io/collector/config/configauth v0.127.0/go.mod h1:Jzle3Nup5LCxcJPb4DdPpH5iEqDOD6WSMeiqBBWksbo= -go.opentelemetry.io/collector/config/configcompression v1.33.0 h1:nXKQ+wN/8O0dyjkpieIwQ3PWclJa0mcGwv9mmYd48oU= -go.opentelemetry.io/collector/config/configcompression v1.33.0/go.mod h1:QwbNpaOl6Me+wd0EdFuEJg0Cc+WR42HNjJtdq4TwE6w= -go.opentelemetry.io/collector/config/confighttp v0.127.0 h1:VOMJ4v79SxiUVabl+kw/j56zOKs0zC5073R4SaQ4gbY= -go.opentelemetry.io/collector/config/confighttp v0.127.0/go.mod h1:/HxOPqXjYm1ViIwmxesqayozvTWawnd1bg6F2WMfBTs= -go.opentelemetry.io/collector/config/configmiddleware v0.127.0 h1:gJ6xTs3cip7Q5zgMcdBj5fiYYHpmXGclGuHCxDKs+RA= -go.opentelemetry.io/collector/config/configmiddleware v0.127.0/go.mod h1:yYxOsEgHG8WoX4ShSJMpXVskU5GTK3ecTAHzqH6YixE= -go.opentelemetry.io/collector/config/configopaque v1.33.0 h1:QNiPszINK/pBA+tFWgct7IXka+X6W2E4k/Sy8TTg0s8= -go.opentelemetry.io/collector/config/configopaque v1.33.0/go.mod h1:rw0/X78O8cOk0dhACqNbdiKk1PF7z7mwq9wgSpWoqgs= -go.opentelemetry.io/collector/config/configretry v1.33.0 h1:HAzchQZKq1lCVzLZnUjRYt3J+Uk4Q1Mr1SZXMgwtb+c= -go.opentelemetry.io/collector/config/configretry v1.33.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ= -go.opentelemetry.io/collector/config/configtelemetry v0.127.0 h1:m4HKEbxcxclMiJJyIvbaJrQbnG+Eck9l8827f8jTcWw= -go.opentelemetry.io/collector/config/configtelemetry v0.127.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA= -go.opentelemetry.io/collector/config/configtls v1.33.0 h1:4pGT0nFM24KCtyyq8ng7VWW9fVN1VLQMlkNrMhiWRhU= -go.opentelemetry.io/collector/config/configtls v1.33.0/go.mod h1:50tvOLlI6iedkrQ9/HMO1KWxzzx0Nu28MgSRXxTwSkY= -go.opentelemetry.io/collector/confmap v1.33.0 h1:dCLSrONMssTWhnbELZZpJoWMn+P+DVJc8r10JJCeS/4= -go.opentelemetry.io/collector/confmap v1.33.0/go.mod h1:fq5ccP4lzF3IVK/Cs0kWsiH0dynejXkMc8gaNwvkvtk= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0 h1:T7rVBmAKgLDLXYKQbCrgw15eD9sAhHqvnSGxYv735ew= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.33.0/go.mod h1:JlAC1QMaaPiPx7x8hQYRcxxf2GiOeHYaM8uEIri1dPg= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.33.0 h1:M14VV2/mSU9TMnxfZeHi/fVgzPMv0caPPDNgFXoN8SU= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.33.0/go.mod h1:8yugd3piWlNFCssSTlSdc9KAWGGah+dJ86Yr2wdFg9I= -go.opentelemetry.io/collector/confmap/xconfmap v0.127.0 h1:isSNkBXltLxUWstxJyHcJ3qVo9qp9GABCVhzIvZgIdM= -go.opentelemetry.io/collector/confmap/xconfmap v0.127.0/go.mod h1:K9GaSgmMYxM1/QlAVNIj2fX9LekInm9dwFnIeF1HCgs= -go.opentelemetry.io/collector/connector v0.127.0 h1:oH1qfmZK5Ma6ytbXcInFHySSv3M34rBTCS+DbXzZK/4= -go.opentelemetry.io/collector/connector v0.127.0/go.mod h1:KYOVGKGj23WL4+y5bHvbPc7VSPRm8BpwzKdx6YOzb98= -go.opentelemetry.io/collector/connector/connectortest v0.127.0 h1:bTJCvSWj4TywQ4i9AAF3PFMcAuE7oUtYBXyzl6ng7Yo= -go.opentelemetry.io/collector/connector/connectortest v0.127.0/go.mod h1:1khc74iFfEJYYOazVfr6KRAfHESNrR9fUgpNtx0I55I= -go.opentelemetry.io/collector/connector/xconnector v0.127.0 h1:re8+Wt4uzgcXRs2uagBotAImGgjjqdZg6i/vpdjAe7U= -go.opentelemetry.io/collector/connector/xconnector v0.127.0/go.mod h1:UQODXm9pN1LbOEQqjQ225PMI8caNCmWHMQxmW9V72cA= -go.opentelemetry.io/collector/consumer v1.33.0 h1:y6ohYtFsXHdD3eJ67SRHSgumRQRNlR6N+DuyjOq3hYo= -go.opentelemetry.io/collector/consumer v1.33.0/go.mod h1:WwB/nHWw6KwumVy7OayUmvRa7V3UsfK+f8qwW8/c5rY= -go.opentelemetry.io/collector/consumer/consumererror v0.127.0 h1:9MylkP5eR2hlaj80v67VRUjSoiHNNHTK37gCrtz/9+w= -go.opentelemetry.io/collector/consumer/consumererror v0.127.0/go.mod h1:7FRcHa5E8rMytzJHRdzd9SzgweDwfvEc92Clq54BjSA= -go.opentelemetry.io/collector/consumer/consumertest v0.127.0 h1:rtp7ilS1P1xVfmZu0XnWohhi1N2d+wtWo9ORo8A1Xb8= -go.opentelemetry.io/collector/consumer/consumertest v0.127.0/go.mod h1:SFn8ifdrKulaQWDIvQskmEjSNdMZMQ5upQYJXLFEvzg= -go.opentelemetry.io/collector/consumer/xconsumer v0.127.0 h1:23qpVECDiqad44d9HtQ1M4P4g2xbB4A7R1b9yux2Gag= -go.opentelemetry.io/collector/consumer/xconsumer v0.127.0/go.mod h1:vZ06tk8nu2OyeizjN6AtlaftY79WuODi2rC3U7lxsb4= -go.opentelemetry.io/collector/exporter v0.127.0 h1:qy86B33YBKaBRwEbXLPe6ju3P05MqozyfUGW11RiaQ0= -go.opentelemetry.io/collector/exporter v0.127.0/go.mod h1:P72zzaz4tdK/MOGhliimvs4Cjrlefa5XunEfrs0U5i8= -go.opentelemetry.io/collector/exporter/exportertest v0.127.0 h1:P6QYcPw1VSpXb9QYiLjUeIGKpbwfx+P9b0hlPDO5JLo= -go.opentelemetry.io/collector/exporter/exportertest v0.127.0/go.mod h1:5qdUXbocIpzAA8SJOyYq+gGz2h3JNileYnLJ6fBR2/8= -go.opentelemetry.io/collector/exporter/xexporter v0.127.0 h1:vP5Sk3s35u6oazXqm4nLkz/0Xud3dVAIqdWt8wrqQBs= -go.opentelemetry.io/collector/exporter/xexporter v0.127.0/go.mod h1:0x+KzQsI6VmQnx3MO4C/XmMeL7zmY6bZPHaktTAekKY= -go.opentelemetry.io/collector/extension v1.33.0 h1:QXNOwcvKi9iwai83ielK8B8fCOH9wNO9K98IY0ftotM= -go.opentelemetry.io/collector/extension v1.33.0/go.mod h1:EVsoOULEODW5vzHE76ltl7BjOdaYnDw5/EmAFFFAmBg= -go.opentelemetry.io/collector/extension/extensionauth v1.33.0 h1:m7PQze6Z9xddM1UmbU2P25cipAe7koAEaR6lPgxPMxE= -go.opentelemetry.io/collector/extension/extensionauth v1.33.0/go.mod h1:4sqbOn6DeRFEFpmBKElk92mdv9lImrXrCJaR8s05K68= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.127.0 h1:CXSYbXZBD7cLI1HlIp1w+hJmyznf75ZYeFitj6FDxDg= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.127.0/go.mod h1:GKxP+mkK2Pq6h9trvZ7/Vb4XM/fosuwvB08A1mnlNYM= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0 h1:WHe1RZScVJJV3sh1pHIF/WJAaZ7VeqejmbQ1bU4/TDM= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.127.0/go.mod h1:OZRBpnrS7reS0PfQeyQiFgE1UnHFHwU6V4jHo51NGh8= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0 h1:5dM/Wqnvn6g6qLaPZy+86dyfiEZgibNcY/EGOgaxtCM= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.127.0/go.mod h1:XGFqdRdGYXJt3IotRW72tgSCFS20Vr9jk5jqQiinmXc= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.127.0 h1:18YkheReX/x/pJGGCtwBLPUcCnzGUy79IQAmQibGVLA= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.127.0/go.mod h1:aqtxnTgH5F6OfWanYrEM9KKy1uWaBU46MZKEvDOzBv0= -go.opentelemetry.io/collector/extension/extensiontest v0.127.0 h1:wf+rP15+mRRyNfhAPNccNOsRAOyEIOMNleJiMbYYI2A= -go.opentelemetry.io/collector/extension/extensiontest v0.127.0/go.mod h1:yZKXiLKaJOTXgNOmvWgYKZ2DGToCxHzrqN6PX8YC+fI= -go.opentelemetry.io/collector/extension/xextension v0.127.0 h1:JT2lXY+MGiXuU6AoBX5kRLnUtr5jG6+xKSV0o//rMTk= -go.opentelemetry.io/collector/extension/xextension v0.127.0/go.mod h1:IFx3P/zH8Gey2XP70eb5q4OZHBWMtizg5Gr71eXBndA= -go.opentelemetry.io/collector/extension/zpagesextension v0.127.0 h1:iwxxrUh/5B858EAKqYDxjfiiINtioyFhty/0apHDV5A= -go.opentelemetry.io/collector/extension/zpagesextension v0.127.0/go.mod h1:w6wwIJ1f+yM28kphp7leqeho2lpVr8Sb5qt6Cwwpzk4= -go.opentelemetry.io/collector/featuregate v1.33.0 h1:ronhxafsUE7H3Cem4U2PXrvDZhxA9Gixx4Wik7X32X8= -go.opentelemetry.io/collector/featuregate v1.33.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0 h1:LXLYLmPuf7ZwygcQmzFJzbc66CGC+CrFSxEjKH/ZOQ8= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.127.0/go.mod h1:V16/QfrzLcGVI8gcTujYU4i9U9+IDA6UOC8hjM659tY= -go.opentelemetry.io/collector/internal/telemetry v0.127.0 h1:/wAnPmFjUN7MwnRyDYJzUJZa5n0qK9zM1F7PgMWM5Y0= -go.opentelemetry.io/collector/internal/telemetry v0.127.0/go.mod h1:Un7Zn//l0BkE6hk6wirsTGwnJJpxw/gJWgzYL3eSruk= -go.opentelemetry.io/collector/otelcol v0.127.0 h1:nCOfC4IpJe36QOmLcFubwyFjeTfo268uWpMmRo5R0I4= -go.opentelemetry.io/collector/otelcol v0.127.0/go.mod h1:jN1rfCDqohNNy/KnLhIEWLSUz0ZQC+GuI6VkNMdjZZs= -go.opentelemetry.io/collector/pdata v1.33.0 h1:PuqiZzdCoBJo9NmMzuYfzazpeFZyLmbDVcRrvb497lg= -go.opentelemetry.io/collector/pdata v1.33.0/go.mod h1:TDvbHuvIK+g6xqu1gxtz8ti4pB2x1WcBpjFob5KfleU= -go.opentelemetry.io/collector/pdata/pprofile v0.127.0 h1:t0fpwMunK+dkUTPFc0zim8qfAan086eMqpSufnt+H30= -go.opentelemetry.io/collector/pdata/pprofile v0.127.0/go.mod h1:6S6q2+vaF7qfDxLKctQUB+CN7hThuz73p4le6mYLWnQ= -go.opentelemetry.io/collector/pdata/testdata v0.127.0 h1:1j6KWO/7TyyUaYpIeyxWzsE/klVYGFhbsTCJp4GaTco= -go.opentelemetry.io/collector/pdata/testdata v0.127.0/go.mod h1:UXvOckTD4hhAA9nzRQik0lVBU/hJ+SFes+ar9LjzYBk= -go.opentelemetry.io/collector/pipeline v0.127.0 h1:WdllRrWwsJ1yAr9l4LRiArb0ekdNaGuMJP8zQ6lZlos= -go.opentelemetry.io/collector/pipeline v0.127.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4= -go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0 h1:dWftaJ1yr5BoI5S5Xi5g73yAFm439Uqy5oKio7dPKyc= -go.opentelemetry.io/collector/pipeline/xpipeline v0.127.0/go.mod h1:w/l+ks0aBhxJyDG8chLY8wff6SgqycWpxjBPlaVD2UI= -go.opentelemetry.io/collector/processor v1.33.0 h1:oI8gBA/HvGQru/45tUp1kGXz9EzemhGS0ufInPZzQoA= -go.opentelemetry.io/collector/processor v1.33.0/go.mod h1:frlKFbtD+VBSK2vqbiDX1qy0bzkfdjpnUEdIl9wCZeA= -go.opentelemetry.io/collector/processor/batchprocessor v0.127.0 h1:HyG0C5xCo8JbvctyzWsyeeOcH5VU+3oQSHBvgrB3njQ= -go.opentelemetry.io/collector/processor/batchprocessor v0.127.0/go.mod h1:xuxPowQ7xXLmWfNpBlVVb+N79CmQAiMqgqSeh6KjCfg= -go.opentelemetry.io/collector/processor/processortest v0.127.0 h1:NKSOBWg5ggJO0km5FJ/UeFU5MORvbqNJEhdT1O74OtA= -go.opentelemetry.io/collector/processor/processortest v0.127.0/go.mod h1:6Q0HdaiuakBwfnVjEhf3HtilfIlXRu0DKQGgfv5FasY= -go.opentelemetry.io/collector/processor/xprocessor v0.127.0 h1:WEXmmIbh/ifag9yS42CUHHMOwbdGvbr8jr6MLrL2MDU= -go.opentelemetry.io/collector/processor/xprocessor v0.127.0/go.mod h1:IHpB7FxRjgzHr3+EwfleRx33iMkkNq5GxzlGaxuRhBY= -go.opentelemetry.io/collector/receiver v1.33.0 h1:ge3LSQZ5uSZQUQhGb9hg1iWIUg6NQwOs+Wv29DyRZmk= -go.opentelemetry.io/collector/receiver v1.33.0/go.mod h1:RkTKFqh9+lSY3QayvfJ39dv7bAMRIHHnx1dd8TvmVMU= -go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0 h1:Hjhd9xV+IlJLFxx3d1k3hos/CinkDj6diBZSU208mRQ= -go.opentelemetry.io/collector/receiver/receiverhelper v0.127.0/go.mod h1:gsOnOAQRjShnnIDMGFJBd4N8jiDmt7JPEmcvQp6g/Jw= -go.opentelemetry.io/collector/receiver/receivertest v0.127.0 h1:3XtARAYqYxhcOa9LMmr9tc03sKZZFjsTjUgcJlPxZI0= -go.opentelemetry.io/collector/receiver/receivertest v0.127.0/go.mod h1:OSMA/bmiB+a73JboiCuvVPrPR7+1CuMh1PTNRTWDTEQ= -go.opentelemetry.io/collector/receiver/xreceiver v0.127.0 h1:oUAz3sCcOl+Mt/e5Gq3nZX0J0bpFUghLkItnC0bqWy0= -go.opentelemetry.io/collector/receiver/xreceiver v0.127.0/go.mod h1:spfky570JgiS7CRDbM/DiWJSM/mkq5RmdwldbFOMVoM= -go.opentelemetry.io/collector/semconv v0.127.0 h1:Mh5VEhH0bXAHQSvjHK31sN0Ct8vSNqaxG7aghQBC8Y8= -go.opentelemetry.io/collector/semconv v0.127.0/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= -go.opentelemetry.io/collector/service v0.127.0 h1:72JKDcEhTqEsEGrlzX7g459O4HgS8ryczGwIr67T4So= -go.opentelemetry.io/collector/service v0.127.0/go.mod h1:yL3cVJhbISZZgGOuNFa4inPNS+IeFUfLLJ2FZio5dO8= -go.opentelemetry.io/collector/service/hostcapabilities v0.127.0 h1:nAdem/Lz9JLvWpZ41atvc1EUhk7Np2VmmBHx1AP/N3w= -go.opentelemetry.io/collector/service/hostcapabilities v0.127.0/go.mod h1:IbK3DF5IplTqXpj37iGSeOej6F6FZAFb/QroQ7F8p+8= -go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 h1:ojdSRDvjrnm30beHOmwsSvLpoRF40MlwNCA+Oo93kXU= -go.opentelemetry.io/contrib/bridges/otelzap v0.10.0/go.mod h1:oTTm4g7NEtHSV2i/0FeVdPaPgUIZPfQkFbq0vbzqnv0= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0 h1:iQZYNQ7WwIcYXzOPR46FQv9O0dS1PW16RjvR0TjDOe8= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.59.0/go.mod h1:54CaSNqYEXvpzDh8KPjiMVoWm60t5R0dZRt0leEPgAs= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/contrib/otelconf v0.15.0 h1:BLNiIUsrNcqhSKpsa6CnhE6LdrpY1A8X0szMVsu99eo= -go.opentelemetry.io/contrib/otelconf v0.15.0/go.mod h1:OPH1seO5z9dp1P26gnLtoM9ht7JDvh3Ws6XRHuXqImY= -go.opentelemetry.io/contrib/propagators/b3 v1.35.0 h1:DpwKW04LkdFRFCIgM3sqwTJA/QREHMeMHYPWP1WeaPQ= -go.opentelemetry.io/contrib/propagators/b3 v1.35.0/go.mod h1:9+SNxwqvCWo1qQwUpACBY5YKNVxFJn5mlbXg/4+uKBg= -go.opentelemetry.io/contrib/zpages v0.60.0 h1:wOM9ie1Hz4H88L9KE6GrGbKJhfm+8F1NfW/Y3q9Xt+8= -go.opentelemetry.io/contrib/zpages v0.60.0/go.mod h1:xqfToSRGh2MYUsfyErNz8jnNDPlnpZqWM/y6Z2Cx7xw= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 h1:QcFwRrZLc82r8wODjvyCbP7Ifp3UANaBSmhDSFjnqSc= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0/go.mod h1:CXIWhUomyWBG/oY2/r/kLp6K/cmx9e/7DLpBuuGdLCA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 h1:0NIXxOCFx+SKbhCVxwl3ETG8ClLPAa0KuKV6p3yhxP8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0/go.mod h1:ChZSJbbfbl/DcRZNc9Gqh6DYGlfjw4PvO1pEOZH1ZsE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0 h1:k6KdfZk72tVW/QVZf60xlDziDvYAePj5QHwoQvrB2m8= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.11.0/go.mod h1:5Y3ZJLqzi/x/kYtrSrPSx7TFI/SGsL7q2kME027tH6I= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0 h1:T0Ec2E+3YZf5bgTNQVet8iTDW7oIk03tXHq+wkwIDnE= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.35.0/go.mod h1:30v2gqH+vYGJsesLWFov8u47EpYTcIQcBjKpI6pJThg= -go.opentelemetry.io/otel/log v0.11.0 h1:c24Hrlk5WJ8JWcwbQxdBqxZdOK7PcP/LFtOtwpDTe3Y= -go.opentelemetry.io/otel/log v0.11.0/go.mod h1:U/sxQ83FPmT29trrifhQg+Zj2lo1/IPN1PF6RTFqdwc= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/log v0.11.0 h1:7bAOpjpGglWhdEzP8z0VXc4jObOiDEwr3IYbhBnjk2c= -go.opentelemetry.io/otel/sdk/log v0.11.0/go.mod h1:dndLTxZbwBstZoqsJB3kGsRPkpAgaJrWfQg3lhlHFFY= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/collector v0.129.0 h1:9RIJkrkJHWisk7xSIl7T3Vzrn29iAxRiRboSzhO7VFc= +go.opentelemetry.io/collector v0.129.0/go.mod h1:xK+smJWmW4NKMjLAe5/nNIhnZji0T8B0QXKTMz79YPY= +go.opentelemetry.io/collector/client v1.35.0 h1:0nLRdQKFpxGZp5XkYZoZwIc03+cBqzA8lIakxnQSGwE= +go.opentelemetry.io/collector/client v1.35.0/go.mod h1:hFg+6sGvwIvz8mR8zhSHGTRrP6JUIPdc//ROrww1D9U= +go.opentelemetry.io/collector/component v1.35.0 h1:JpvBukEcEUvJ/TInF1KYpXtWEP+C7iYkxCHKjI0o7BQ= +go.opentelemetry.io/collector/component v1.35.0/go.mod h1:hU/ieWPxWbMAacODCSqem5ZaN6QH9W5GWiZ3MtXVuwc= +go.opentelemetry.io/collector/component/componentstatus v0.129.0 h1:ejpBAt7hXAAZiQKcSxLvcy8sj8SjY4HOLdoXIlW6ybw= +go.opentelemetry.io/collector/component/componentstatus v0.129.0/go.mod h1:/dLPIxn/tRMWmGi+DPtuFoBsffOLqPpSZ2IpEQzYtwI= +go.opentelemetry.io/collector/component/componenttest v0.129.0 h1:gpKkZGCRPu3Yn0U2co09bMvhs17yLFb59oV8Gl9mmRI= +go.opentelemetry.io/collector/component/componenttest v0.129.0/go.mod h1:JR9k34Qvd/pap6sYkPr5QqdHpTn66A5lYeYwhenKBAM= +go.opentelemetry.io/collector/config/configauth v0.129.0 h1:utGWTWNr2Udmhft6GeGvKMHaPJAfo//yv7rdBOg2eB8= +go.opentelemetry.io/collector/config/configauth v0.129.0/go.mod h1:nJAWAIT5mj7iw4w/pFa66tV6ChMDPnQd2gQ9V+UtJ7Q= +go.opentelemetry.io/collector/config/configcompression v1.35.0 h1:mc3kg5xNj0+V7uIrKMSXlkIOC0ILFay0XqZyvMZ8gPk= +go.opentelemetry.io/collector/config/configcompression v1.35.0/go.mod h1:QwbNpaOl6Me+wd0EdFuEJg0Cc+WR42HNjJtdq4TwE6w= +go.opentelemetry.io/collector/config/confighttp v0.129.0 h1:3Q3FuTbujR15gL34tvHnbzOhk3q04SK3+seYV+blbqA= +go.opentelemetry.io/collector/config/confighttp v0.129.0/go.mod h1:x/bHu26G6YPCnELgbL8KZdgcRUi22uIoGRC0x4nMJFg= +go.opentelemetry.io/collector/config/configmiddleware v0.129.0 h1:ILDUqd/krni++HsZtXSheHguxKm3IGI+gBiSCDk/1mk= +go.opentelemetry.io/collector/config/configmiddleware v0.129.0/go.mod h1:jp4nK4r6duZhXlVCL/Nop8sU9jYUIt5IdjW+bcyTBoQ= +go.opentelemetry.io/collector/config/configopaque v1.35.0 h1:icetANbNljFgvLyJzf2paWQnsVa/KoUzoRbfHU+f0KU= +go.opentelemetry.io/collector/config/configopaque v1.35.0/go.mod h1:rw0/X78O8cOk0dhACqNbdiKk1PF7z7mwq9wgSpWoqgs= +go.opentelemetry.io/collector/config/configretry v1.35.0 h1:RVgIDmhcDqxF3U1vw+Klk4wI5Xu2Pj80jvMwU30ku+M= +go.opentelemetry.io/collector/config/configretry v1.35.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ= +go.opentelemetry.io/collector/config/configtelemetry v0.129.0 h1:91m/gtGUTyXN4PCI0uK/mPf1J0mWytk33u85YS3a9AU= +go.opentelemetry.io/collector/config/configtelemetry v0.129.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA= +go.opentelemetry.io/collector/config/configtls v1.35.0 h1:MaZrtIW4Bq87dz41shLMpyUjVuFBStBAoJA2RX+IUbg= +go.opentelemetry.io/collector/config/configtls v1.35.0/go.mod h1:twLYBQkeB4r1EpGoDGiyOj6CVpxyTX9qCji/hRs75EE= +go.opentelemetry.io/collector/confmap v1.35.0 h1:U4JDATAl4PrKWe9bGHbZkoQXmJXefWgR2DIkFvw8ULQ= +go.opentelemetry.io/collector/confmap v1.35.0/go.mod h1:qX37ExVBa+WU4jWWJCZc7IJ+uBjb58/9oL+/ctF1Bt0= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0 h1:6Z3uy4wlLXOeCWt265ekPZPglB2Eh9t9vD1NWCrWDn8= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.35.0/go.mod h1:kcCOECduHBpJQjFlze1XZdc+dR8qzHmKPkMrlfkXlMw= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.35.0 h1:ISxrkHXQWlxLdifbn3/XciydQeWFEMygPr0oqeZpN0I= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.35.0/go.mod h1:jmIxi1X2uD4lq4vJ30lmdQgiYs7UaiyzXr/86FX1b1E= +go.opentelemetry.io/collector/confmap/xconfmap v0.129.0 h1:Q/+pJKrkCaMPSoSAH2BpC3UZCh+5hTiFkh/bdy5yChk= +go.opentelemetry.io/collector/confmap/xconfmap v0.129.0/go.mod h1:RNMnlay2meJDXcKjxiLbST9/YAhKLJlj0kZCrJrLGgw= +go.opentelemetry.io/collector/connector v0.129.0 h1:z5PLMTE0sGV3t+AbibIbSZsh4CS9YErLhNqirxa92Pk= +go.opentelemetry.io/collector/connector v0.129.0/go.mod h1:DUYCv0jbJhNiR+/Bloa6TXkn2910LSWn4R+aQSxjUps= +go.opentelemetry.io/collector/connector/connectortest v0.129.0 h1:zbiXswz2A8Kx9A7ag2z/rZ4H9IBCvJiinPpGOmYL0O4= +go.opentelemetry.io/collector/connector/connectortest v0.129.0/go.mod h1:5vuW7keNPNobSTWv1D1l4B1xiAd42RnS4cWhwTj1Vqk= +go.opentelemetry.io/collector/connector/xconnector v0.129.0 h1:bPQuaEwLOHtocoWfUeIa4skRrfIgO2PGPf4Zn8rGyiQ= +go.opentelemetry.io/collector/connector/xconnector v0.129.0/go.mod h1:N4AxnF2sqjSdMZWqf0fap2kAuFuyubh04IsKvzfr6lw= +go.opentelemetry.io/collector/consumer v1.35.0 h1:mgS42yh1maXBIE65IT4//iOA89BE+7xSUzV8czyevHg= +go.opentelemetry.io/collector/consumer v1.35.0/go.mod h1:9sSPX0hDHaHqzR2uSmfLOuFK9v3e9K3HRQ+fydAjOWs= +go.opentelemetry.io/collector/consumer/consumererror v0.129.0 h1:ud92OBWwqQlHjjx9cB48XhXU/Lz5QSAnXUAErsNHHME= +go.opentelemetry.io/collector/consumer/consumererror v0.129.0/go.mod h1:wtg7mcOkncUO/oZQUfHYoTPiVgMT4yrEKeskFv9dUJg= +go.opentelemetry.io/collector/consumer/consumertest v0.129.0 h1:kRmrAgVvPxH5c/rTaOYAzyy0YrrYhQpBNkuqtDRrgeU= +go.opentelemetry.io/collector/consumer/consumertest v0.129.0/go.mod h1:JgJKms1+v/CuAjkPH+ceTnKeDgUUGTQV4snGu5wTEHY= +go.opentelemetry.io/collector/consumer/xconsumer v0.129.0 h1:bRyJ9TGWwnrUnB5oQGTjPhxpVRbkIVeugmvks22bJ4A= +go.opentelemetry.io/collector/consumer/xconsumer v0.129.0/go.mod h1:pbe5ZyPJrtzdt/RRI0LqfT1GVBiJLbtkDKx3SBRTiTY= +go.opentelemetry.io/collector/exporter v0.129.0 h1:HsJ0Q/CkwgWmkXv/nNjgwXY4Dc5ibQsHLvcqscUhMns= +go.opentelemetry.io/collector/exporter v0.129.0/go.mod h1:lIRe4Vo5kyOWUkwSB+2J15Jhl/io964x+MhpV5tJaOY= +go.opentelemetry.io/collector/exporter/exportertest v0.129.0 h1:HGS5KgbKwvLrtR972ejTSJgE7iPp0+d1fRcCznf3CVA= +go.opentelemetry.io/collector/exporter/exportertest v0.129.0/go.mod h1:ngH3IeEUNGVO8skhOYhQK56j3e81gRZmgT2qH5iHipA= +go.opentelemetry.io/collector/exporter/xexporter v0.129.0 h1:BQeQFnvtqv8g0zYBoWimIRX5W9WgiCFo3MSYYBjgbyM= +go.opentelemetry.io/collector/exporter/xexporter v0.129.0/go.mod h1:uoZG9n5maYged7BUIeUYRKANgDgJBnd930u90GHtU0Y= +go.opentelemetry.io/collector/extension v1.35.0 h1:MBnBq5HiXbj+HGCGoqRYPK4tp5cC5+7L9bhiO59T/3k= +go.opentelemetry.io/collector/extension v1.35.0/go.mod h1:Ry/QgkfYUfcQEK96t4d/oi4A7+v56T7wZMyPgnZtEco= +go.opentelemetry.io/collector/extension/extensionauth v1.35.0 h1:dw/G8RdS2x2jbap52TOVpb0NHIGKLTo0iuk69T2NaJg= +go.opentelemetry.io/collector/extension/extensionauth v1.35.0/go.mod h1:bjGAFwd0pjtPbevALtgazGWfHAoOzGr+e/oP5NjAGv4= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.129.0 h1:JFm1T3rxtSmWwG3oltSaZpDrS7KF8AU1efvW2g/0dy8= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.129.0/go.mod h1:So7bI+k8rtVVTosMHoRMKq0+amTg9D6TY/i73sIhhrk= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0 h1:dkE/8H6Ik+2VTpAzwanTe+EzpeqhDNdPTVO4NWIuEPA= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.129.0/go.mod h1:V/Kdpr3nrKru8YrhH8950ac2gfQonifINiddUUmn+g8= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0 h1:04blWaKcbloymwhG8Y3IEJEHlvtDmxgJi0iFchbWOxw= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.129.0/go.mod h1:xc1VLLUebuxPAdKCDopohorTZifokuwFfdvPINmx/GQ= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.129.0 h1:V85S9H4UnhPWEmSewFx0L25+XKXZbNUnQHdjT0YAMRY= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.129.0/go.mod h1:1sWR6V3xQt+9wsc4vW/lM9zn0YmpJH4o/tLBWQFnAxg= +go.opentelemetry.io/collector/extension/extensiontest v0.129.0 h1:YYXwF3rE9/4py+BD/GPUs2k/7e9WwJSDh47L2ljyxMk= +go.opentelemetry.io/collector/extension/extensiontest v0.129.0/go.mod h1:r1aMvxZLlHub1/28ABW/EM88YFP0AW0B+KrB/yxXlHc= +go.opentelemetry.io/collector/extension/xextension v0.129.0 h1:I9Mj+zJDpHVTonZOr7D9wcf94fENPohtt8TBvDCWOTg= +go.opentelemetry.io/collector/extension/xextension v0.129.0/go.mod h1:kdroFrrmIrV3Usm0RTOHXhWoGohdFwsvGWRirJUJYpw= +go.opentelemetry.io/collector/extension/zpagesextension v0.129.0 h1:vmvvh4QoHrjfzcPyHi3cfahJ6GfY1xfaDE5oVtE5Iq8= +go.opentelemetry.io/collector/extension/zpagesextension v0.129.0/go.mod h1:pqA6D+7/KLoq4VkcSYZzzH6/Qwfugkove48SRsY5dQ4= +go.opentelemetry.io/collector/featuregate v1.35.0 h1:c/XRtA35odgxVc4VgOF/PTIk7ajw1wYdQ6QI562gzd4= +go.opentelemetry.io/collector/featuregate v1.35.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0 h1:fx3c7NRDSnvHj6OLFeZPWqCM82RFcAqAKrmM9dCSoiI= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.129.0/go.mod h1:ExshKbDe5u7PdIzWEvrbMXTW9YQUXCCwE7VMjzNmlU4= +go.opentelemetry.io/collector/internal/telemetry v0.129.0 h1:jkzRpIyMxMGdAzVOcBe8aRNrbP7eUrMq6cxEHe0sbzA= +go.opentelemetry.io/collector/internal/telemetry v0.129.0/go.mod h1:riAPlR2LZBV7VEx4LicOKebg3N1Ja3izzkv5fl1Lhiw= +go.opentelemetry.io/collector/otelcol v0.129.0 h1:c9tyaphcIoStM2vcAOqvtpKewN6jNkajlaDXbFrmn7Y= +go.opentelemetry.io/collector/otelcol v0.129.0/go.mod h1:zmV3C/z6TdwGUoJOxAUiDuZRLmv89XHfudklz4V3NL4= +go.opentelemetry.io/collector/pdata v1.35.0 h1:ck6WO6hCNjepADY/p9sT9/rLECTLO5ukYTumKzsqB/E= +go.opentelemetry.io/collector/pdata v1.35.0/go.mod h1:pttpb089864qG1k0DMeXLgwwTFLk+o3fAW9I6MF9tzw= +go.opentelemetry.io/collector/pdata/pprofile v0.129.0 h1:DgZTvjOGmyZRx7Or80hz8XbEaGwHPkIh2SX1A5eXttQ= +go.opentelemetry.io/collector/pdata/pprofile v0.129.0/go.mod h1:uUBZxqJNOk6QIMvbx30qom//uD4hXJ1K/l3qysijMLE= +go.opentelemetry.io/collector/pdata/testdata v0.129.0 h1:n1QLnLOtrcAR57oMSVzmtPsQEpCc/nE5Avk1xfuAkjY= +go.opentelemetry.io/collector/pdata/testdata v0.129.0/go.mod h1:RfY5IKpmcvkS2IGVjl9jG9fcT7xpQEBWpg9sQOn/7mY= +go.opentelemetry.io/collector/pdata/xpdata v0.129.0 h1:adn3OSRQ8fVHMpAoPXCzwV4yygvBskgWzKShfZdbJcw= +go.opentelemetry.io/collector/pdata/xpdata v0.129.0/go.mod h1:J5v/SAmqBo06PthOhfi6dFBOm64z07DdAUn1Sih02TA= +go.opentelemetry.io/collector/pipeline v0.129.0 h1:Mp7RuKLizLQJ0381eJqKQ0zpgkFlhTE9cHidpJQIvMU= +go.opentelemetry.io/collector/pipeline v0.129.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4= +go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0 h1:JDLSoGiUg4JgahMqHXj5TwoZdLsqU/iDG1cGLcMiBeY= +go.opentelemetry.io/collector/pipeline/xpipeline v0.129.0/go.mod h1:qDjE/5uvKmXRHaDzy7yMo/VwSm4njtRWzACTjf5CVjg= +go.opentelemetry.io/collector/processor v1.35.0 h1:YOfHemhhodYn4BnPjN7kWYYDhzPVqRkyHCaQ8mAlavs= +go.opentelemetry.io/collector/processor v1.35.0/go.mod h1:cWHDOpmpAaVNCc9K9j2/okZoLIuP/EpGGRNhM4JGmFM= +go.opentelemetry.io/collector/processor/batchprocessor v0.129.0 h1:eVsu5PpK7OAqYE49uywEV+gtjoOd1GtADKz4va9LUDo= +go.opentelemetry.io/collector/processor/batchprocessor v0.129.0/go.mod h1:V2m/F0zMEAjtKIiuBMhaJ/lxwI8Bv8rVpuL4rbIC36k= +go.opentelemetry.io/collector/processor/processortest v0.129.0 h1:r5iJHdS7Ffdb2zmMVYx4ahe92PLrce5cas/AJEXivkY= +go.opentelemetry.io/collector/processor/processortest v0.129.0/go.mod h1:gdf8GzyzjGoDTA11+CPwC4jfXphtC+B7MWbWn+LIWXc= +go.opentelemetry.io/collector/processor/xprocessor v0.129.0 h1:V3Zgd+YIeu3Ij3DPlGtzdcTwpqOQIqQVcL5jdHHS7sc= +go.opentelemetry.io/collector/processor/xprocessor v0.129.0/go.mod h1:78T+AP5NO137W/E+SibQhaqOyS67fR+IN697b4JFh00= +go.opentelemetry.io/collector/receiver v1.35.0 h1:JOLa0cHLi6cKU+qsBWXkAWLnd5MoHdh8GaUJ97jWguY= +go.opentelemetry.io/collector/receiver v1.35.0/go.mod h1:y1y8DNoP54RsiucXP/qeRuCErBLc1gyvFjO+GIIn91s= +go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0 h1:zBo8oqHqbNapEYZjGdwiyF7crndtt/DIzw/MfBaBzCc= +go.opentelemetry.io/collector/receiver/receiverhelper v0.129.0/go.mod h1:4Le74/C0ErWozM+Pdq2ZNz0OjEMYGG+BFApHHuI4h1k= +go.opentelemetry.io/collector/receiver/receivertest v0.129.0 h1:abzNSUJXrtPwRqDM1R+BWs0uzYN2g7YZa7t6nyeLu3s= +go.opentelemetry.io/collector/receiver/receivertest v0.129.0/go.mod h1:hcn7bZ0gfcQYW00GKfEbhwVDsPhOAKALtxK67dywjYA= +go.opentelemetry.io/collector/receiver/xreceiver v0.129.0 h1:jQSsDPLbnX8tWDNz0a495ACoA4vVe/FlPEIftPdVtmU= +go.opentelemetry.io/collector/receiver/xreceiver v0.129.0/go.mod h1:5vzmNL4Mv2q3xlvw2ypg1d1WWWut9i5bUcphXNbQNN4= +go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 h1:XCN7qkZRNzRYfn6chsMZkbFZxoFcW6fZIsZs2aCzcbc= +go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= +go.opentelemetry.io/collector/service v0.129.0 h1:iauNP1MwcEdSmBW6ls30itxszV8biZRClJyO62B1KCo= +go.opentelemetry.io/collector/service v0.129.0/go.mod h1:U5ulge2o/5Mvoubp0BMU7+xC7SUfw0fpXyPSDbCPAtc= +go.opentelemetry.io/collector/service/hostcapabilities v0.129.0 h1:XYrwQJ8PnO+uMoc6804sm2bZfVB3pNC0G0e2O99oq3Y= +go.opentelemetry.io/collector/service/hostcapabilities v0.129.0/go.mod h1:GArFdsQM1rx56IiYGwOaXE25J3MBoO6JcA3m1xTf2LU= +go.opentelemetry.io/contrib/bridges/otelzap v0.11.0 h1:u2E32P7j1a/gRgZDWhIXC+Shd4rLg70mnE7QLI/Ssnw= +go.opentelemetry.io/contrib/bridges/otelzap v0.11.0/go.mod h1:pJPCLM8gzX4ASqLlyAXjHBEYxgbOQJ/9bidWxD6PEPQ= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 h1:0tY123n7CdWMem7MOVdKOt0YfshufLCwfE5Bob+hQuM= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0/go.mod h1:CosX/aS4eHnG9D7nESYpV753l4j9q5j3SL/PUYd2lR8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/contrib/otelconf v0.16.0 h1:mTYGRlZtpc/zDaTaUQSnsZ1hyoRONaS4Od/Ny5++lhE= +go.opentelemetry.io/contrib/otelconf v0.16.0/go.mod h1:gnsljuyDyVDg39vUvXKj0BVCiVaokN3b8N5BL/ab8fQ= +go.opentelemetry.io/contrib/propagators/b3 v1.36.0 h1:xrAb/G80z/l5JL6XlmUMSD1i6W8vXkWrLfmkD3w/zZo= +go.opentelemetry.io/contrib/propagators/b3 v1.36.0/go.mod h1:UREJtqioFu5awNaCR8aEx7MfJROFlAWb6lPaJFbHaG0= +go.opentelemetry.io/contrib/zpages v0.61.0 h1:tYvUj377Dn3k1wf1le/f8YWSNQ8k0byS3jK8PiIXu9Y= +go.opentelemetry.io/contrib/zpages v0.61.0/go.mod h1:MFNPHMJOGA1P6m5501ANjOJDp4A9BUQja1Y53CDL8LQ= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 h1:06ZeJRe5BnYXceSM9Vya83XXVaNGe3H1QqsvqRANQq8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2/go.mod h1:DvPtKE63knkDVP88qpatBj81JxN+w1bqfVbsbCbj1WY= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2 h1:tPLwQlXbJ8NSOfZc4OkgU5h2A38M4c9kfHSVc4PFQGs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.12.2/go.mod h1:QTnxBwT/1rBIgAG1goq6xMydfYOBKU6KTiYF4fp5zL8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 h1:zwdo1gS2eH26Rg+CoqVQpEK1h8gvt5qyU5Kk5Bixvow= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0/go.mod h1:rUKCPscaRWWcqGT6HnEmYrK+YNe5+Sw64xgQTOJ5b30= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0 h1:gAU726w9J8fwr4qRDqu1GYMNNs4gXrU+Pv20/N1UpB4= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0/go.mod h1:RboSDkp7N292rgu+T0MgVt2qgFGu6qa1RpZDOtpL76w= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ= +go.opentelemetry.io/otel/exporters/prometheus v0.58.0 h1:CJAxWKFIqdBennqxJyOgnt5LqkeFRT+Mz3Yjz3hL+h8= +go.opentelemetry.io/otel/exporters/prometheus v0.58.0/go.mod h1:7qo/4CLI+zYSNbv0GMNquzuss2FVZo3OYrGh96n4HNc= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2 h1:12vMqzLLNZtXuXbJhSENRg+Vvx+ynNilV8twBLBsXMY= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.12.2/go.mod h1:ZccPZoPOoq8x3Trik/fCsba7DEYDUnN6yX79pgp2BUQ= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 h1:G8Xec/SgZQricwWBJF/mHZc7A02YHedfFDENwJEdRA0= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0/go.mod h1:PD57idA/AiFD5aqoxGxCvT/ILJPeHy3MjqU/NS7KogY= +go.opentelemetry.io/otel/log v0.12.2 h1:yob9JVHn2ZY24byZeaXpTVoPS6l+UrrxmxmPKohXTwc= +go.opentelemetry.io/otel/log v0.12.2/go.mod h1:ShIItIxSYxufUMt+1H5a2wbckGli3/iCfuEbVZi/98E= +go.opentelemetry.io/otel/log/logtest v0.0.0-20250526142609-aa5bd0e64989 h1:4JF7oY9CcHrPGfBLijDcXZyCzGckVEyOjuat5ktmQRg= +go.opentelemetry.io/otel/log/logtest v0.0.0-20250526142609-aa5bd0e64989/go.mod h1:NToOxLDCS1tXDSB2dIj44H9xGPOpKr0csIN+gnuihv4= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/log v0.12.2 h1:yNoETvTByVKi7wHvYS6HMcZrN5hFLD7I++1xIZ/k6W0= +go.opentelemetry.io/otel/sdk/log v0.12.2/go.mod h1:DcpdmUXHJgSqN/dh+XMWa7Vf89u9ap0/AAk/XGLnEzY= +go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc h1:uqxdywfHqqCl6LmZzI3pUnXT1RGFYyUgxj0AkWPFxi0= +go.opentelemetry.io/otel/sdk/log/logtest v0.0.0-20250521073539-a85ae98dcedc/go.mod h1:TY/N/FT7dmFrP/r5ym3g0yysP1DefqGpAZr4f82P0dE= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -687,14 +700,14 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= 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.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -704,18 +717,18 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -754,8 +767,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -763,22 +776,22 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= 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= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.226.0 h1:9A29y1XUD+YRXfnHkO66KggxHBZWg9LsTGqm7TkUvtQ= -google.golang.org/api v0.226.0/go.mod h1:WP/0Xm4LVvMOCldfvOISnWquSRWbG2kArDZcg+W2DbY= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/api v0.230.0 h1:2u1hni3E+UXAXrONrrkfWpi/V6cyKVAbfGVeGtC3OxM= +google.golang.org/api v0.230.0/go.mod h1:aqvtoMk7YkiXx+6U12arQFExiRV9D/ekvMCwCd/TksQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -804,21 +817,21 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -k8s.io/api v0.31.3 h1:umzm5o8lFbdN/hIXbrK9oRpOproJO62CV1zqxXrLgk8= -k8s.io/api v0.31.3/go.mod h1:UJrkIp9pnMOI9K2nlL6vwpxRzzEX5sWgn8kGQe92kCE= -k8s.io/apimachinery v0.31.3 h1:6l0WhcYgasZ/wk9ktLq5vLaoXJJr5ts6lkaQzgeYPq4= -k8s.io/apimachinery v0.31.3/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -k8s.io/client-go v0.31.3 h1:CAlZuM+PH2cm+86LOBemaJI/lQ5linJ6UFxKX/SoG+4= -k8s.io/client-go v0.31.3/go.mod h1:2CgjPUTpv3fE5dNygAr2NcM8nhHzXvxB8KL5gYc3kJs= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -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-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -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= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/otelcollector/prometheusreceiver/internal/prom_to_otlp.go b/otelcollector/prometheusreceiver/internal/prom_to_otlp.go index bfbdfae80..c5161d1e6 100644 --- a/otelcollector/prometheusreceiver/internal/prom_to_otlp.go +++ b/otelcollector/prometheusreceiver/internal/prom_to_otlp.go @@ -13,14 +13,13 @@ import ( conventions "go.opentelemetry.io/otel/semconv/v1.25.0" ) -const removeOldSemconvFeatureGateID = "receiver.prometheusreceiver.RemoveLegacyResourceAttributes" - -var removeOldSemconvFeatureGate = featuregate.GlobalRegistry().MustRegister( - removeOldSemconvFeatureGateID, - featuregate.StageBeta, +var _ = featuregate.GlobalRegistry().MustRegister( + "receiver.prometheusreceiver.RemoveLegacyResourceAttributes", + featuregate.StageStable, featuregate.WithRegisterFromVersion("v0.101.0"), featuregate.WithRegisterDescription("When enabled, the net.host.name, net.host.port, and http.scheme resource attributes are no longer added to metrics. Use server.address, server.port, and url.scheme instead."), featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/32814"), + featuregate.WithRegisterToVersion("v0.130.0"), ) // isDiscernibleHost checks if a host can be used as a value for the 'host.name' key. @@ -52,16 +51,9 @@ func CreateResource(job, instance string, serviceDiscoveryLabels labels.Labels) attrs := resource.Attributes() attrs.PutStr(string(conventions.ServiceNameKey), job) if isDiscernibleHost(host) { - if !removeOldSemconvFeatureGate.IsEnabled() { - attrs.PutStr(string(conventions.NetHostNameKey), host) - } attrs.PutStr(string(conventions.ServerAddressKey), host) } attrs.PutStr(string(conventions.ServiceInstanceIDKey), instance) - if !removeOldSemconvFeatureGate.IsEnabled() { - attrs.PutStr(string(conventions.NetHostPortKey), port) - attrs.PutStr(string(conventions.HTTPSchemeKey), serviceDiscoveryLabels.Get(model.SchemeLabel)) - } attrs.PutStr(string(conventions.ServerPortKey), port) attrs.PutStr(string(conventions.URLSchemeKey), serviceDiscoveryLabels.Get(model.SchemeLabel)) diff --git a/otelcollector/prometheusreceiver/internal/prom_to_otlp_test.go b/otelcollector/prometheusreceiver/internal/prom_to_otlp_test.go index 0ba41553b..922b5ecb3 100644 --- a/otelcollector/prometheusreceiver/internal/prom_to_otlp_test.go +++ b/otelcollector/prometheusreceiver/internal/prom_to_otlp_test.go @@ -10,8 +10,6 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/pdata/pcommon" conventions "go.opentelemetry.io/otel/semconv/v1.27.0" - - "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/testutil" ) type jobInstanceDefinition struct { @@ -73,36 +71,16 @@ func makeResourceWithJobInstanceScheme(def *jobInstanceDefinition, hasHost bool) return resource } -func makeResourceWithJobInstanceSchemeDuplicate(def *jobInstanceDefinition, hasHost bool) pcommon.Resource { - resource := pcommon.NewResource() - attrs := resource.Attributes() - // Using hardcoded values to assert on outward expectations so that - // when variables change, these tests will fail and we'll have reports. - attrs.PutStr("service.name", def.job) - if hasHost { - attrs.PutStr("net.host.name", def.host) - attrs.PutStr("server.address", def.host) - } - attrs.PutStr("service.instance.id", def.instance) - attrs.PutStr("net.host.port", def.port) - attrs.PutStr("http.scheme", def.scheme) - attrs.PutStr("server.port", def.port) - attrs.PutStr("url.scheme", def.scheme) - return resource -} - func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { tests := []struct { - name, job string - instance string - sdLabels labels.Labels - removeOldSemconvFeatureGate bool - want pcommon.Resource + name, job string + instance string + sdLabels labels.Labels + want pcommon.Resource }{ { name: "all attributes proper", job: "job", instance: "hostname:8888", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - removeOldSemconvFeatureGate: true, want: makeResourceWithJobInstanceScheme(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, true), @@ -110,7 +88,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { { name: "missing port", job: "job", instance: "myinstance", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "https"}), - removeOldSemconvFeatureGate: true, want: makeResourceWithJobInstanceScheme(&jobInstanceDefinition{ "job", "myinstance", "myinstance", "https", "", }, true), @@ -118,7 +95,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { { name: "blank scheme", job: "job", instance: "myinstance:443", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: ""}), - removeOldSemconvFeatureGate: true, want: makeResourceWithJobInstanceScheme(&jobInstanceDefinition{ "job", "myinstance:443", "myinstance", "", "443", }, true), @@ -126,7 +102,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { { name: "blank instance, blank scheme", job: "job", instance: "", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: ""}), - removeOldSemconvFeatureGate: true, want: makeResourceWithJobInstanceScheme(&jobInstanceDefinition{ "job", "", "", "", "", }, true), @@ -134,7 +109,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { { name: "blank instance, non-blank scheme", job: "job", instance: "", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - removeOldSemconvFeatureGate: true, want: makeResourceWithJobInstanceScheme(&jobInstanceDefinition{ "job", "", "", "http", "", }, true), @@ -142,7 +116,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { { name: "0.0.0.0 address", job: "job", instance: "0.0.0.0:8888", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - removeOldSemconvFeatureGate: true, want: makeResourceWithJobInstanceScheme(&jobInstanceDefinition{ "job", "0.0.0.0:8888", "", "http", "8888", }, false), @@ -150,60 +123,10 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { { name: "localhost", job: "job", instance: "localhost:8888", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - removeOldSemconvFeatureGate: true, want: makeResourceWithJobInstanceScheme(&jobInstanceDefinition{ "job", "localhost:8888", "", "http", "8888", }, false), }, - { - name: "all attributes proper with duplicates", - job: "job", instance: "hostname:8888", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - want: makeResourceWithJobInstanceSchemeDuplicate(&jobInstanceDefinition{ - "job", "hostname:8888", "hostname", "http", "8888", - }, true), - }, - { - name: "missing port with duplicates", - job: "job", instance: "myinstance", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "https"}), - want: makeResourceWithJobInstanceSchemeDuplicate(&jobInstanceDefinition{ - "job", "myinstance", "myinstance", "https", "", - }, true), - }, - { - name: "blank scheme with duplicates", - job: "job", instance: "myinstance:443", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: ""}), - want: makeResourceWithJobInstanceSchemeDuplicate(&jobInstanceDefinition{ - "job", "myinstance:443", "myinstance", "", "443", - }, true), - }, - { - name: "blank instance, blank scheme with duplicates", - job: "job", instance: "", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: ""}), - want: makeResourceWithJobInstanceSchemeDuplicate(&jobInstanceDefinition{ - "job", "", "", "", "", - }, true), - }, - { - name: "blank instance, non-blank scheme with duplicates", - job: "job", instance: "", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - want: makeResourceWithJobInstanceSchemeDuplicate(&jobInstanceDefinition{ - "job", "", "", "http", "", - }, true), - }, - { - name: "0.0.0.0 address with duplicates", - job: "job", instance: "0.0.0.0:8888", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - want: makeResourceWithJobInstanceSchemeDuplicate(&jobInstanceDefinition{ - "job", "0.0.0.0:8888", "", "http", "8888", - }, false), - }, - { - name: "localhost with duplicates", - job: "job", instance: "localhost:8888", sdLabels: labels.New(labels.Label{Name: "__scheme__", Value: "http"}), - want: makeResourceWithJobInstanceSchemeDuplicate(&jobInstanceDefinition{ - "job", "localhost:8888", "", "http", "8888", - }, false), - }, { name: "kubernetes daemonset pod", job: "job", instance: "hostname:8888", sdLabels: labels.New( @@ -216,7 +139,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { labels.Label{Name: "__meta_kubernetes_pod_controller_kind", Value: "DaemonSet"}, labels.Label{Name: "__meta_kubernetes_namespace", Value: "kube-system"}, ), - removeOldSemconvFeatureGate: true, want: makeK8sResource(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, &k8sResourceDefinition{ @@ -240,7 +162,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { labels.Label{Name: "__meta_kubernetes_pod_controller_kind", Value: "ReplicaSet"}, labels.Label{Name: "__meta_kubernetes_namespace", Value: "kube-system"}, ), - removeOldSemconvFeatureGate: true, want: makeK8sResource(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, &k8sResourceDefinition{ @@ -264,7 +185,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { labels.Label{Name: "__meta_kubernetes_pod_controller_kind", Value: "StatefulSet"}, labels.Label{Name: "__meta_kubernetes_namespace", Value: "kube-system"}, ), - removeOldSemconvFeatureGate: true, want: makeK8sResource(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, &k8sResourceDefinition{ @@ -288,7 +208,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { labels.Label{Name: "__meta_kubernetes_pod_controller_kind", Value: "Job"}, labels.Label{Name: "__meta_kubernetes_namespace", Value: "kube-system"}, ), - removeOldSemconvFeatureGate: true, want: makeK8sResource(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, &k8sResourceDefinition{ @@ -312,7 +231,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { labels.Label{Name: "__meta_kubernetes_pod_controller_kind", Value: "CronJob"}, labels.Label{Name: "__meta_kubernetes_namespace", Value: "kube-system"}, ), - removeOldSemconvFeatureGate: true, want: makeK8sResource(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, &k8sResourceDefinition{ @@ -330,7 +248,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { labels.Label{Name: "__scheme__", Value: "http"}, labels.Label{Name: "__meta_kubernetes_node_name", Value: "k8s-node-123"}, ), - removeOldSemconvFeatureGate: true, want: makeK8sResource(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, &k8sResourceDefinition{ @@ -343,7 +260,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { labels.Label{Name: "__scheme__", Value: "http"}, labels.Label{Name: "__meta_kubernetes_endpoint_node_name", Value: "k8s-node-123"}, ), - removeOldSemconvFeatureGate: true, want: makeK8sResource(&jobInstanceDefinition{ "job", "hostname:8888", "hostname", "http", "8888", }, &k8sResourceDefinition{ @@ -354,7 +270,6 @@ func TestCreateNodeAndResourcePromToOTLP(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - testutil.SetFeatureGateForTest(t, removeOldSemconvFeatureGate, tt.removeOldSemconvFeatureGate) got := CreateResource(tt.job, tt.instance, tt.sdLabels) require.Equal(t, tt.want.Attributes().AsRaw(), got.Attributes().AsRaw()) }) diff --git a/otelcollector/prometheusreceiver/metrics_receiver.go b/otelcollector/prometheusreceiver/metrics_receiver.go index a385b4e30..9b7029eeb 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver.go +++ b/otelcollector/prometheusreceiver/metrics_receiver.go @@ -8,25 +8,43 @@ import ( "errors" "fmt" "log/slog" + "net/http" + "net/url" + "os" "reflect" "regexp" + "runtime" + "runtime/debug" + "strings" "sync" "time" "unsafe" + grafanaRegexp "github.com/grafana/regexp" + "github.com/mwitkow/go-conntrack" "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promhttp" commonconfig "github.com/prometheus/common/config" + "github.com/prometheus/common/promslog" + "github.com/prometheus/common/route" + "github.com/prometheus/common/version" + toolkit_web "github.com/prometheus/exporter-toolkit/web" promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/scrape" + "github.com/prometheus/prometheus/storage" + "github.com/prometheus/prometheus/util/httputil" + "github.com/prometheus/prometheus/web" + api_v1 "github.com/prometheus/prometheus/web/api/v1" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componentstatus" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.uber.org/zap" "go.uber.org/zap/exp/zapslog" + "golang.org/x/net/netutil" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/apiserver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" ) @@ -52,7 +70,7 @@ type pReceiver struct { scrapeManager *scrape.Manager discoveryManager *discovery.Manager targetAllocatorManager *targetallocator.Manager - apiServerManager *apiserver.Manager + apiServer *http.Server registry *prometheus.Registry registerer prometheus.Registerer unregisterMetrics func() @@ -69,10 +87,6 @@ func newPrometheusReceiver(set receiver.Settings, cfg *Config, next consumer.Met registerer := prometheus.WrapRegistererWith( prometheus.Labels{"receiver": set.ID.String()}, registry) - apiServerManager := (*apiserver.Manager)(nil) - if cfg.APIServer != nil && cfg.APIServer.Enabled { - apiServerManager = apiserver.NewManager(set, cfg.APIServer, &baseCfg, registry, registerer) - } pr := &pReceiver{ cfg: cfg, consumer: next, @@ -86,7 +100,6 @@ func newPrometheusReceiver(set receiver.Settings, cfg *Config, next consumer.Met &baseCfg, enableNativeHistogramsGate.IsEnabled(), ), - apiServerManager: apiServerManager, } return pr, nil } @@ -110,6 +123,13 @@ func (r *pReceiver) Start(ctx context.Context, host component.Host) error { return err } + if r.cfg.APIServer != nil && r.cfg.APIServer.Enabled { + err = r.initAPIServer(discoveryCtx, host) + if err != nil { + r.settings.Logger.Error("Failed to initAPIServer", zap.Error(err)) + } + } + r.loadConfigOnce.Do(func() { close(r.configLoaded) }) @@ -164,18 +184,7 @@ func (r *pReceiver) initPrometheusComponents(ctx context.Context, logger *slog.L return err } - opts := &scrape.Options{ - PassMetadataInContext: true, - ExtraMetrics: r.cfg.ReportExtraScrapeMetrics, - HTTPClientOptions: []commonconfig.HTTPClientOption{ - commonconfig.WithUserAgent(r.settings.BuildInfo.Command + "/" + r.settings.BuildInfo.Version), - }, - EnableCreatedTimestampZeroIngestion: useCreatedMetricGate.IsEnabled(), - } - - if enableNativeHistogramsGate.IsEnabled() { - opts.EnableNativeHistogramsIngestion = true - } + opts := r.initScrapeOptions() // for testing only if r.skipOffsetting { @@ -211,16 +220,189 @@ func (r *pReceiver) initPrometheusComponents(ctx context.Context, logger *slog.L } }() - if r.cfg.APIServer != nil && r.cfg.APIServer.Enabled { - err = r.apiServerManager.Start(ctx, host, r.scrapeManager) + return nil +} + +func (r *pReceiver) initScrapeOptions() *scrape.Options { + opts := &scrape.Options{ + PassMetadataInContext: true, + ExtraMetrics: r.cfg.ReportExtraScrapeMetrics, + HTTPClientOptions: []commonconfig.HTTPClientOption{ + commonconfig.WithUserAgent(r.settings.BuildInfo.Command + "/" + r.settings.BuildInfo.Version), + }, + EnableCreatedTimestampZeroIngestion: enableCreatedTimestampZeroIngestionGate.IsEnabled(), + EnableNativeHistogramsIngestion: enableNativeHistogramsGate.IsEnabled(), + } + + return opts +} + +func (r *pReceiver) initAPIServer(ctx context.Context, host component.Host) error { + r.settings.Logger.Info("Starting Prometheus API server") + + // If allowed CORS origins are provided in the receiver config, combine them into a single regex since the Prometheus API server requires this format. + var corsOriginRegexp *grafanaRegexp.Regexp + if r.cfg.APIServer.ServerConfig.CORS != nil && len(r.cfg.APIServer.ServerConfig.CORS.AllowedOrigins) > 0 { + var combinedOriginsBuilder strings.Builder + combinedOriginsBuilder.WriteString(r.cfg.APIServer.ServerConfig.CORS.AllowedOrigins[0]) + for _, origin := range r.cfg.APIServer.ServerConfig.CORS.AllowedOrigins[1:] { + combinedOriginsBuilder.WriteString("|") + combinedOriginsBuilder.WriteString(origin) + } + combinedRegexp, err := grafanaRegexp.Compile(combinedOriginsBuilder.String()) if err != nil { - r.settings.Logger.Error("Failed to start APIServer", zap.Error(err)) + return fmt.Errorf("failed to compile combined CORS allowed origins into regex: %s", err.Error()) } + corsOriginRegexp = combinedRegexp + } + + // If read timeout is not set in the receiver config, use the default Prometheus value. + readTimeout := r.cfg.APIServer.ServerConfig.ReadTimeout + if readTimeout == 0 { + readTimeout = time.Duration(readTimeoutMinutes) * time.Minute } + o := &web.Options{ + ScrapeManager: r.scrapeManager, + Context: ctx, + ListenAddresses: []string{r.cfg.APIServer.ServerConfig.Endpoint}, + ExternalURL: &url.URL{ + Scheme: "http", + Host: r.cfg.APIServer.ServerConfig.Endpoint, + Path: "", + }, + RoutePrefix: "/", + ReadTimeout: readTimeout, + PageTitle: "Prometheus Receiver", + Flags: make(map[string]string), + MaxConnections: maxConnections, + IsAgent: true, + Registerer: r.registerer, + Gatherer: r.registry, + CORSOrigin: corsOriginRegexp, + } + + // Creates the API object in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L314-L354 + // Anything not defined by the options above will be nil, such as o.QueryEngine, o.Storage, etc. IsAgent=true, so these being nil is expected by Prometheus. + factorySPr := func(_ context.Context) api_v1.ScrapePoolsRetriever { return o.ScrapeManager } + factoryTr := func(_ context.Context) api_v1.TargetRetriever { return o.ScrapeManager } + factoryAr := func(_ context.Context) api_v1.AlertmanagerRetriever { return nil } + factoryRr := func(_ context.Context) api_v1.RulesRetriever { return nil } + var app storage.Appendable + logger := promslog.NewNopLogger() + + apiV1 := api_v1.NewAPI(o.QueryEngine, o.Storage, app, o.ExemplarStorage, factorySPr, factoryTr, factoryAr, + + // This ensures that any changes to the config made, even by the target allocator, are reflected in the API. + func() promconfig.Config { + return *(*promconfig.Config)(r.cfg.PrometheusConfig) + }, + o.Flags, // nil + api_v1.GlobalURLOptions{ + ListenAddress: o.ListenAddresses[0], + Host: o.ExternalURL.Host, + Scheme: o.ExternalURL.Scheme, + }, + func(f http.HandlerFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + f(w, r) + } + }, + o.LocalStorage, // nil + o.TSDBDir, // nil + o.EnableAdminAPI, // nil + logger, + factoryRr, + o.RemoteReadSampleLimit, // nil + o.RemoteReadConcurrencyLimit, // nil + o.RemoteReadBytesInFrame, // nil + o.IsAgent, + o.CORSOrigin, + func() (api_v1.RuntimeInfo, error) { + status := api_v1.RuntimeInfo{ + GoroutineCount: runtime.NumGoroutine(), + GOMAXPROCS: runtime.GOMAXPROCS(0), + GOMEMLIMIT: debug.SetMemoryLimit(-1), + GOGC: os.Getenv("GOGC"), + GODEBUG: os.Getenv("GODEBUG"), + } + + return status, nil + }, + &web.PrometheusVersion{ + Version: version.Version, + Revision: version.Revision, + Branch: version.Branch, + BuildUser: version.BuildUser, + BuildDate: version.BuildDate, + GoVersion: version.GoVersion, + }, + o.NotificationsGetter, + o.NotificationsSub, + o.Gatherer, + o.Registerer, + nil, + o.EnableRemoteWriteReceiver, + o.AcceptRemoteWriteProtoMsgs, + o.EnableOTLPWriteReceiver, + o.ConvertOTLPDelta, + o.NativeOTLPDeltaIngestion, + o.CTZeroIngestionEnabled, + ) + + // Create listener and monitor with conntrack in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L564-L579 + listener, err := r.cfg.APIServer.ServerConfig.ToListener(ctx) + if err != nil { + return fmt.Errorf("failed to create listener: %s", err.Error()) + } + listener = netutil.LimitListener(listener, o.MaxConnections) + listener = conntrack.NewListener(listener, + conntrack.TrackWithName("http"), + conntrack.TrackWithTracing()) + + // Run the API server in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L582-L630 + mux := http.NewServeMux() + promHandler := promhttp.HandlerFor(o.Gatherer, promhttp.HandlerOpts{Registry: o.Registerer}) + mux.Handle("/metrics", promHandler) + + // This is the path the web package uses, but the router above with no prefix can also be Registered by apiV1 instead. + apiPath := "/api" + if o.RoutePrefix != "/" { + apiPath = o.RoutePrefix + apiPath + logger.Info("Router prefix", "prefix", o.RoutePrefix) + } + av1 := route.New(). + WithInstrumentation(setPathWithPrefix(apiPath + "/v1")) + apiV1.Register(av1) + mux.Handle(apiPath+"/v1/", http.StripPrefix(apiPath+"/v1", av1)) + + spanNameFormatter := otelhttp.WithSpanNameFormatter(func(_ string, r *http.Request) string { + return fmt.Sprintf("%s %s", r.Method, r.URL.Path) + }) + r.apiServer, err = r.cfg.APIServer.ServerConfig.ToServer(ctx, host, r.settings.TelemetrySettings, otelhttp.NewHandler(mux, "", spanNameFormatter)) + if err != nil { + return err + } + webconfig := "" + + go func() { + if err := toolkit_web.Serve(listener, r.apiServer, &toolkit_web.FlagConfig{WebConfigFile: &webconfig}, logger); err != nil { + r.settings.Logger.Error("API server failed", zap.Error(err)) + } + }() + return nil } +// Helper function from the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L582-L630 +func setPathWithPrefix(prefix string) func(handlerName string, handler http.HandlerFunc) http.HandlerFunc { + return func(_ string, handler http.HandlerFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + handler(w, r.WithContext(httputil.ContextWithPath(r.Context(), prefix+r.URL.Path))) + } + } +} + // gcInterval returns the longest scrape interval used by a scrape config, // plus a delta to prevent race conditions. // This ensures jobs are not garbage collected between scrapes. @@ -251,8 +433,8 @@ func (r *pReceiver) Shutdown(ctx context.Context) error { if r.unregisterMetrics != nil { r.unregisterMetrics() } - if r.apiServerManager != nil { - err := r.apiServerManager.Shutdown(ctx) + if r.apiServer != nil { + err := r.apiServer.Shutdown(ctx) if err != nil { return err } diff --git a/otelcollector/prometheusreceiver/metrics_receiver_created_timestamp_zero_ingestion_test.go b/otelcollector/prometheusreceiver/metrics_receiver_created_timestamp_zero_ingestion_test.go new file mode 100644 index 000000000..2778c733c --- /dev/null +++ b/otelcollector/prometheusreceiver/metrics_receiver_created_timestamp_zero_ingestion_test.go @@ -0,0 +1,177 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package prometheusreceiver + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/featuregate" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" + "go.opentelemetry.io/collector/receiver/receivertest" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" +) + +func TestEnableCreatedTimestampZeroIngestionGateUsage(t *testing.T) { + ctx := context.Background() + mockConsumer := new(consumertest.MetricsSink) + cfg := createDefaultConfig().(*Config) + settings := receivertest.NewNopSettings(metadata.Type) + + // Test with feature gate enabled + err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", true) + require.NoError(t, err) + r1, err := newPrometheusReceiver(settings, cfg, mockConsumer) + require.NoError(t, err) + + assert.True(t, enableCreatedTimestampZeroIngestionGate.IsEnabled(), "Feature gate should be enabled") + opts := r1.initScrapeOptions() + assert.True(t, opts.EnableCreatedTimestampZeroIngestion, "EnableCreatedTimestampZeroIngestion should be true when feature gate is enabled") + + // Test with feature gate disabled + err = featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", false) + require.NoError(t, err) + r2, err := newPrometheusReceiver(settings, cfg, mockConsumer) + require.NoError(t, err) + + assert.False(t, enableCreatedTimestampZeroIngestionGate.IsEnabled(), "Feature gate should be disabled") + opts = r2.initScrapeOptions() + assert.False(t, opts.EnableCreatedTimestampZeroIngestion, "EnableCreatedTimestampZeroIngestion should be false when feature gate is disabled") + + // Reset the feature gate and shutdown the created receivers + t.Cleanup(func() { + err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", false) + require.NoError(t, err, "Failed to reset feature gate to default state") + + require.NoError(t, r1.Shutdown(ctx), "Failed to shutdown receiver 1") + require.NoError(t, r2.Shutdown(ctx), "Failed to shutdown receiver 2") + }) +} + +var openMetricsCreatedTimestampMetrics = `# HELP a_seconds A counter +# TYPE a_seconds counter +# UNIT a_seconds seconds +a_seconds_total 1.0 +a_seconds_created 123.456 +# EOF +` + +func TestOpenMetricsCreatedTimestampZeroIngestionEnabled(t *testing.T) { + err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", true) + require.NoError(t, err) + t.Cleanup(func() { + err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", false) + require.NoError(t, err, "Failed to reset feature gate to default state") + }) + + targets := []*testData{ + { + name: "target1", + pages: []mockPrometheusResponse{ + {code: 200, data: openMetricsCreatedTimestampMetrics, useOpenMetrics: true}, + }, + validateFunc: verifyOpenMetricsCreatedTimestampZeroIngestionEnabled, + validateScrapes: true, + normalizedName: true, + }, + } + + testComponent(t, targets, nil) +} + +func verifyOpenMetricsCreatedTimestampZeroIngestionEnabled(t *testing.T, td *testData, mds []pmetric.ResourceMetrics) { + verifyNumValidScrapeResults(t, td, mds) + ts1 := getTS(mds[0].ScopeMetrics().At(0).Metrics()) + e1 := []metricExpectation{ + { + "a_seconds_total", + pmetric.MetricTypeSum, + "s", + []dataPointExpectation{ + { + numberPointComparator: []numberPointComparator{ + compareStartTimestamp(timestampFromFloat64(123.456)), + compareTimestamp(ts1), + compareDoubleValue(1.0), + }, + }, + }, + nil, + }, + } + doCompare(t, "created-timestamp-zero-ingestion-enabled", td.attributes, mds[0], e1) +} + +func TestOpenMetricsCreatedTimestampZeroIngestionDisabled(t *testing.T) { + err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", false) + require.NoError(t, err) + t.Cleanup(func() { + err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion", false) + require.NoError(t, err, "Failed to reset feature gate to default state") + }) + + targets := []*testData{ + { + name: "target2", + pages: []mockPrometheusResponse{ + {code: 200, data: openMetricsCreatedTimestampMetrics, useOpenMetrics: true}, + }, + validateFunc: verifyOpenMetricsCreatedTimestampZeroIngestionDisabled, + validateScrapes: true, + normalizedName: false, + }, + } + + testComponent(t, targets, nil) +} + +func verifyOpenMetricsCreatedTimestampZeroIngestionDisabled(t *testing.T, td *testData, mds []pmetric.ResourceMetrics) { + verifyNumValidScrapeResults(t, td, mds) + ts1 := getTS(mds[0].ScopeMetrics().At(0).Metrics()) + e1 := []metricExpectation{ + { + "a_seconds_total", + pmetric.MetricTypeSum, + "s", + []dataPointExpectation{ + { + numberPointComparator: []numberPointComparator{ + compareStartTimestamp(ts1), + compareTimestamp(ts1), + compareDoubleValue(1.0), + }, + }, + }, + nil, + }, + { + "a_seconds_created", + pmetric.MetricTypeSum, + "s", + []dataPointExpectation{ + { + numberPointComparator: []numberPointComparator{ + compareStartTimestamp(timestampFromFloat64(123.456)), + compareTimestamp(ts1), + compareDoubleValue(0), + }, + }, + }, + nil, + }, + } + + doCompare(t, "created-timestamp-zero-ingestion-disabled", td.attributes, mds[0], e1) +} + +func timestampFromFloat64(ts float64) pcommon.Timestamp { + secs := int64(ts) + nanos := int64((ts - float64(secs)) * 1e9) + return pcommon.Timestamp(secs*1e9 + nanos) +} diff --git a/otelcollector/prometheusreceiver/metrics_receiver_target_allocator_test.go b/otelcollector/prometheusreceiver/metrics_receiver_target_allocator_test.go new file mode 100644 index 000000000..ae3f6deaf --- /dev/null +++ b/otelcollector/prometheusreceiver/metrics_receiver_target_allocator_test.go @@ -0,0 +1,174 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package prometheusreceiver + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "strings" + "sync/atomic" + "testing" + "time" + + promTestUtil "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/model" + "github.com/prometheus/common/promslog" + promConfig "github.com/prometheus/prometheus/config" + promHTTP "github.com/prometheus/prometheus/discovery/http" + promTG "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/receiver/receivertest" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "gopkg.in/yaml.v3" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" +) + +const exportedMetrics = ` +# HELP test_gauge0 This is my gauge +# TYPE test_gauge0 gauge +test_gauge0{label1="value1",label2="value2"} 10 +` + +func TestTargetAllocatorProvidesEmptyScrapeConfig(t *testing.T) { + // Make a prometheus exporter that can serve some metrics. + mockProm := newMockPrometheus(map[string][]mockPrometheusResponse{ + "/metrics": { + { + code: 200, + data: exportedMetrics, + }, + }, + }) + t.Cleanup(func() { mockProm.srv.Close() }) + + // Fake TargetAllocator to serve discovery and targets. + tas := newMockTargetAllocator(mockProm.srv.Listener.Addr().String()) + t.Cleanup(func() { tas.srv.Close() }) + + promSDConfig := &promHTTP.SDConfig{ + RefreshInterval: model.Duration(45 * time.Second), + URL: tas.srv.URL, + } + + pCfg, err := promConfig.Load("", promslog.NewNopLogger()) + require.NoError(t, err) + + config := &Config{ + PrometheusConfig: (*PromConfig)(pCfg), + StartTimeMetricRegex: "", + TargetAllocator: &targetallocator.Config{ + ClientConfig: confighttp.ClientConfig{ + Endpoint: tas.srv.URL, + }, + CollectorID: "1", + HTTPSDConfig: (*targetallocator.PromHTTPSDConfig)(promSDConfig), + Interval: 60 * time.Second, + }, + } + + cms := new(consumertest.MetricsSink) + settings := receivertest.NewNopSettings(metadata.Type) + logsOverWarn := atomic.Int64{} + settings.Logger, err = zap.NewDevelopment(zap.Hooks(func(logentry zapcore.Entry) error { + if logentry.Level >= zapcore.WarnLevel { + logsOverWarn.Add(1) + } + return nil + })) + require.NoError(t, err) + receiver, err := newPrometheusReceiver(settings, config, cms) + require.NoError(t, err, "Failed to create Prometheus receiver") + receiver.skipOffsetting = true + + require.NoError(t, receiver.Start(context.Background(), componenttest.NewNopHost()), "Failed to start Prometheus receiver") + t.Cleanup(func() { + require.NoError(t, receiver.Shutdown(context.Background())) + }) + + metricsCount := 0 + require.Eventually(t, func() bool { + metrics := cms.AllMetrics() + // Scrape was a success and we got metrics. + if len(metrics) > 0 { + metricsCount = len(metrics) + return true + } + // There was a log line above WARN level. + if logsOverWarn.Load() > 0 { + return true + } + return false + }, 30*time.Second, 100*time.Millisecond, "Failed to scrape the metrics via target allocator") + + require.Zero(t, logsOverWarn.Load(), "There are log messages over the WARN level, see logs") + + require.NoError(t, promTestUtil.GatherAndCompare(receiver.registry, bytes.NewBufferString(fmt.Sprintf(` + # TYPE prometheus_target_scrape_pools_failed_total counter + # HELP prometheus_target_scrape_pools_failed_total Total number of scrape pool creations that failed. + prometheus_target_scrape_pools_failed_total{receiver="%s"} 0 +`, receiver.settings.ID)), "prometheus_target_scrape_pools_failed_total"), "Prometheus scrape manager reports failed scrape pools") + + require.Positive(t, metricsCount, "No metrics were scraped even though successful") +} + +type mockTargetAllocator struct { + address string + srv *httptest.Server +} + +func newMockTargetAllocator(address string) *mockTargetAllocator { + s := &mockTargetAllocator{ + address: address, + } + srv := httptest.NewServer(s) + s.srv = srv + return s +} + +func (mp *mockTargetAllocator) ServeHTTP(rw http.ResponseWriter, req *http.Request) { + if strings.HasSuffix(req.URL.Path, "/scrape_configs") { + job := make(map[string]any) + job["job_name"] = "test" + // Do not set any fields in the scrape config to verify that we have sane defaults. + + result := make(map[string]any) + result["test"] = job + + data, err := yaml.Marshal(&result) + if err != nil { + return + } + + _, _ = rw.Write(data) + return + } + + response := []*promTG.Group{ + { + Targets: []model.LabelSet{ + { + model.AddressLabel: model.LabelValue(mp.address), + model.SchemeLabel: "http", + }, + }, + }, + } + + data, err := json.Marshal(&response) + if err != nil { + return + } + rw.Header().Set("Content-Type", "application/json") + _, _ = rw.Write(data) +} diff --git a/otelcollector/prometheusreceiver/targetallocator/config.go b/otelcollector/prometheusreceiver/targetallocator/config.go index 00f02bbbd..6514cdbed 100644 --- a/otelcollector/prometheusreceiver/targetallocator/config.go +++ b/otelcollector/prometheusreceiver/targetallocator/config.go @@ -141,47 +141,47 @@ func configureSDHTTPClientConfigFromTA(httpSD *promHTTP.SDConfig, allocConf *Con httpSD.HTTPClientConfig.FollowRedirects = false httpSD.HTTPClientConfig.TLSConfig = commonconfig.TLSConfig{ - InsecureSkipVerify: allocConf.TLSSetting.InsecureSkipVerify, - ServerName: allocConf.TLSSetting.ServerName, - CAFile: allocConf.TLSSetting.CAFile, - CertFile: allocConf.TLSSetting.CertFile, - KeyFile: allocConf.TLSSetting.KeyFile, + InsecureSkipVerify: allocConf.TLS.InsecureSkipVerify, + ServerName: allocConf.TLS.ServerName, + CAFile: allocConf.TLS.CAFile, + CertFile: allocConf.TLS.CertFile, + KeyFile: allocConf.TLS.KeyFile, } - if allocConf.TLSSetting.CAPem != "" { - decodedCA, err := base64.StdEncoding.DecodeString(string(allocConf.TLSSetting.CAPem)) + if allocConf.TLS.CAPem != "" { + decodedCA, err := base64.StdEncoding.DecodeString(string(allocConf.TLS.CAPem)) if err != nil { return fmt.Errorf("failed to decode CA: %w", err) } httpSD.HTTPClientConfig.TLSConfig.CA = string(decodedCA) } - if allocConf.TLSSetting.CertPem != "" { - decodedCert, err := base64.StdEncoding.DecodeString(string(allocConf.TLSSetting.CertPem)) + if allocConf.TLS.CertPem != "" { + decodedCert, err := base64.StdEncoding.DecodeString(string(allocConf.TLS.CertPem)) if err != nil { return fmt.Errorf("failed to decode Cert: %w", err) } httpSD.HTTPClientConfig.TLSConfig.Cert = string(decodedCert) } - if allocConf.TLSSetting.KeyPem != "" { - decodedKey, err := base64.StdEncoding.DecodeString(string(allocConf.TLSSetting.KeyPem)) + if allocConf.TLS.KeyPem != "" { + decodedKey, err := base64.StdEncoding.DecodeString(string(allocConf.TLS.KeyPem)) if err != nil { return fmt.Errorf("failed to decode Key: %w", err) } httpSD.HTTPClientConfig.TLSConfig.Key = commonconfig.Secret(decodedKey) } - if allocConf.TLSSetting.MinVersion != "" { - minVersion, err := convertTLSVersion(allocConf.TLSSetting.MinVersion) + if allocConf.TLS.MinVersion != "" { + minVersion, err := convertTLSVersion(allocConf.TLS.MinVersion) if err != nil { return err } httpSD.HTTPClientConfig.TLSConfig.MinVersion = minVersion } - if allocConf.TLSSetting.MaxVersion != "" { - maxVersion, err := convertTLSVersion(allocConf.TLSSetting.MaxVersion) + if allocConf.TLS.MaxVersion != "" { + maxVersion, err := convertTLSVersion(allocConf.TLS.MaxVersion) if err != nil { return err } diff --git a/otelcollector/prometheusreceiver/targetallocator/config_test.go b/otelcollector/prometheusreceiver/targetallocator/config_test.go index decc07659..0b441fa2a 100644 --- a/otelcollector/prometheusreceiver/targetallocator/config_test.go +++ b/otelcollector/prometheusreceiver/targetallocator/config_test.go @@ -32,7 +32,7 @@ func TestLoadTargetAllocatorConfig(t *testing.T) { assert.Equal(t, "http://localhost:8080", cfg.Endpoint) assert.Equal(t, 5*time.Second, cfg.Timeout) - assert.Equal(t, "client.crt", cfg.TLSSetting.CertFile) + assert.Equal(t, "client.crt", cfg.TLS.CertFile) assert.Equal(t, 30*time.Second, cfg.Interval) assert.Equal(t, "collector-1", cfg.CollectorID) } diff --git a/otelcollector/prometheusreceiver/targetallocator/manager.go b/otelcollector/prometheusreceiver/targetallocator/manager.go index 1ee8e3d1b..c20fbf7f9 100644 --- a/otelcollector/prometheusreceiver/targetallocator/manager.go +++ b/otelcollector/prometheusreceiver/targetallocator/manager.go @@ -154,6 +154,21 @@ func (m *Manager) sync(compareHash uint64, httpClient *http.Client) (uint64, err scrapeConfig.ScrapeFallbackProtocol = promconfig.PrometheusText0_0_4 } + // TODO(krajorama): remove once + // https://github.com/prometheus/prometheus/issues/16750 is solved + // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/35459 + // is implemented and is default. + if m.promCfg.GlobalConfig.MetricNameValidationScheme == "" { + m.promCfg.GlobalConfig.MetricNameValidationScheme = promconfig.LegacyValidationConfig + } + + // Validate the scrape config and also fill in the defaults from the global config as needed. + err = scrapeConfig.Validate(m.promCfg.GlobalConfig) + if err != nil { + m.settings.Logger.Error("Failed to validate the scrape configuration", zap.Error(err)) + return 0, err + } + m.promCfg.ScrapeConfigs = append(m.promCfg.ScrapeConfigs, scrapeConfig) } diff --git a/otelcollector/prometheusreceiver/targetallocator/manager_test.go b/otelcollector/prometheusreceiver/targetallocator/manager_test.go index 4a8c210c0..d4ffbb8b0 100644 --- a/otelcollector/prometheusreceiver/targetallocator/manager_test.go +++ b/otelcollector/prometheusreceiver/targetallocator/manager_test.go @@ -802,7 +802,7 @@ func TestTargetAllocatorJobRetrieval(t *testing.T) { func TestConfigureSDHTTPClientConfigFromTA(t *testing.T) { ta := &Config{} - ta.TLSSetting = configtls.ClientConfig{ + ta.TLS = configtls.ClientConfig{ InsecureSkipVerify: true, ServerName: "test.server", Config: configtls.Config{