diff --git a/CHANGELOG.md b/CHANGELOG.md index b5d963a34896..705dc3e6cf7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,17 @@ internal API changes are not present. Main (unreleased) ----------------- +### Features + +- Update to Prometheus v0.53.2. (@ptodev) + +- Added `scrape_protocols` option to `prometheus.scrape`, which allows to control the preferred order of scrape protocols. (@thampiotr) + +### Other changes + +- `prometheus.scrape` component's `enable_protobuf_negotiation` argument is now deprecated and will be removed in a future major release. + Use `scrape_protocols` instead and refer to `prometheus.scrape` reference documentation for further details. (@thampiotr) + v0.43.4 (2024-11-25) ----------------- diff --git a/docs/sources/flow/reference/cli/convert.md b/docs/sources/flow/reference/cli/convert.md index 73761440eec4..91cc27a128bb 100644 --- a/docs/sources/flow/reference/cli/convert.md +++ b/docs/sources/flow/reference/cli/convert.md @@ -87,14 +87,14 @@ Refer to [Migrate from OpenTelemetry Collector to {{< param "PRODUCT_NAME" >}}][ ### Prometheus Using the `--source-format=prometheus` will convert the source configuration from -[Prometheus v2.45](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/) +[Prometheus v2.53](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/) to {{< param "PRODUCT_NAME" >}} configuration. This includes Prometheus features such as -[scrape_config](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#scrape_config), -[relabel_config](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#relabel_config), -[metric_relabel_configs](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#metric_relabel_configs), -[remote_write](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#remote_write), +[scrape_config](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#scrape_config), +[relabel_config](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#relabel_config), +[metric_relabel_configs](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#metric_relabel_configs), +[remote_write](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#remote_write), and many supported *_sd_configs. Unsupported features in a source configuration result in [errors]. diff --git a/docs/sources/flow/reference/components/prometheus.receive_http.md b/docs/sources/flow/reference/components/prometheus.receive_http.md index dd78e88ad107..3039efca3fb0 100644 --- a/docs/sources/flow/reference/components/prometheus.receive_http.md +++ b/docs/sources/flow/reference/components/prometheus.receive_http.md @@ -16,7 +16,7 @@ title: prometheus.receive_http The HTTP API exposed is compatible with [Prometheus `remote_write` API][prometheus-remote-write-docs]. This means that other [`prometheus.remote_write`][prometheus.remote_write] components can be used as a client and send requests to `prometheus.receive_http` which enables using {{< param "PRODUCT_ROOT_NAME" >}} as a proxy for prometheus metrics. [prometheus.remote_write]: {{< relref "./prometheus.remote_write.md" >}} -[prometheus-remote-write-docs]: https://prometheus.io/docs/prometheus/2.45/querying/api/#remote-write-receiver +[prometheus-remote-write-docs]: https://prometheus.io/docs/prometheus/2.53/querying/api/#remote-write-receiver ## Usage diff --git a/docs/sources/flow/reference/components/prometheus.scrape.md b/docs/sources/flow/reference/components/prometheus.scrape.md index 6cd15ddb2553..fb2a3acd1790 100644 --- a/docs/sources/flow/reference/components/prometheus.scrape.md +++ b/docs/sources/flow/reference/components/prometheus.scrape.md @@ -48,7 +48,7 @@ Name | Type | Description | Default | Required `forward_to` | `list(MetricsReceiver)` | List of receivers to send scraped metrics to. | | yes `job_name` | `string` | The value to use for the job label if not already set. | component name | no `extra_metrics` | `bool` | Whether extra metrics should be generated for scrape targets. | `false` | no -`enable_protobuf_negotiation` | `bool` | Whether to enable protobuf negotiation with the client. | `false` | no +`enable_protobuf_negotiation` | `bool` | Deprecated: use `scrape_protocols` instead. | `false` | no `honor_labels` | `bool` | Indicator whether the scraped metrics should remain unmodified. | `false` | no `honor_timestamps` | `bool` | Indicator whether the scraped timestamps should be respected. | `true` | no `track_timestamps_staleness` | `bool` | Indicator whether to track the staleness of the scraped timestamps. | `false` | no @@ -56,6 +56,7 @@ Name | Type | Description | Default | Required `scrape_classic_histograms` | `bool` | Whether to scrape a classic histogram that is also exposed as a native histogram. | `false` | no `scrape_interval` | `duration` | How frequently to scrape the targets of this scrape configuration. | `"60s"` | no `scrape_timeout` | `duration` | The timeout for scraping targets of this configuration. | `"10s"` | no +`scrape_protocols` | `list(string)` | The protocols to negotiate during a scrape, in order of preference. See below for available values. | `["OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText0.0.4"]` | no | `metrics_path` | `string` | The HTTP resource path on which to fetch metrics from targets. | `/metrics` | no `scheme` | `string` | The URL scheme with which to fetch metrics from targets. | | no `body_size_limit` | `int` | An uncompressed response body larger than this many bytes causes the scrape to fail. 0 means no limit. | | no @@ -80,6 +81,17 @@ Name | Type | Description | Default | Required - [`authorization` block][authorization]. - [`oauth2` block][oauth2]. +`scrape_protocols` controls the preferred order of protocols to negotiate during +a scrape. The following values are supported: + +- `OpenMetricsText1.0.0` +- `OpenMetricsText0.0.1` +- `PrometheusProto` +- `PrometheusText0.0.4` + +If you were using the now deprecated `enable_protobuf_negotiation` argument, switch +to using `scrape_protocols = ["PrometheusProto", "OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText0.0.4"]` instead. + {{< docs/shared lookup="flow/reference/components/http-client-proxy-config-description.md" source="agent" version="" >}} `track_timestamps_staleness` controls whether Prometheus tracks [staleness][prom-staleness] of metrics which with an explicit timestamp present in scraped data. diff --git a/docs/sources/static/api/_index.md b/docs/sources/static/api/_index.md index 564bdb140aaf..128fd68e60ce 100644 --- a/docs/sources/static/api/_index.md +++ b/docs/sources/static/api/_index.md @@ -442,7 +442,7 @@ GET /agent/api/v1/metrics/integrations/sd ``` This endpoint returns all running metrics-based integrations. It conforms to -the Prometheus [http_sd_config API](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#http_sd_config). +the Prometheus [http_sd_config API](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#http_sd_config). Targets include integrations regardless of autoscrape being enabled; this allows for manually configuring scrape jobs to collect metrics from an integration running on an external agent. diff --git a/docs/sources/static/configuration/agent-management.md b/docs/sources/static/configuration/agent-management.md index af327bb17b6e..d5d13ab388ac 100644 --- a/docs/sources/static/configuration/agent-management.md +++ b/docs/sources/static/configuration/agent-management.md @@ -117,7 +117,7 @@ selector: > **Note:** More information on the following types can be found in their respective documentation pages: > -> * [`scrape_config`](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#scrape_config) +> * [`scrape_config`](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#scrape_config) > * [`promtail.scrape_config`](/docs/loki/latest/clients/promtail/configuration/#scrape_configs) > * [`integrations_config`](/docs/agent/latest/static/configuration/integrations) diff --git a/docs/sources/static/configuration/flags.md b/docs/sources/static/configuration/flags.md index 272e39194955..bb5910697fe9 100644 --- a/docs/sources/static/configuration/flags.md +++ b/docs/sources/static/configuration/flags.md @@ -51,7 +51,7 @@ Valid feature names are: * `remote-configs`: Enable [retrieving](ref:retrieving) config files over HTTP/HTTPS * `integrations-next`: Enable [revamp](ref:revamp) of the integrations subsystem -* `extra-scrape-metrics`: When enabled, additional time series are exposed for each metrics instance scrape. See [Extra scrape metrics](https://prometheus.io/docs/prometheus/2.45/feature_flags/#extra-scrape-metrics). +* `extra-scrape-metrics`: When enabled, additional time series are exposed for each metrics instance scrape. See [Extra scrape metrics](https://prometheus.io/docs/prometheus/2.53/feature_flags/#extra-scrape-metrics). * `agent-management`: Enable support for [agent management](ref:management). ## Report information usage diff --git a/docs/sources/static/configuration/integrations/integrations-next/_index.md b/docs/sources/static/configuration/integrations/integrations-next/_index.md index cfa54bfb9b8f..f454b6c9d675 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/_index.md +++ b/docs/sources/static/configuration/integrations/integrations-next/_index.md @@ -47,7 +47,7 @@ original subsystem: * Autoscrape, when enabled, now works completely in-memory without using the network. -[http_sd_config]: https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#http_sd_config +[http_sd_config]: https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#http_sd_config ## Config changes diff --git a/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md b/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md index 0adf62f2b663..cd1315d190ca 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md +++ b/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md @@ -44,7 +44,7 @@ integrations: ## Prometheus service discovery use case -If you need to scrape SNMP devices in more dynamic environment, and cannot define devices in `snmp_targets` because targets would change over time, you can use service discovery approach. For instance, with [DNS discovery](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#dns_sd_config): +If you need to scrape SNMP devices in more dynamic environment, and cannot define devices in `snmp_targets` because targets would change over time, you can use service discovery approach. For instance, with [DNS discovery](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#dns_sd_config): ```yaml diff --git a/docs/sources/static/configuration/integrations/snmp-config.md b/docs/sources/static/configuration/integrations/snmp-config.md index b52beafe9ea8..6a200a2fc7d8 100644 --- a/docs/sources/static/configuration/integrations/snmp-config.md +++ b/docs/sources/static/configuration/integrations/snmp-config.md @@ -48,7 +48,7 @@ integrations: ## Prometheus service discovery use case -If you need to scrape SNMP devices in more dynamic environment, and can't define devices in `snmp_targets` because targets would change over time, you can use service discovery approach. For instance, with [DNS discovery](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#dns_sd_config): +If you need to scrape SNMP devices in more dynamic environment, and can't define devices in `snmp_targets` because targets would change over time, you can use service discovery approach. For instance, with [DNS discovery](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#dns_sd_config): ```yaml diff --git a/docs/sources/static/configuration/metrics-config.md b/docs/sources/static/configuration/metrics-config.md index f41fbad768b6..723e83847174 100644 --- a/docs/sources/static/configuration/metrics-config.md +++ b/docs/sources/static/configuration/metrics-config.md @@ -268,7 +268,7 @@ remote_write: - [] ``` -> **Note:** For more information on remote_write, refer to the [Prometheus documentation](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#remote_write). +> **Note:** For more information on remote_write, refer to the [Prometheus documentation](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#remote_write). > > The following default values set by Grafana Agent Static Mode are different than the default set by Prometheus: > - `remote_write`: `send_exemplars` default value is `true` @@ -344,9 +344,9 @@ remote_write: > **Note:** More information on the following types can be found on the Prometheus > website: > -> * [`relabel_config`](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#relabel_config) -> * [`scrape_config`](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#scrape_config) -> * [`remote_write`](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#remote_write) +> * [`relabel_config`](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#relabel_config) +> * [`scrape_config`](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#scrape_config) +> * [`remote_write`](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#remote_write) ## Data retention diff --git a/docs/sources/static/configuration/traces-config.md b/docs/sources/static/configuration/traces-config.md index 51b026d74fac..41b835aaeb3a 100644 --- a/docs/sources/static/configuration/traces-config.md +++ b/docs/sources/static/configuration/traces-config.md @@ -137,7 +137,7 @@ remote_write: [ cipher_suites: ] # Controls TLS settings of the exporter's client: - # https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#tls_config + # https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#tls_config # This should be used only if `insecure` is set to false tls_config: # Path to the CA cert. For a client this verifies the server certificate. If empty uses system root CA. @@ -483,7 +483,7 @@ More information on the following types can be found on the documentation for th * [`otlpreceiver`: OpenTelemetry-Collector](https://github.com/open-telemetry/opentelemetry-collector/tree/{{< param "OTEL_VERSION" >}}/receiver/otlpreceiver) * [`opencensusreceiver`: OpenTelemetry-Collector-Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/{{< param "OTEL_VERSION" >}}/receiver/opencensusreceiver) * [`zipkinreceiver`: OpenTelemetry-Collector-Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/{{< param "OTEL_VERSION" >}}/receiver/zipkinreceiver) -* [`scrape_config`: Prometheus](https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#scrape_config) +* [`scrape_config`: Prometheus](https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#scrape_config) * [`spanmetricsprocessor.latency_histogram_buckets`: OpenTelemetry-Collector-Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/{{< param "OTEL_VERSION" >}}/processor/spanmetricsprocessor/config.go#L37-L39) * [`spanmetricsprocessor.dimensions`: OpenTelemetry-Collector-Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/{{< param "OTEL_VERSION" >}}/processor/spanmetricsprocessor/config.go#L41-L48) * [`tailsamplingprocessor.policies`: OpenTelemetry-Collector-Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/{{< param "OTEL_VERSION" >}}/processor/tailsamplingprocessor) diff --git a/go.mod b/go.mod index 24f7dc539734..44db217b3406 100644 --- a/go.mod +++ b/go.mod @@ -9,17 +9,17 @@ retract ( ) require ( - cloud.google.com/go/pubsub v1.36.1 - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 + cloud.google.com/go/pubsub v1.40.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 github.com/Azure/go-autorest/autorest v0.11.29 github.com/IBM/sarama v1.43.0 github.com/Lusitaniae/apache_exporter v0.11.1-0.20220518131644-f9522724dab4 github.com/Masterminds/sprig/v3 v3.2.3 github.com/PuerkitoBio/rehttp v1.3.0 github.com/alecthomas/kingpin/v2 v2.4.0 - github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 - github.com/aws/aws-sdk-go v1.50.27 // indirect + github.com/alecthomas/units v0.0.0-20240626203959-61d1e3462e30 + github.com/aws/aws-sdk-go v1.54.19 // indirect github.com/aws/aws-sdk-go-v2 v1.25.2 github.com/aws/aws-sdk-go-v2/config v1.27.4 github.com/aws/aws-sdk-go-v2/service/s3 v1.49.0 @@ -29,7 +29,7 @@ require ( github.com/cilium/ebpf v0.12.3 // indirect github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf github.com/coreos/go-systemd/v22 v22.5.0 - github.com/docker/docker v25.0.6+incompatible + github.com/docker/docker v27.3.1+incompatible github.com/docker/go-connections v0.5.0 github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 github.com/fatih/color v1.16.0 @@ -40,7 +40,7 @@ require ( github.com/go-git/go-git/v5 v5.11.0 github.com/go-kit/log v0.2.1 github.com/go-logfmt/logfmt v0.6.0 - github.com/go-logr/logr v1.4.1 + github.com/go-logr/logr v1.4.2 github.com/go-sourcemap/sourcemap v2.1.3+incompatible github.com/go-sql-driver/mysql v1.7.1 github.com/gogo/protobuf v1.3.2 @@ -50,7 +50,7 @@ require ( github.com/google/dnsmasq_exporter v0.2.1-0.20230620100026-44b14480804a github.com/google/go-cmp v0.6.0 github.com/google/go-jsonnet v0.18.0 - github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 + github.com/google/pprof v0.0.0-20240711041743-f6c9dda6c6da github.com/google/renameio/v2 v2.0.0 github.com/google/uuid v1.6.0 github.com/gorilla/mux v1.8.1 @@ -58,11 +58,11 @@ require ( github.com/grafana/cloudflare-go v0.0.0-20230110200409-c627cf6792f2 github.com/grafana/dskit v0.0.0-20240104111617-ea101a3b86eb github.com/grafana/go-gelf/v2 v2.0.1 - github.com/grafana/loki v1.6.2-0.20240510183741-cef4c2826b4b // k190 branch + github.com/grafana/loki v1.6.2-0.20241127144924-8a36637f2186 // k195 branch github.com/grafana/pyroscope-go/godeltaprof v0.1.7 github.com/grafana/pyroscope/api v0.4.0 github.com/grafana/pyroscope/ebpf v0.4.6 - github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db + github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc github.com/grafana/river v0.3.1-0.20240123144725-960753160cd1 github.com/grafana/snowflake-prometheus-exporter v0.0.0-20240524135656-12b7c9be6cbf github.com/grafana/tail v0.0.0-20230510142333-77b18831edf0 @@ -88,10 +88,10 @@ require ( github.com/jaegertracing/jaeger v1.54.0 github.com/jmespath/go-jmespath v0.4.0 github.com/json-iterator/go v1.1.12 - github.com/klauspost/compress v1.17.8 + github.com/klauspost/compress v1.17.9 github.com/lib/pq v1.10.9 github.com/mackerelio/go-osstat v0.2.3 - github.com/miekg/dns v1.1.56 + github.com/miekg/dns v1.1.61 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c github.com/mitchellh/reflectwalk v1.0.2 github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f @@ -145,14 +145,14 @@ require ( github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.66.0 github.com/prometheus-operator/prometheus-operator/pkg/client v0.66.0 github.com/prometheus/blackbox_exporter v0.24.1-0.20230623125439-bd22efa1c900 - github.com/prometheus/client_golang v1.19.0 + github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 - github.com/prometheus/common v0.53.0 + github.com/prometheus/common v0.55.0 github.com/prometheus/consul_exporter v0.8.0 github.com/prometheus/memcached_exporter v0.13.0 github.com/prometheus/mysqld_exporter v0.14.0 github.com/prometheus/node_exporter v1.6.0 - github.com/prometheus/procfs v0.12.0 + github.com/prometheus/procfs v0.15.1 github.com/prometheus/prometheus v1.99.0 github.com/prometheus/snmp_exporter v0.26.0 github.com/prometheus/statsd_exporter v0.22.8 @@ -164,7 +164,7 @@ require ( github.com/spaolacci/murmur3 v1.1.0 github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.9.0 - github.com/testcontainers/testcontainers-go v0.27.0 + github.com/testcontainers/testcontainers-go v0.33.0 github.com/testcontainers/testcontainers-go/modules/k3s v0.0.0-20230615142642-c175df34bd1d github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/vincent-petithory/dataurl v1.0.0 @@ -194,59 +194,59 @@ require ( go.opentelemetry.io/collector/extension/auth v0.96.0 go.opentelemetry.io/collector/featuregate v1.3.0 go.opentelemetry.io/collector/otelcol v0.96.0 - go.opentelemetry.io/collector/pdata v1.3.0 + go.opentelemetry.io/collector/pdata v1.12.0 go.opentelemetry.io/collector/processor v0.96.0 go.opentelemetry.io/collector/processor/batchprocessor v0.96.0 go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.96.0 go.opentelemetry.io/collector/receiver v0.96.0 go.opentelemetry.io/collector/receiver/otlpreceiver v0.96.0 - go.opentelemetry.io/collector/semconv v0.96.0 + go.opentelemetry.io/collector/semconv v0.105.0 go.opentelemetry.io/collector/service v0.96.0 go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0 - go.opentelemetry.io/otel v1.24.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 + go.opentelemetry.io/otel v1.28.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 go.opentelemetry.io/otel/exporters/prometheus v0.46.0 - go.opentelemetry.io/otel/metric v1.24.0 - go.opentelemetry.io/otel/sdk v1.24.0 - go.opentelemetry.io/otel/sdk/metric v1.24.0 - go.opentelemetry.io/otel/trace v1.24.0 - go.opentelemetry.io/proto/otlp v1.1.0 + go.opentelemetry.io/otel/metric v1.28.0 + go.opentelemetry.io/otel/sdk v1.28.0 + go.opentelemetry.io/otel/sdk/metric v1.27.0 + go.opentelemetry.io/otel/trace v1.28.0 + go.opentelemetry.io/proto/otlp v1.3.1 go.uber.org/atomic v1.11.0 go.uber.org/goleak v1.3.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.24.0 - golang.org/x/exp v0.0.0-20240119083558-1b970713d09a - golang.org/x/net v0.26.0 + golang.org/x/crypto v0.25.0 + golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 + golang.org/x/net v0.27.0 golang.org/x/oauth2 v0.21.0 - golang.org/x/sys v0.21.0 + golang.org/x/sys v0.22.0 golang.org/x/text v0.16.0 golang.org/x/time v0.5.0 - google.golang.org/api v0.169.0 + google.golang.org/api v0.188.0 google.golang.org/grpc v1.66.0 - google.golang.org/protobuf v1.34.1 + google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools v2.2.0+incompatible - k8s.io/api v0.29.2 + k8s.io/api v0.29.3 k8s.io/apiextensions-apiserver v0.29.0 - k8s.io/client-go v0.29.2 + k8s.io/client-go v0.29.3 k8s.io/component-base v0.29.0 - k8s.io/klog/v2 v2.110.1 + k8s.io/klog/v2 v2.130.1 k8s.io/utils v0.0.0-20240102154912-e7106e64919e sigs.k8s.io/controller-runtime v0.17.2 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go v0.115.0 // indirect + cloud.google.com/go/compute/metadata v0.4.0 // indirect + cloud.google.com/go/iam v1.1.10 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/AlekSi/pointer v1.1.0 // indirect github.com/Azure/azure-sdk-for-go v66.0.0+incompatible // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.10.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 // indirect @@ -303,13 +303,13 @@ require ( github.com/boynux/squid-exporter v1.10.5-0.20230618153315-c1fae094e18e github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b // indirect github.com/cenkalti/backoff/v3 v3.0.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b // indirect - github.com/containerd/ttrpc v1.2.2 // indirect + github.com/containerd/ttrpc v1.2.4 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect @@ -320,7 +320,7 @@ require ( github.com/dennwc/varint v1.0.0 // indirect github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/digitalocean/godo v1.104.1 // indirect + github.com/digitalocean/godo v1.118.0 // indirect github.com/docker/cli v24.0.0+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/go-units v0.5.0 // indirect @@ -351,18 +351,18 @@ require ( github.com/go-kit/kit v0.13.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-openapi/analysis v0.21.4 // indirect - github.com/go-openapi/errors v0.20.4 // indirect - github.com/go-openapi/jsonpointer v0.20.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/loads v0.21.2 // indirect - github.com/go-openapi/runtime v0.26.0 // indirect - github.com/go-openapi/spec v0.20.9 // indirect - github.com/go-openapi/strfmt v0.21.7 // indirect - github.com/go-openapi/swag v0.22.4 // indirect - github.com/go-openapi/validate v0.22.1 // indirect + github.com/go-openapi/analysis v0.22.2 // indirect + github.com/go-openapi/errors v0.22.0 // indirect + github.com/go-openapi/jsonpointer v0.20.2 // indirect + github.com/go-openapi/jsonreference v0.20.4 // indirect + github.com/go-openapi/loads v0.21.5 // indirect + github.com/go-openapi/runtime v0.27.1 // indirect + github.com/go-openapi/spec v0.20.14 // indirect + github.com/go-openapi/strfmt v0.23.0 // indirect + github.com/go-openapi/swag v0.22.9 // indirect + github.com/go-openapi/validate v0.23.0 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect - github.com/go-resty/resty/v2 v2.7.0 // indirect + github.com/go-resty/resty/v2 v2.13.1 // indirect github.com/go-zookeeper/zk v1.0.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/goccy/go-json v0.10.2 // indirect @@ -382,14 +382,14 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect - github.com/gophercloud/gophercloud v1.7.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.5 // indirect + github.com/gophercloud/gophercloud v1.13.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/gosnmp/gosnmp v1.37.0 // indirect github.com/grafana/gomemcache v0.0.0-20231204155601-7de47a8c3cb0 // indirect - github.com/grafana/loki/pkg/push v0.0.0-20231212100434-384e5c2dc872 // k180 branch + github.com/grafana/loki/pkg/push v0.0.0-20241127144924-8a36637f2186 // k195 branch github.com/grobie/gomemcache v0.0.0-20230213081705-239240bbc445 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/cronexpr v1.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -402,12 +402,12 @@ require ( github.com/hashicorp/go-secure-stdlib/awsutil v0.1.6 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6 // indirect github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect - github.com/hashicorp/go-sockaddr v1.0.2 // indirect + github.com/hashicorp/go-sockaddr v1.0.6 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/mdns v1.0.4 // indirect github.com/hashicorp/memberlist v0.5.0 // indirect - github.com/hashicorp/nomad/api v0.0.0-20230721134942-515895c7690c // indirect + github.com/hashicorp/nomad/api v0.0.0-20240717122358-3d93bd3778f3 // indirect github.com/hashicorp/serf v0.10.1 // indirect github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443 // indirect github.com/hodgesds/perf-utils v0.7.0 // indirect @@ -418,7 +418,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/infinityworks/go-common v0.0.0-20170820165359-7f20a140fd37 // indirect github.com/influxdata/telegraf v1.16.3 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.1.9 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.1.11 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgconn v1.14.3 // indirect github.com/jackc/pgio v1.0.0 // indirect @@ -448,7 +448,7 @@ require ( github.com/krallistic/kazoo-go v0.0.0-20170526135507-a15279744f4e // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165 // indirect - github.com/linode/linodego v1.23.0 // indirect + github.com/linode/linodego v1.37.0 // indirect github.com/lufia/iostat v1.2.1 // indirect github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -492,13 +492,13 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.96.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.96.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc5 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect github.com/opencontainers/runc v1.1.14 // indirect github.com/opencontainers/runtime-spec v1.1.0 // indirect github.com/opencontainers/selinux v1.11.0 // indirect github.com/openzipkin/zipkin-go v0.4.2 // indirect github.com/oschwald/maxminddb-golang v1.11.0 - github.com/ovh/go-ovh v1.4.3 // indirect + github.com/ovh/go-ovh v1.6.0 // indirect github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect @@ -506,7 +506,7 @@ require ( github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect github.com/prometheus-community/go-runit v0.1.0 // indirect - github.com/prometheus/alertmanager v0.26.0 // indirect + github.com/prometheus/alertmanager v0.27.0 // indirect github.com/prometheus/common/sigv4 v0.1.0 github.com/prometheus/exporter-toolkit v0.11.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect @@ -517,7 +517,7 @@ require ( github.com/safchain/ethtool v0.3.0 // indirect github.com/samber/lo v1.38.1 // indirect github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.21 + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 // indirect github.com/sergi/go-diff v1.2.0 // indirect @@ -564,23 +564,23 @@ require ( go.etcd.io/etcd/api/v3 v3.5.10 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect go.etcd.io/etcd/client/v3 v3.5.10 // indirect - go.mongodb.org/mongo-driver v1.12.0 // indirect + go.mongodb.org/mongo-driver v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/config/internal v0.96.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect go.opentelemetry.io/otel/bridge/opencensus v1.24.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect - golang.org/x/mod v0.17.0 // indirect + golang.org/x/mod v0.19.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d + golang.org/x/term v0.22.0 // indirect + golang.org/x/tools v0.23.0 golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect gonum.org/v1/gonum v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect + google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/fsnotify/fsnotify.v1 v1.4.7 // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -588,12 +588,12 @@ require ( gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect howett.net/plist v1.0.0 // indirect - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect ) -require github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab // indirect +require github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465 // indirect require ( connectrpc.com/connect v1.14.0 @@ -616,13 +616,16 @@ require ( go.opentelemetry.io/collector/exporter/debugexporter v0.96.0 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0 golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91 - k8s.io/apimachinery v0.29.2 + k8s.io/apimachinery v0.29.3 ) require ( + cloud.google.com/go/auth v0.7.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 v4.2.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2 v2.2.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/Code-Hex/go-generics-cache v1.5.1 // indirect github.com/DataDog/sketches-go v1.4.4 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.21.0 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect @@ -638,25 +641,27 @@ require ( github.com/aws/aws-sdk-go-v2/service/shield v1.24.0 // indirect github.com/aws/aws-sdk-go-v2/service/storagegateway v1.26.0 // indirect github.com/axiomhq/hyperloglog v0.0.0-20240124082744-24bca3a5b39b // indirect + github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/channelmeter/iso8601duration v0.0.0-20150204201828-8da3af7a2a61 // indirect github.com/cloudflare/circl v1.3.7 // indirect - github.com/containerd/cgroups/v3 v3.0.2 // indirect + github.com/containerd/cgroups/v3 v3.0.3 // indirect github.com/containerd/console v1.0.3 // indirect - github.com/containerd/containerd v1.7.11 // indirect github.com/containerd/continuity v0.4.2 // indirect github.com/containerd/errdefs v0.1.0 // indirect github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v0.2.1 // indirect github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect github.com/distribution/reference v0.6.0 // indirect github.com/drone/envsubst v1.0.3 // indirect + github.com/efficientgo/core v1.0.0-rc.2 // indirect github.com/expr-lang/expr v1.16.1 // indirect github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/grafana/jfr-parser v0.8.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.4.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.10.2 // indirect github.com/influxdata/tdigest v0.0.2-0.20210216194612-fc98d27c9e8b // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/knadh/koanf/v2 v2.1.0 // indirect @@ -665,7 +670,9 @@ require ( github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/sys/user v0.3.0 // indirect + github.com/moby/sys/userns v0.1.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.96.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.96.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.96.0 // indirect @@ -696,8 +703,8 @@ require ( go.opentelemetry.io/contrib/config v0.4.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.24.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 // indirect ) @@ -722,14 +729,9 @@ replace ( k8s.io/klog/v2 => github.com/simonpasquier/klog-gokit/v3 v3.4.0 ) -// TODO(marctc): remove replace directive once: -// -// * There is a release of Prometheus which contains -// prometheus/prometheus#13002 -// and prometheus/prometheus#13497 -// We use the last v1-related tag as the replace statement does not work for v2 -// tags without the v2 suffix to the module root. -replace github.com/prometheus/prometheus => github.com/grafana/prometheus v1.8.2-0.20240130142130-51b39f24d406 // cmp_header_order branch +// The fork of Prometheus contains changes which allow Scrape Managers and +// Discovery Managers in static mode to share one set of debug metric series. +replace github.com/prometheus/prometheus => github.com/grafana/prometheus v1.8.2-0.20240924115823-fb33272bfcbe replace gopkg.in/yaml.v2 => github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc @@ -752,7 +754,7 @@ replace ( // TODO(tpaschalis) this is to remove global instantiation of plugins // and allow non-singleton components. // https://github.com/grafana/cadvisor/tree/grafana-v0.47-noglobals - github.com/google/cadvisor => github.com/grafana/cadvisor v0.0.0-20231110094609-5f7917925dea + github.com/google/cadvisor => github.com/grafana/cadvisor v0.0.0-20240729082359-1f04a91701e2 github.com/prometheus-community/postgres_exporter => github.com/grafana/postgres_exporter v0.15.1-0.20240417113938-9358270470dd @@ -795,3 +797,9 @@ replace github.com/github/smimesign => github.com/grafana/smimesign v0.2.1-0.202 // Replacing for an internal for with a bugfix for delta histograms, https://github.com/grafana/stackdriver_exporter/pull/1 // Moving back to upstream is being tracked in an internal issue replace github.com/prometheus-community/stackdriver_exporter => github.com/grafana/stackdriver_exporter v0.0.0-20240228143257-3a2c9acef5a2 + +replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver => github.com/grafana/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.0.0-20240924154508-d2a5520a0db0 + +// Our fork of node_exporter doesn't yet have this change: +// https://github.com/prometheus/node_exporter/pull/3059 +replace github.com/prometheus/procfs => github.com/prometheus/procfs v0.12.0 diff --git a/go.sum b/go.sum index 97926676a861..5540a66b6b1a 100644 --- a/go.sum +++ b/go.sum @@ -26,28 +26,34 @@ cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aD cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= +cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= +cloud.google.com/go/auth v0.7.0 h1:kf/x9B3WTbBUHkC+1VS8wwwli9TzhSt0vSTVBmMR8Ts= +cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.4.0 h1:vHzJCWaM4g8XIcm8kopr3XmDA4Gy/lblD3EhhSux05c= +cloud.google.com/go/compute/metadata v0.4.0/go.mod h1:SIQh1Kkb4ZJ8zJ874fqVkslA29PRXuleyj6vOzlbK7M= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/kms v1.15.7 h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM= -cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= +cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI= +cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps= +cloud.google.com/go/kms v1.18.2 h1:EGgD0B9k9tOOkbPhYW1PHo2W0teamAUYMOUIcDRMfPk= +cloud.google.com/go/kms v1.18.2/go.mod h1:YFz1LYrnGsXARuRePL729oINmN5J/5e7nYijgvfiIeY= +cloud.google.com/go/longrunning v0.5.9 h1:haH9pAuXdPAMqHvzX0zlWQigXT7B0+CL4/2nXXdBo5k= +cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.36.1 h1:dfEPuGCHGbWUhaMCTHUFjfroILEkx55iUmKBZTP5f+Y= -cloud.google.com/go/pubsub v1.36.1/go.mod h1:iYjCa9EzWOoBiTdd4ps7QoMtMln5NwaZQpK1hbRfBDE= +cloud.google.com/go/pubsub v1.40.0 h1:0LdP+zj5XaPAGtWr2V6r88VXJlmtaB/+fde1q3TU8M0= +cloud.google.com/go/pubsub v1.40.0/go.mod h1:BVJI4sI2FyXp36KFKvFwcfDRDfR8MiLT8mMhmIhdAeA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -75,24 +81,24 @@ github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9a github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v36.2.0+incompatible h1:09cv2WoH0g6jl6m2iT+R9qcIPZKhXEL0sbmLhxP895s= github.com/Azure/azure-sdk-for-go v36.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 v4.2.1 h1:UPeCRD+XY7QlaGQte2EVI2iOcWvUYA2XY8w5T/8v0NQ= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 v4.2.1/go.mod h1:oGV6NlB0cvi1ZbYRR2UN44QHxWFyGk+iylgD0qaMXjA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +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/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 v1.1.2 h1:mLY+pNLjCUeKhgnAJWAKhEUQM+RJQo2H1fuGSw1Ky1E= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2/go.mod h1:FbdwsQ2EzwvXxOPcMFYO8ogEc9uMMIj3YkmCdXdAFmk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0/go.mod h1:mLfWfj8v3jfWKsL9G4eoBoXVcsqcIUTapmdKy7uGOp0= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.10.2 h1:T3P5KJpcgN0m39dhaNM+JjSqF3Z5VqUlKHlth5FgN+8= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.10.2/go.mod h1:yA8WUvh3K/SABQEtFHg2Bx5D+414FyFqpT5Fu58P3ao= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.1.0 h1:QM6sE5k2ZT/vI5BEe0r7mqjsUSnhVBFbOsVkEuaEfiA= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.1.0/go.mod h1:243D9iHbcQXoFUtgHJwL7gl2zx1aDuDMjvBZVGr2uW0= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2 v2.2.1 h1:bWh0Z2rOEDfB/ywv/l0iHN1JgyazE6kW/aIA89+CEK0= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2 v2.2.1/go.mod h1:Bzf34hhAE9NSxailk8xVeLEZbUjOXcC+GnU1mMKdhLw= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 h1:bXwSugBiSbgtz7rOtbfGf+woewp4f06orW9OP5BjHLA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0/go.mod h1:Y/HgrePTmGy9HjdSGTqZNa+apUpTVIEVKXJyARP2lrk= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.2 h1:f9lam+D19V0TDn17+aFhrVhWPpfsF5zaGHeqDGJZAVc= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.2/go.mod h1:29c9+gYpdWhyC4TPANZBPlgoWllMDhguL2AIByPYQtk= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU= @@ -169,6 +175,8 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +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/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= @@ -261,8 +269,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alecthomas/units v0.0.0-20240626203959-61d1e3462e30 h1:t3eaIm0rUkzbrIewtiFmMK5RXHej2XnoXNhxVsAYUfg= +github.com/alecthomas/units v0.0.0-20240626203959-61d1e3462e30/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis v2.5.0+incompatible h1:yBHoLpsyjupjz3NL3MhKMVkR41j82Yjf3KFv7ApYzUI= @@ -295,7 +303,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20180319081651-7d2e70ef918f/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= 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/avvmoto/buf-readerat v0.0.0-20171115124131-a17c8cb89270 h1:JIxGEMs4E5Zb6R7z2C5IgecI0mkqS97WAEF31wUbYTM= @@ -306,8 +313,8 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.34.34/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.50.27 h1:96ifhrSuja+AzdP3W/T2337igqVQ2FcSIJYkk+0rCeA= -github.com/aws/aws-sdk-go v1.50.27/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go v1.54.19 h1:tyWV+07jagrNiCcGRzRhdtVjQs7Vy41NwsuOcl0IbVI= +github.com/aws/aws-sdk-go v1.54.19/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.25.2 h1:/uiG1avJRgLGiQM9X3qJM8+Qa6KRGK5rRPuXE0HUM+w= @@ -383,6 +390,8 @@ github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0 h1:0NmehRCgyk5r github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0/go.mod h1:6L7zgvqo0idzI7IO8de6ZC051AfXb5ipkIJ7bIA2tGA= github.com/basgys/goxml2json v1.1.0 h1:4ln5i4rseYfXNd86lGEB+Vi652IsIXIvggKM/BhUKVw= github.com/basgys/goxml2json v1.1.0/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw= +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/beevik/ntp v1.3.0 h1:/w5VhpW5BGKS37vFm1p9oVk/t4HnnkKZAZIubHM6F7Q= github.com/beevik/ntp v1.3.0/go.mod h1:vD6h1um4kzXpqmLTuu0cCLcC+NfvC0IC+ltmEDA8E78= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= @@ -420,8 +429,8 @@ github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QH github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3eG1c= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/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/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= @@ -466,14 +475,12 @@ github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKkymb9L0= -github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= +github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= +github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.7.11 h1:lfGKw3eU35sjV0aG2eYZTiwFEY1pCzxdzicHP3SZILw= -github.com/containerd/containerd v1.7.11/go.mod h1:5UluHxHTX2rdvYuZ5OJTC5m/KJNs0Zs9wVoJm9zf5ZE= github.com/containerd/continuity v0.0.0-20181203112020-004b46473808/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= @@ -482,8 +489,10 @@ github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5Z github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= -github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= +github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= +github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/containerd/ttrpc v1.2.4 h1:eQCQK4h9dxDmpOb9QOOMh2NHTfzroH1IkmHiKZi05Oo= +github.com/containerd/ttrpc v1.2.4/go.mod h1:ojvb8SJBSch0XkqNO0L0YX/5NxR3UnVk2LzFKBK0upc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/coredns/coredns v1.1.2/go.mod h1:zASH/MVDgR6XZTbxvOnsZfffS+31vg6Ackf/wo1+AM0= @@ -515,6 +524,8 @@ github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= +github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= github.com/dannykopping/go-kit-log v0.2.2-0.20221002180827-5591c1641b6b h1:G8g9mAKEj9O3RsU6Hd/ow6lIcHarlcUl5omV6sFKEOU= @@ -544,8 +555,8 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/digitalocean/godo v1.1.1/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= github.com/digitalocean/godo v1.10.0/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= -github.com/digitalocean/godo v1.104.1 h1:SZNxjAsskM/su0YW9P8Wx3gU0W1Z13b6tZlYNpl5BnA= -github.com/digitalocean/godo v1.104.1/go.mod h1:VAI/L5YDzMuPRU01lEEUSQ/sp5Z//1HnnFv/RBTEdbg= +github.com/digitalocean/godo v1.118.0 h1:lkzGFQmACrVCp7UqH1sAi4JK/PWwlc5aaxubgorKmC4= +github.com/digitalocean/godo v1.118.0/go.mod h1:Vk0vpCot2HOAJwc5WE8wljZGtJ3ZtWIc8MQ8rF38sdo= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= @@ -561,8 +572,8 @@ github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m3 github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v17.12.0-ce-rc1.0.20200916142827-bd33bbf0497b+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= -github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI= +github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= @@ -598,6 +609,8 @@ github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7j github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/efficientgo/core v1.0.0-rc.2 h1:7j62qHLnrZqO3V3UA0AqOGd5d5aXV3AX6m/NZBHp78I= +github.com/efficientgo/core v1.0.0-rc.2/go.mod h1:FfGdkzWarkuzOlY04VY+bGfb1lWrjaL6x/GLcQ4vJps= github.com/efficientgo/tools/core v0.0.0-20220817170617-6c25e3b627dd h1:svR6KxSP1xiPw10RN4Pd7g6BAVkEcNN628PAqZH31mM= github.com/efficientgo/tools/core v0.0.0-20220817170617-6c25e3b627dd/go.mod h1:OmVcnJopJL8d3X3sSXTiypGoUSgFq1aDGmlrdi9dn/M= github.com/elastic/go-sysinfo v1.8.1 h1:4Yhj+HdV6WjbCRgGdZpPJ8lZQlXZLKDAeIkmQ/VRvi4= @@ -721,8 +734,9 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE 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.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +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/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= @@ -731,60 +745,43 @@ github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dT github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= -github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= -github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= -github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M= -github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= +github.com/go-openapi/analysis v0.22.2 h1:ZBmNoP2h5omLKr/srIC9bfqrUGzT6g6gNv03HE9Vpj0= +github.com/go-openapi/analysis v0.22.2/go.mod h1:pDF4UbZsQTo/oNuRfAWWd4dAh4yuYf//LYorPTjrpvo= +github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= +github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= -github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= +github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= +github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= -github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro= -github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= -github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc= -github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5WyE+EV88plZrQ= +github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= +github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= +github.com/go-openapi/loads v0.21.5 h1:jDzF4dSoHw6ZFADCGltDb2lE4F6De7aWSpe+IcsRzT0= +github.com/go-openapi/loads v0.21.5/go.mod h1:PxTsnFBoBe+z89riT+wYt3prmSBP6GDAQh2l9H1Flz8= +github.com/go-openapi/runtime v0.27.1 h1:ae53yaOoh+fx/X5Eaq8cRmavHgDma65XPZuvBqvJYto= +github.com/go-openapi/runtime v0.27.1/go.mod h1:fijeJEiEclyS8BRurYE1DE5TLb9/KZl6eAdbzjsrlLU= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= -github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= -github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= -github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= -github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= -github.com/go-openapi/strfmt v0.21.7 h1:rspiXgNWgeUzhjo1YU01do6qsahtJNByjLVbPLNHb8k= -github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= +github.com/go-openapi/spec v0.20.14 h1:7CBlRnw+mtjFGlPDRZmAMnq35cRzI91xj03HVyUi/Do= +github.com/go-openapi/spec v0.20.14/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw= +github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= +github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= -github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE= +github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE= +github.com/go-openapi/validate v0.23.0 h1:2l7PJLzCis4YUGEoW6eoQw3WhyM65WSIcjX6SQnlfDw= +github.com/go-openapi/validate v0.23.0/go.mod h1:EeiAZ5bmpSIOJV1WLfyYF9qp/B1ZgSaEpHTJHtN5cbE= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= -github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= -github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g= +github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v0.0.0-20180618115901-749ddf1598b4/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -804,30 +801,6 @@ github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsM github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.3 h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg= github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/goburrow/modbus v0.1.0/go.mod h1:Kx552D5rLIS8E7TyUwQ/UdHEqvX5T8tyiGBTlzMcZBg= github.com/goburrow/serial v0.1.0/go.mod h1:sAiqG0nRVswsm1C97xsttiYCzSLBmUZ/VSlVLZJ8haA= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -972,8 +945,8 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 h1:y3N7Bm7Y9/CtpiVkw/ZWj6lSlDF3F74SfKwfTCer72Q= -github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/pprof v0.0.0-20240711041743-f6c9dda6c6da h1:xRmpO92tb8y+Z85iUOMOicpCfaYcv7o3Cg3wKrIpg8g= +github.com/google/pprof v0.0.0-20240711041743-f6c9dda6c6da/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/renameio/v2 v2.0.0 h1:UifI23ZTGY8Tt29JbYFiuyIU3eX+RNFtUwefq9qAhxg= github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4= @@ -992,15 +965,15 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksP github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= +github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gopcua/opcua v0.1.12/go.mod h1:a6QH4F9XeODklCmWuvaOdL8v9H0d73CEKUHWVZLQyE8= github.com/gophercloud/gophercloud v0.0.0-20180828235145-f29afc2cceca/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= -github.com/gophercloud/gophercloud v1.7.0 h1:fyJGKh0LBvIZKLvBWvQdIgkaV5yTM3Jh9EYUh+UNCAs= -github.com/gophercloud/gophercloud v1.7.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= +github.com/gophercloud/gophercloud v1.13.0 h1:8iY9d1DAbzMW6Vok1AxbbK5ZaUjzMp0tdyt4fX9IeJ0= +github.com/gophercloud/gophercloud v1.13.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= @@ -1023,8 +996,8 @@ github.com/gosnmp/gosnmp v1.37.0/go.mod h1:GDH9vNqpsD7f2HvZhKs5dlqSEcAS6s6Qp099o github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grafana/agent-remote-config v0.0.2 h1:s3FKgVzfY5Ij+xG0wVKgVvtDrh/Bz0ZvB3D5MM7LJxU= github.com/grafana/agent-remote-config v0.0.2/go.mod h1:amyG3pVNXKcMo+kNN46yhnAXAz/m/9Ew9MRf53n7XBg= -github.com/grafana/cadvisor v0.0.0-20231110094609-5f7917925dea h1:Q5f5/nJJ0SbusZjA6F6XkJuHDbl2/PqdTGw6wHsuccA= -github.com/grafana/cadvisor v0.0.0-20231110094609-5f7917925dea/go.mod h1:XjiOCFjmxXIWwauV5p39Mr2Yxlpyk72uKQH1UZvd4fQ= +github.com/grafana/cadvisor v0.0.0-20240729082359-1f04a91701e2 h1:ju6EcY2aEobeBg185ETtFCKj5WzaQ48qfkbsSRRQrF4= +github.com/grafana/cadvisor v0.0.0-20240729082359-1f04a91701e2/go.mod h1:8sLW/G7rcFe1CKMaA4pYT4mX3P1xQVGqM6luzEzx/2g= github.com/grafana/ckit v0.0.0-20230906125525-c046c99a5c04 h1:tG8Qxq4dN1WqakMmsPaxaH4+OQhYg5HVsarw5acLBX8= github.com/grafana/ckit v0.0.0-20230906125525-c046c99a5c04/go.mod h1:HOnDIbkxfvVlDM5FBujt0uawGLfdpdTeqE7fIwfBmQk= github.com/grafana/cloudflare-go v0.0.0-20230110200409-c627cf6792f2 h1:qhugDMdQ4Vp68H0tp/0iN17DM2ehRo1rLEdOFe/gB8I= @@ -1044,14 +1017,16 @@ github.com/grafana/jsonparser v0.0.0-20240209175146-098958973a2d h1:YwbJJ/PrVWVd github.com/grafana/jsonparser v0.0.0-20240209175146-098958973a2d/go.mod h1:796sq+UcONnSlzA3RtlBZ+b/hrerkZXiEmO8oMjyRwY= github.com/grafana/kafka_exporter v0.0.0-20240409084445-5e3488ad9f9a h1:jqM4NNdx8LSquKo8bPx+XWn91S2b+sgNvEcFfSJQtHY= github.com/grafana/kafka_exporter v0.0.0-20240409084445-5e3488ad9f9a/go.mod h1:ZXGGyeTUMenf/H1CDBK9lv3azjswfa0nVzLoQAYmnDc= -github.com/grafana/loki v1.6.2-0.20240510183741-cef4c2826b4b h1:x5JsSnExxRl9kTMNqHebMCv0fn+V1+T16z7Tgz6xYf4= -github.com/grafana/loki v1.6.2-0.20240510183741-cef4c2826b4b/go.mod h1:j2XCl3SmslPf+3Vs7uyoaJE/QkmUlL9JzTBTShSOSiU= -github.com/grafana/loki/pkg/push v0.0.0-20231212100434-384e5c2dc872 h1:6kPX7bngjBgUlHqADwZ6249UtzMaoQW5n0H8bOtnYeM= -github.com/grafana/loki/pkg/push v0.0.0-20231212100434-384e5c2dc872/go.mod h1:f3JSoxBTPXX5ec4FxxeC19nTBSxoTz+cBgS3cYLMcr0= +github.com/grafana/loki v1.6.2-0.20241127144924-8a36637f2186 h1:8gnokOnAwWgH0wd9un+lm3zxhWLWKRR3unqxODLCyqE= +github.com/grafana/loki v1.6.2-0.20241127144924-8a36637f2186/go.mod h1:34WX3dw/xoaRBsizQaYQdhM77FMjuzzu4XTQSyMJXhI= +github.com/grafana/loki/pkg/push v0.0.0-20241127144924-8a36637f2186 h1:XPPttJOVj65g864LBCozwS2oeIYETfDDZo/JIKk8iGc= +github.com/grafana/loki/pkg/push v0.0.0-20241127144924-8a36637f2186/go.mod h1:b0fwVw1GvQyuAoxHa/cywhhl2pn5JYM6zHGex/tshd8= github.com/grafana/mysqld_exporter v0.12.2-0.20231005125903-364b9c41e595 h1:I9sRknI5ajd8whPOX0nBDXy5B6xUfhItClMy+6R4oqE= github.com/grafana/mysqld_exporter v0.12.2-0.20231005125903-364b9c41e595/go.mod h1:U8ifHC5pT2WuVTO7ki4KZmWLjfEKfktQiU3bh0J8scw= github.com/grafana/node_exporter v0.18.1-grafana-r01.0.20231004161416-702318429731 h1:vyyIYY2sLpmgFIckJ1vSO/oYkvB0thDF6UiFYp5PThM= github.com/grafana/node_exporter v0.18.1-grafana-r01.0.20231004161416-702318429731/go.mod h1:vOZxEzxm0nZmuNqjtIfvtmvdRtJik9POmcN5mQVLf5E= +github.com/grafana/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.0.0-20240924154508-d2a5520a0db0 h1:uqjPAgciVQ0rLXR+IB3Bb0qSVkjsCN4ZZEVrke3PNX8= +github.com/grafana/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.0.0-20240924154508-d2a5520a0db0/go.mod h1:MK7h397B1pXy/w0HRh2OJN5tHtbttu/J3/dsnvm+8O4= github.com/grafana/opentelemetry-collector/config/configgrpc v0.0.0-20240606144032-13b77f7c5603 h1:F3jPOSv2BEO9kuCmlC02pyykcUPkDvgEfWC2pbcWq9M= github.com/grafana/opentelemetry-collector/config/configgrpc v0.0.0-20240606144032-13b77f7c5603/go.mod h1:uUxDCwvWvyf331boTH8/gZhUXXST2r1ps5+ZAvxZl4o= github.com/grafana/opentelemetry-collector/config/confighttp v0.0.0-20240606144032-13b77f7c5603 h1:f/rfuBzUEi7zV/bgazSeBH+I4z7a5JoeuhrZEl6ftic= @@ -1062,16 +1037,16 @@ github.com/grafana/opentelemetry-collector/service v0.0.0-20240606144032-13b77f7 github.com/grafana/opentelemetry-collector/service v0.0.0-20240606144032-13b77f7c5603/go.mod h1:9El7PPhnV+2xPXLlyileLaUa5mOE+vw6sswmcZBaUlc= github.com/grafana/postgres_exporter v0.15.1-0.20240417113938-9358270470dd h1:vNHdecaOmYgSHMEQRgyzWacV++N38Jp8qLZg0RCsfFo= github.com/grafana/postgres_exporter v0.15.1-0.20240417113938-9358270470dd/go.mod h1:kR16GJ0ZwWVQ2osW3pgtDJU1a/GXpufrwio0kLG14cg= -github.com/grafana/prometheus v1.8.2-0.20240130142130-51b39f24d406 h1:LVIOYe5j92m10wluP5hgeHqSkOLnZzcPxhYCkdbLXCE= -github.com/grafana/prometheus v1.8.2-0.20240130142130-51b39f24d406/go.mod h1:SRw624aMAxTfryAcP8rOjg4S/sHHaetx2lyJJ2nM83g= +github.com/grafana/prometheus v1.8.2-0.20240924115823-fb33272bfcbe h1:MjgZjTx8XDq4/7X/sBvUK7+Rtn5edvo6RF6sSnR2hjo= +github.com/grafana/prometheus v1.8.2-0.20240924115823-fb33272bfcbe/go.mod h1:RZDkzs+ShMBDkAPQkLEaLBXpjmDcjhNxU2drUVPgKUU= github.com/grafana/pyroscope-go/godeltaprof v0.1.7 h1:C11j63y7gymiW8VugJ9ZW0pWfxTZugdSJyC48olk5KY= github.com/grafana/pyroscope-go/godeltaprof v0.1.7/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= github.com/grafana/pyroscope/api v0.4.0 h1:J86DxoNeLOvtJhB1Cn65JMZkXe682D+RqeoIUiYc/eo= github.com/grafana/pyroscope/api v0.4.0/go.mod h1:MFnZNeUM4RDsDOnbgKW3GWoLSBpLzMMT9nkvhHHo81o= github.com/grafana/pyroscope/ebpf v0.4.6 h1:8A6vddwCF2q8XXrOebFuDczr9xOHCfqPN2QwIkXKxgU= github.com/grafana/pyroscope/ebpf v0.4.6/go.mod h1:0iOWpGm2M6KXiP2nGa4wf02knSSjEtu11vpUOdQT5AY= -github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= -github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grafana/river v0.3.1-0.20240123144725-960753160cd1 h1:mCOKdWkLv8n9X0ORWrPR+W/zLOAa1o6iM+Dfy0ofQUs= github.com/grafana/river v0.3.1-0.20240123144725-960753160cd1/go.mod h1:tAiNX2zt3HUsNyPNUDSvE6AgQ4+kqJvljBI+ACppMtM= github.com/grafana/smimesign v0.2.1-0.20220408144937-2a5adf3481d3 h1:UPkAxuhlAcRmJT3/qd34OMTl+ZU7BLLfOO2+NXBlJpY= @@ -1093,8 +1068,8 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vb github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= @@ -1181,8 +1156,9 @@ github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9 github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.1/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I= +github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -1192,8 +1168,8 @@ github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-version v0.0.0-20170202080759-03c5bf6be031/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -1218,8 +1194,8 @@ github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/net-rpc-msgpackrpc v0.0.0-20151116020338-a14192a58a69/go.mod h1:/z+jUGRBlwVpUZfjute9jWaF6/HuhjuFQuL1YXzVD1Q= -github.com/hashicorp/nomad/api v0.0.0-20230721134942-515895c7690c h1:Nc3Mt2BAnq0/VoLEntF/nipX+K1S7pG+RgwiitSv6v0= -github.com/hashicorp/nomad/api v0.0.0-20230721134942-515895c7690c/go.mod h1:O23qLAZuCx4htdY9zBaO4cJPXgleSFEdq6D/sezGgYE= +github.com/hashicorp/nomad/api v0.0.0-20240717122358-3d93bd3778f3 h1:fgVfQ4AC1avVOnu2cfms8VAiD8lUq3vWI8mTocOXN/w= +github.com/hashicorp/nomad/api v0.0.0-20240717122358-3d93bd3778f3/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= github.com/hashicorp/raft v1.0.1-0.20190409200437-d9fe23f7d472/go.mod h1:DVSAWItjLjTOkVbSpWQ0j0kUADIvDaCtBxIcbNAQLkI= github.com/hashicorp/raft-boltdb v0.0.0-20150201200839-d1e82c1ec3f1/go.mod h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk= github.com/hashicorp/serf v0.8.1/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE= @@ -1255,8 +1231,8 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/heroku/x v0.0.61 h1:yfoAAtnFWSFZj+UlS+RZL/h8QYEp1R4wHVEg0G+Hwh4= github.com/heroku/x v0.0.61/go.mod h1:C7xYbpMdond+s6L5VpniDUSVPRwm3kZum1o7XiD5ZHk= -github.com/hetznercloud/hcloud-go/v2 v2.4.0 h1:MqlAE+w125PLvJRCpAJmEwrIxoVdUdOyuFUhE/Ukbok= -github.com/hetznercloud/hcloud-go/v2 v2.4.0/go.mod h1:l7fA5xsncFBzQTyw29/dw5Yr88yEGKKdc6BHf24ONS0= +github.com/hetznercloud/hcloud-go/v2 v2.10.2 h1:9gyTUPhfNbfbS40Spgij5mV5k37bOZgt8iHKCbfGs5I= +github.com/hetznercloud/hcloud-go/v2 v2.10.2/go.mod h1:xQ+8KhIS62W0D78Dpi57jsufWh844gUw1az5OUvaeq8= 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/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= @@ -1273,8 +1249,8 @@ github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab h1:BA4a7pe6ZTd9F8kXETBoijjFJ/ntaa//1wiH9BZu4zU= -github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= +github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465 h1:KwWnWVWCNtNq/ewIX7HIKnELmEx2nDP42yskD/pi7QE= +github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:hk4LPqXIY/c9XzRbe7dA6qQxaT6Axcbny0L/G5a4owQ= github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:PoK3ejP3LJkGTzKqRlpvCIFas3ncU02v8zzWDW+g0FY= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -1299,8 +1275,8 @@ github.com/influxdata/telegraf v1.16.3 h1:x0qeuSGGMg5y+YqP/5ZHwXZu3bcBrO8AAQOTNl github.com/influxdata/telegraf v1.16.3/go.mod h1:fX/6k7qpIqzVPWyeIamb0wN5hbwc0ANUaTS80lPYFB8= github.com/influxdata/toml v0.0.0-20190415235208-270119a8ce65/go.mod h1:zApaNFpP/bTpQItGZNNUMISDMDAnTXu9UqJ4yT3ocz8= github.com/influxdata/wlog v0.0.0-20160411224016-7c63b0a71ef8/go.mod h1:/2NMgWB1DHM1ti/gqhOlg+LJeBVk6FqR5aVGYY0hlwI= -github.com/ionos-cloud/sdk-go/v6 v6.1.9 h1:Iq3VIXzeEbc8EbButuACgfLMiY5TPVWUPNrF+Vsddo4= -github.com/ionos-cloud/sdk-go/v6 v6.1.9/go.mod h1:EzEgRIDxBELvfoa/uBN0kOQaqovLjUWEB7iW4/Q+t4k= +github.com/ionos-cloud/sdk-go/v6 v6.1.11 h1:J/uRN4UWO3wCyGOeDdMKv8LWRzKu6UIkLEaes38Kzh8= +github.com/ionos-cloud/sdk-go/v6 v6.1.11/go.mod h1:EzEgRIDxBELvfoa/uBN0kOQaqovLjUWEB7iW4/Q+t4k= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -1353,8 +1329,8 @@ github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jaegertracing/jaeger v1.54.0 h1:BfQiFxrE/2Fw+qU24qjSuUGsgJQLwKHi1TXBy6J3qKo= github.com/jaegertracing/jaeger v1.54.0/go.mod h1:wNmtyrAJ/sJAgOvC9BltyKErJY8glTHCvWLTsvhaqkY= github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4= -github.com/jarcoal/httpmock v1.3.0 h1:2RJ8GP0IIaWwcC9Fp2BmVi8Kog3v2Hn7VXM3fTd+nuc= -github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= +github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInww= +github.com/jarcoal/httpmock v1.3.1/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -1420,8 +1396,6 @@ github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E github.com/k0kubun/pp/v3 v3.2.0 h1:h33hNTZ9nVFNP3u2Fsgz8JXiF5JINoZfFq4SvKJwNcs= github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapdz1EwA= github.com/kardianos/service v1.0.0/go.mod h1:8CzDhVuCuugtsHyZoTvsOBuvonN/UDBvl0kH+BUxvbo= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI= github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= @@ -1436,10 +1410,9 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= -github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= @@ -1485,8 +1458,8 @@ github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8Lb github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linode/linodego v1.23.0 h1:s0ReCZtuN9Z1IoUN9w1RLeYO1dMZUGPwOQ/IBFsBHtU= -github.com/linode/linodego v1.23.0/go.mod h1:0U7wj/UQOqBNbKv1FYTXiBUXueR8DY4HvIotwE0ENgg= +github.com/linode/linodego v1.37.0 h1:B/2Spzv9jYXzKA+p+GD8fVCNJ7Wuw6P91ZDD9eCkkso= +github.com/linode/linodego v1.37.0/go.mod h1:L7GXKFD3PoN2xSEtFc04wIXP5WK65O10jYQx0PQISWQ= github.com/lufia/iostat v1.2.1 h1:tnCdZBIglgxD47RyD55kfWQcJMGzO+1QBziSQfesf2k= github.com/lufia/iostat v1.2.1/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= @@ -1503,11 +1476,8 @@ github.com/mailru/easyjson v0.0.0-20180717111219-efc7eb8984d6/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -1563,8 +1533,8 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= 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.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= -github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= +github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs= +github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ= github.com/mikioh/ipaddr v0.0.0-20190404000644-d465c8ab6721/go.mod h1:Ickgr2WtCLZ2MDGd4Gr0geeCH5HybhRJbonOgQpvSxc= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= @@ -1593,7 +1563,6 @@ github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/z github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= @@ -1604,6 +1573,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mna/redisc v1.3.2 h1:sc9C+nj6qmrTFnsXb70xkjAHpXKtjjBuE6v2UcQV0ZE= github.com/mna/redisc v1.3.2/go.mod h1:CplIoaSTDi5h9icnj4FLbRgHoNKCHDNJDVRztWDGeSQ= +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/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= @@ -1614,6 +1585,8 @@ github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5 github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= 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= @@ -1625,7 +1598,6 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU= github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= @@ -1794,8 +1766,6 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.96.0/go.mod h1:SpDMTfNxJhLoh90tzVbFVR6jBznomtSSfv1+mKR1s9I= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.96.0 h1:gK3nBuj0qhtt8HT4MuiW60KfNcnAA1hjdqnwdIbxHaU= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.96.0/go.mod h1:xc2JC4VmYfGsjaH834h0O+nCTHcddAGZkt5fJxQF7LE= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.96.0 h1:SK1GpgAte9WhTSeY6NiO6vHB+BhFF7akPlK7fyMO+ps= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.96.0/go.mod h1:yrd0L+k2JKVpyVXObHpHZXUlxgWX/RlGHz5RLxEUN2Q= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.96.0 h1:C7riRI0ehDu4k6lf/ei8OObT3jGJJ5PbJ7sRO/QSMMQ= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.96.0/go.mod h1:OvyUlG4f37oXFVqOBXi0+KdoQjmjjPuHkASu5DTFjXw= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.96.0 h1:y9QNvhQ0XjJOJid4jNlEliJQI4+AFdEaN6weB9jMWaY= @@ -1806,8 +1776,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= -github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.14 h1:rgSuzbmgz5DUJjeSnw337TxDbRuqjs6iqQck/2weR6w= @@ -1848,8 +1818,8 @@ github.com/oschwald/geoip2-golang v1.9.0 h1:uvD3O6fXAXs+usU+UGExshpdP13GAqp4GBrz github.com/oschwald/geoip2-golang v1.9.0/go.mod h1:BHK6TvDyATVQhKNbQBdrj9eAvuwOMi2zSFXizL3K81Y= github.com/oschwald/maxminddb-golang v1.11.0 h1:aSXMqYR/EPNjGE8epgqwDay+P30hCBZIveY0WZbAWh0= github.com/oschwald/maxminddb-golang v1.11.0/go.mod h1:YmVI+H0zh3ySFR3w+oz8PCfglAFj3PuCmui13+P9zDg= -github.com/ovh/go-ovh v1.4.3 h1:Gs3V823zwTFpzgGLZNI6ILS4rmxZgJwJCz54Er9LwD0= -github.com/ovh/go-ovh v1.4.3/go.mod h1:AkPXVtgwB6xlKblMjRKJJmjRp+ogrE7fz2lVgcQY8SY= +github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= +github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c h1:vwpFWvAO8DeIZfFeqASzZfsxuWPno9ncAebBEP0N3uE= github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c/go.mod h1:otzZQXgoO96RTzDB/Hycg0qZcXZsWJGJRSXbmEIJ+4M= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= @@ -1915,8 +1885,8 @@ github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.66.0 h github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.66.0/go.mod h1:KZHvrby65G+rA4V/vMTUXDV22TI+GgLIrCigYClpjzk= github.com/prometheus-operator/prometheus-operator/pkg/client v0.66.0 h1:gDJAO9dJbRZ3RAQ7MY+tjz1D3o1x7T4hd8Jbi0Xo854= github.com/prometheus-operator/prometheus-operator/pkg/client v0.66.0/go.mod h1:gNFnGtaWQ8SziJCfahdiAUlArtoL1+cm1hAD7l6L14w= -github.com/prometheus/alertmanager v0.26.0 h1:uOMJWfIwJguc3NaM3appWNbbrh6G/OjvaHMk22aBBYc= -github.com/prometheus/alertmanager v0.26.0/go.mod h1:rVcnARltVjavgVaNnmevxK7kOn7IZavyf0KNgHkbEpU= +github.com/prometheus/alertmanager v0.27.0 h1:V6nTa2J5V4s8TG4C4HtrBP/WNSebCCTYGGv4qecA/+I= +github.com/prometheus/alertmanager v0.27.0/go.mod h1:8Ia/R3urPmbzJ8OsdvmZvIprDwvwmYCmUbwBL+jlPOE= github.com/prometheus/blackbox_exporter v0.24.1-0.20230623125439-bd22efa1c900 h1:mb3ShwohzXGV4JUW0XlEGPElmCMTQzEaVnWUzuoGMak= github.com/prometheus/blackbox_exporter v0.24.1-0.20230623125439-bd22efa1c900/go.mod h1:DA04rk1tezjADhTMhq5fi3yOF1/Z0gY/pczP76BnvwQ= github.com/prometheus/client_golang v0.0.0-20180328130430-f504d69affe1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -1932,8 +1902,8 @@ github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -1954,8 +1924,8 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9 github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.31.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/consul_exporter v0.8.0 h1:2z3drFic65WFoHaJRKkmnJRRlBLmmxVqT8L9LO2yxAo= @@ -1966,17 +1936,6 @@ github.com/prometheus/exporter-toolkit v0.11.0 h1:yNTsuZ0aNCNFQ3aFTD2uhPOvr4iD7f github.com/prometheus/exporter-toolkit v0.11.0/go.mod h1:BVnENhnNecpwoTLiABx7mrPB/OLRIgN74qlQbV+FK1Q= github.com/prometheus/memcached_exporter v0.13.0 h1:d246RYODFCXy39XA8S2PBrqp5jLCSvl9b4KsYspDCHk= github.com/prometheus/memcached_exporter v0.13.0/go.mod h1:fp7Wk6v0RFijeP3Syvd1TShBSJoCG5iFfvPdi5dCMEU= -github.com/prometheus/procfs v0.0.0-20180408092902-8b1c2da0d56d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -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.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/snmp_exporter v0.26.0 h1:7THSh/mAIMmHkiVhmsrAwiH1XNGiFelhPCKBe8PXg8U= @@ -2004,8 +1963,6 @@ github.com/rivo/uniseg v0.4.2 h1:YwD0ulJSJytLpiaWua0sBDusfsCZohxjxzVTYjwxfV8= github.com/rivo/uniseg v0.4.2/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= @@ -2037,8 +1994,8 @@ github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCL github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.21 h1:yWfiTPwYxB0l5fGMhl/G+liULugVIHD9AU77iNLrURQ= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.21/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 h1:BkTk4gynLjguayxrYxZoMZjBnAOh7ntQvUkOFmkMqPU= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= @@ -2059,8 +2016,8 @@ github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shoenig/test v0.6.6 h1:Oe8TPH9wAbv++YPNDKJWUnI8Q4PPWCx3UbOfH+FxiMU= -github.com/shoenig/test v0.6.6/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +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/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200105231215-408a2507e114/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= @@ -2079,7 +2036,6 @@ github.com/simonpasquier/klog-gokit/v3 v3.4.0 h1:2eD2INbzUHuGNynPP86BCB8H6Lwfp6w github.com/simonpasquier/klog-gokit/v3 v3.4.0/go.mod h1:RREVB5Cc6yYHsweRfhUyM1ZP+Odb8ehxLfY8jaiqvjg= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -2167,8 +2123,8 @@ github.com/tedsuo/ifrit v0.0.0-20191009134036-9a97d0632f00/go.mod h1:eyZnKCc955u github.com/tencentcloud/tencentcloud-sdk-go v1.0.162 h1:8fDzz4GuVg4skjY2B0nMN7h6uN61EDVkuLyI2+qGHhI= github.com/tencentcloud/tencentcloud-sdk-go v1.0.162/go.mod h1:asUz5BPXxgoPGaRgZaVm1iGcUAuHyYUo1nXqKa83cvI= github.com/tent/http-link-go v0.0.0-20130702225549-ac974c61c2f9/go.mod h1:RHkNRtSLfOK7qBTHaeSX1D6BNpI3qw7NTxsmNr4RvN8= -github.com/testcontainers/testcontainers-go v0.27.0 h1:IeIrJN4twonTDuMuBNQdKZ+K97yd7VrmNGu+lDpYcDk= -github.com/testcontainers/testcontainers-go v0.27.0/go.mod h1:+HgYZcd17GshBUZv9b+jKFJ198heWPQq3KQIp2+N+7U= +github.com/testcontainers/testcontainers-go v0.33.0 h1:zJS9PfXYT5O0ZFXM2xxXfk4J5UMw/kRiISng037Gxdw= +github.com/testcontainers/testcontainers-go v0.33.0/go.mod h1:W80YpTa8D5C3Yy16icheD01UTDu+LmXIA2Keo+jWtT8= github.com/testcontainers/testcontainers-go/modules/k3s v0.0.0-20230615142642-c175df34bd1d h1:KyYCHo9iBoQYw5AzcozD/77uNbFlRjTmMTA7QjSxHOQ= github.com/testcontainers/testcontainers-go/modules/k3s v0.0.0-20230615142642-c175df34bd1d/go.mod h1:Pa91ahCbzRB6d9FBi6UAjurTEm7WmyBVeuklLkwAKKs= github.com/tg123/go-htpasswd v1.2.2 h1:tmNccDsQ+wYsoRfiONzIhDm5OkVHQzN3w4FOBAlN6BY= @@ -2241,12 +2197,8 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= @@ -2267,7 +2219,6 @@ github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtX github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xo/dburl v0.20.0 h1:v601OhM9J4Zh56R270ncM9HRgoxp39tf9+nt5ft9UD0= github.com/xo/dburl v0.20.0/go.mod h1:B7/G9FGungw6ighV8xJNwWYQPMfn3gsi2sn5SE8Bzco= -github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/youmark/pkcs8 v0.0.0-20240424034433-3c2c7870ae76 h1:tBiBTKHnIjovYoLX/TPkcf+OjqqKGQrPtGT3Foz+Pgo= github.com/youmark/pkcs8 v0.0.0-20240424034433-3c2c7870ae76/go.mod h1:SQliXeA7Dhkt//vS29v3zpbEwoa+zb2Cn5xj5uO4K5U= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -2287,8 +2238,8 @@ github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -go.einride.tech/aip v0.66.0 h1:XfV+NQX6L7EOYK11yoHHFtndeaWh3KbD9/cN/6iWEt8= -go.einride.tech/aip v0.66.0/go.mod h1:qAhMsfT7plxBX+Oy7Huol6YUvZ0ZzdUz26yZsQwfl1M= +go.einride.tech/aip v0.67.1 h1:d/4TW92OxXBngkSOwWS2CH5rez869KpKMaN44mdxkFI= +go.einride.tech/aip v0.67.1/go.mod h1:ZGX4/zKw8dcgzdLsrvpOOGxfxI2QSk12SlP7d6c0/XI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= @@ -2302,11 +2253,8 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHy go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao= go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= -go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= -go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= -go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= -go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE= -go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0= +go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= +go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -2374,8 +2322,8 @@ go.opentelemetry.io/collector/extension/zpagesextension v0.96.0 h1:eSjSBqWIN+OiE go.opentelemetry.io/collector/extension/zpagesextension v0.96.0/go.mod h1:wWBmrP4H/gEInjtCiwZHlDj5+MuWI8bLybCSIrNXoNE= go.opentelemetry.io/collector/featuregate v1.3.0 h1:nrFSx+zfjdisjE9oCx25Aep3nJ9RaUjeE1qFL6eovoU= go.opentelemetry.io/collector/featuregate v1.3.0/go.mod h1:mm8+xyQfgDmqhyegZRNIQmoKsNnDTwWKFLsdMoXAb7A= -go.opentelemetry.io/collector/pdata v1.3.0 h1:JRYN7tVHYFwmtQhIYbxWeiKSa2L1nCohyAs8sYqKFZo= -go.opentelemetry.io/collector/pdata v1.3.0/go.mod h1:t7W0Undtes53HODPdSujPLTnfSR5fzT+WpL+RTaaayo= +go.opentelemetry.io/collector/pdata v1.12.0 h1:Xx5VK1p4VO0md8MWm2icwC1MnJ7f8EimKItMWw46BmA= +go.opentelemetry.io/collector/pdata v1.12.0/go.mod h1:MYeB0MmMAxeM0hstCFrCqWLzdyeYySim2dG6pDT6nYI= go.opentelemetry.io/collector/processor v0.96.0 h1:TGo7tLbLJo9tBZ9NNoSlB7xBP5osUXThKxCmg96gSko= go.opentelemetry.io/collector/processor v0.96.0/go.mod h1:fvTTODSFY97D6Fc/iwBOL3outreBvZBlaHT2ciEWNZQ= go.opentelemetry.io/collector/processor/batchprocessor v0.96.0 h1:5SbJUx9q4w05QSl7p1xOEdNLOmmPZDE9SXi0OST1SbI= @@ -2386,51 +2334,51 @@ go.opentelemetry.io/collector/receiver v0.96.0 h1:OrlcuyFCBQpbWNb2klzTdz1ZXMk0ac go.opentelemetry.io/collector/receiver v0.96.0/go.mod h1:fb5Vr2+tAkzB4qE6+lNaMsZwaeE8qZvG3IBdzK5hCRY= go.opentelemetry.io/collector/receiver/otlpreceiver v0.96.0 h1:3tQG3+Bd5Ur/htNHTSHcwS25Cq+hLhC5+mti63x8NsY= go.opentelemetry.io/collector/receiver/otlpreceiver v0.96.0/go.mod h1:LgauKnCOayfutm4Y+WN3AaqK3cM+R7o+v3uXsq/be64= -go.opentelemetry.io/collector/semconv v0.96.0 h1:DrZy8BpzJDnN2zFxXRj6BhfGYxNlqpFHBqyuS9fVHRY= -go.opentelemetry.io/collector/semconv v0.96.0/go.mod h1:zOm/U3pgMIWcvrcnPbR9Xx2HinoXj46ERMK8PUV9wrs= +go.opentelemetry.io/collector/semconv v0.105.0 h1:8p6dZ3JfxFTjbY38d8xlQGB1TQ3nPUvs+D0RERniZ1g= +go.opentelemetry.io/collector/semconv v0.105.0/go.mod h1:yMVUCNoQPZVq/IPfrHrnntZTWsLf5YGZ7qwKulIl5hw= go.opentelemetry.io/contrib/config v0.4.0 h1:Xb+ncYOqseLroMuBesGNRgVQolXcXOhMj7EhGwJCdHs= go.opentelemetry.io/contrib/config v0.4.0/go.mod h1:drNk2xRqLWW4/amk6Uh1S+sDAJTc7bcEEN1GfJzj418= go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0 h1:CaagQrotQLgtDlHU6u9pE/Mf4mAwiLD8wrReIVt06lY= go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0/go.mod h1:LOjFy00/ZMyMYfKFPta6kZe2cDUc1sNo/qtv1pSORWA= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= go.opentelemetry.io/contrib/propagators/b3 v1.24.0 h1:n4xwCdTx3pZqZs2CjS/CUZAs03y3dZcGhC/FepKtEUY= go.opentelemetry.io/contrib/propagators/b3 v1.24.0/go.mod h1:k5wRxKRU2uXx2F8uNJ4TaonuEO/V7/5xoz7kdsDACT8= go.opentelemetry.io/contrib/zpages v0.49.0 h1:Wk217PkNBxcKWnIQpwtbZZE286K4ZY9uajnM5woSeLU= go.opentelemetry.io/contrib/zpages v0.49.0/go.mod h1:6alLi5mmkZWbAtZMRPd1ffIgkTcsU9OTHQF2NbSOhrQ= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= go.opentelemetry.io/otel/bridge/opencensus v1.24.0 h1:Vlhy5ee5k5R0zASpH+9AgHiJH7xnKACI3XopO1tUZfY= go.opentelemetry.io/otel/bridge/opencensus v1.24.0/go.mod h1:jRjVXV/X38jyrnHtvMGN8+9cejZB21JvXAAvooF2s+Q= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0 h1:f2jriWfOdldanBwS9jNBdeOKAQN7b4ugAMaNu1/1k9g= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0/go.mod h1:B+bcQI1yTY+N0vqMpoZbEN7+XU4tNM0DmUiOwebFJWI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0 h1:mM8nKi6/iFQ0iqst80wDHU2ge198Ye/TfN0WBS5U24Y= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0/go.mod h1:0PrIIzDteLSmNyxqcGYRL4mDIo8OTuBAOI/Bn1URxac= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= go.opentelemetry.io/otel/exporters/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ= go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 h1:JYE2HM7pZbOt5Jhk8ndWZTUWYOVift2cHjXVMkPdmdc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0/go.mod h1:yMb/8c6hVsnma0RpsBMNo0fEiQKeclawtgaIaOp2MLY= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 h1:s0PHtIkN+3xrbDOpt2M8OTG92cWqUESvzh2MxiR5xY8= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0/go.mod h1:hZlFbDbRt++MMPCCfSJfmhkGIWnX1h3XjkfxZUjLrIA= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= -go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk/metric v1.27.0 h1:5uGNOlpXi+Hbo/DRoI31BSb1v+OGcpv2NemcCrOL8gI= +go.opentelemetry.io/otel/sdk/metric v1.27.0/go.mod h1:we7jJVrYN2kh3mVBlswtPU22K0SA+769l93J6bsyvqw= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI= -go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20200901195727-6e684ef5eeee/go.mod h1:f0znQkUKRrkk36XxWbGjMqQM8wGv/xHBVE2qc3B5oFU= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -2464,7 +2412,6 @@ golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -2477,7 +2424,6 @@ golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -2496,8 +2442,9 @@ golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58 golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91 h1:Lyizcy9jX02jYR0ceBkL6S+jRys8Uepf7wt1vrz6Ras= golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2513,8 +2460,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= -golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2545,8 +2492,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2604,11 +2551,9 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= @@ -2617,8 +2562,10 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +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.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20170807180024-9a379c6b3e95/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2641,7 +2588,6 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ 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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2651,6 +2597,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2670,11 +2617,9 @@ golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2695,7 +2640,6 @@ golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2737,7 +2681,6 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2771,10 +2714,12 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2785,8 +2730,9 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2805,6 +2751,7 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.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.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2828,14 +2775,10 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -2893,8 +2836,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.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.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2945,8 +2888,8 @@ google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00 google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.188.0 h1:51y8fJ/b1AaaBRJr4yWm96fPcuxSo0JcegXE3DaHQHw= +google.golang.org/api v0.188.0/go.mod h1:VR0d+2SIiWOYG3r/jdm7adPW9hI2aRv9ETOSCQ9Beag= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3016,12 +2959,12 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b h1:dSTjko30weBaMj3eERKc0ZVXW4GudCswM3m+P++ukU0= +google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= +google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY= +google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b h1:04+jVzTs2XBnOZcPsLnmrTGqltqJbZQ1Ey26hjYdQQ0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v0.0.0-20180920234847-8997b5fa0873/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -3075,8 +3018,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -3124,7 +3067,6 @@ gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= @@ -3133,8 +3075,8 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= -gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/netdb v0.0.0-20150201073656-a416d700ae39/go.mod h1:rbNo0ST5hSazCG4rGfpHrwnwvzP1QX62WbhzD+ghGzs= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -3150,19 +3092,19 @@ howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= k8s.io/api v0.0.0-20180806132203-61b11ee65332/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= k8s.io/api v0.0.0-20190325185214-7544f9db76f6/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= -k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= -k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= +k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= +k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= k8s.io/apimachinery v0.0.0-20180821005732-488889b0007f/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= k8s.io/apimachinery v0.0.0-20190223001710-c182ff3b9841/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= k8s.io/apimachinery v0.17.1/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= -k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= -k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= +k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= +k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= -k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= -k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= +k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= +k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s= k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M= @@ -3171,8 +3113,8 @@ k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= diff --git a/internal/component/common/config/types.go b/internal/component/common/config/types.go index 5ed0d2e8ae13..862c7fe36b82 100644 --- a/internal/component/common/config/types.go +++ b/internal/component/common/config/types.go @@ -139,10 +139,10 @@ func (b *BasicAuth) Validate() error { } type ProxyConfig struct { - ProxyURL URL `river:"proxy_url,attr,optional"` - NoProxy string `river:"no_proxy,attr,optional"` - ProxyFromEnvironment bool `river:"proxy_from_environment,attr,optional"` - ProxyConnectHeader Header `river:",squash"` + ProxyURL URL `river:"proxy_url,attr,optional"` + NoProxy string `river:"no_proxy,attr,optional"` + ProxyFromEnvironment bool `river:"proxy_from_environment,attr,optional"` + ProxyConnectHeader ProxyHeader `river:",squash"` } func (p *ProxyConfig) Convert() config.ProxyConfig { @@ -214,15 +214,15 @@ func (u *URL) Convert() config.URL { return config.URL{URL: u.URL} } -type Header struct { +type ProxyHeader struct { Header map[string][]rivertypes.Secret `river:"proxy_connect_header,attr,optional"` } -func (h *Header) Convert() config.Header { +func (h *ProxyHeader) Convert() config.ProxyHeader { if h == nil { return nil } - header := make(config.Header) + header := make(config.ProxyHeader) for name, values := range h.Header { var s []config.Secret if values != nil { diff --git a/internal/component/discovery/aws/ec2.go b/internal/component/discovery/aws/ec2.go index 7f8deb3693ab..88577a251956 100644 --- a/internal/component/discovery/aws/ec2.go +++ b/internal/component/discovery/aws/ec2.go @@ -24,7 +24,7 @@ func init() { Args: EC2Arguments{}, Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return NewEC2(opts, args.(EC2Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(EC2Arguments)) }, }) } @@ -50,7 +50,7 @@ type EC2Arguments struct { HTTPClientConfig config.HTTPClientConfig `river:",squash"` } -func (args EC2Arguments) Convert() *promaws.EC2SDConfig { +func (args EC2Arguments) Convert() discovery.DiscovererConfig { cfg := &promaws.EC2SDConfig{ Endpoint: args.Endpoint, Region: args.Region, @@ -105,11 +105,3 @@ func (args *EC2Arguments) Validate() error { } return nil } - -// New creates a new discovery.ec2 component. -func NewEC2(opts component.Options, args EC2Arguments) (component.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - conf := args.(EC2Arguments).Convert() - return promaws.NewEC2Discovery(conf, opts.Logger), nil - }) -} diff --git a/internal/component/discovery/aws/ec2_test.go b/internal/component/discovery/aws/ec2_test.go index d0239f43cd25..4f6001fd13c0 100644 --- a/internal/component/discovery/aws/ec2_test.go +++ b/internal/component/discovery/aws/ec2_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/grafana/agent/internal/component/common/config" + promaws "github.com/prometheus/prometheus/discovery/aws" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -27,7 +28,9 @@ func TestConvert(t *testing.T) { } // ensure values are set - promArgs := riverArgs.Convert() + converted := riverArgs.Convert() + promArgs, ok := converted.(*promaws.EC2SDConfig) + require.True(t, ok) assert.Equal(t, "us-east-1", promArgs.Region) assert.Equal(t, "http://example:8080", promArgs.HTTPClientConfig.ProxyURL.String()) } diff --git a/internal/component/discovery/aws/lightsail.go b/internal/component/discovery/aws/lightsail.go index fa9c76a6ef12..84143843452f 100644 --- a/internal/component/discovery/aws/lightsail.go +++ b/internal/component/discovery/aws/lightsail.go @@ -24,7 +24,7 @@ func init() { Args: LightsailArguments{}, Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return NewLightsail(opts, args.(LightsailArguments)) + return discovery.NewFromConvertibleConfig(opts, args.(LightsailArguments)) }, }) } @@ -42,7 +42,7 @@ type LightsailArguments struct { HTTPClientConfig config.HTTPClientConfig `river:",squash"` } -func (args LightsailArguments) Convert() *promaws.LightsailSDConfig { +func (args LightsailArguments) Convert() discovery.DiscovererConfig { cfg := &promaws.LightsailSDConfig{ Endpoint: args.Endpoint, Region: args.Region, @@ -87,11 +87,3 @@ func (args *LightsailArguments) Validate() error { } return nil } - -// New creates a new discovery.lightsail component. -func NewLightsail(opts component.Options, args LightsailArguments) (component.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - conf := args.(LightsailArguments).Convert() - return promaws.NewLightsailDiscovery(conf, opts.Logger), nil - }) -} diff --git a/internal/component/discovery/azure/azure.go b/internal/component/discovery/azure/azure.go index 78a8a669e074..e3d17e085247 100644 --- a/internal/component/discovery/azure/azure.go +++ b/internal/component/discovery/azure/azure.go @@ -23,7 +23,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -79,7 +79,7 @@ func (a *Arguments) Validate() error { return a.ProxyConfig.Validate() } -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { var ( authMethod string clientID string @@ -115,11 +115,3 @@ func (a *Arguments) Convert() *prom_discovery.SDConfig { HTTPClientConfig: *httpClientConfig.Convert(), } } - -// New returns a new instance of a discovery.azure component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger), nil - }) -} diff --git a/internal/component/discovery/azure/azure_test.go b/internal/component/discovery/azure/azure_test.go index df28d6765e43..3734228a6be3 100644 --- a/internal/component/discovery/azure/azure_test.go +++ b/internal/component/discovery/azure/azure_test.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/agent/internal/component/common/config" "github.com/grafana/river" "github.com/prometheus/common/model" + promdiscovery "github.com/prometheus/prometheus/discovery/azure" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -130,7 +131,9 @@ func TestConvert(t *testing.T) { }, } - promArgs := riverArgsOAuth.Convert() + args := riverArgsOAuth.Convert() + promArgs, ok := args.(*promdiscovery.SDConfig) + require.True(t, ok) assert.Equal(t, "AzureTestCloud", promArgs.Environment) assert.Equal(t, 8080, promArgs.Port) assert.Equal(t, "subid", promArgs.SubscriptionID) @@ -161,7 +164,9 @@ func TestConvert(t *testing.T) { }, } - promArgs = riverArgsManagedIdentity.Convert() + args = riverArgsManagedIdentity.Convert() + promArgs, ok = args.(*promdiscovery.SDConfig) + require.True(t, ok) assert.Equal(t, "AzureTestCloud", promArgs.Environment) assert.Equal(t, 8080, promArgs.Port) assert.Equal(t, "subid", promArgs.SubscriptionID) diff --git a/internal/component/discovery/consul/consul.go b/internal/component/discovery/consul/consul.go index a7fe7b95ec09..8d03295d3e27 100644 --- a/internal/component/discovery/consul/consul.go +++ b/internal/component/discovery/consul/consul.go @@ -22,7 +22,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -69,7 +69,7 @@ func (args *Arguments) Validate() error { return args.HTTPClientConfig.Validate() } -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { httpClient := &args.HTTPClientConfig return &prom_discovery.SDConfig{ @@ -90,11 +90,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { NodeMeta: args.NodeMeta, } } - -// New returns a new instance of a discovery.consul component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/consulagent/consulagent.go b/internal/component/discovery/consulagent/consulagent.go index 2610fbcc9c96..899c72615007 100644 --- a/internal/component/discovery/consulagent/consulagent.go +++ b/internal/component/discovery/consulagent/consulagent.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -62,7 +62,7 @@ func (args *Arguments) Validate() error { } // Convert converts Arguments into the SDConfig type. -func (args *Arguments) Convert() *SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { return &SDConfig{ RefreshInterval: model.Duration(args.RefreshInterval), Server: args.Server, @@ -77,11 +77,3 @@ func (args *Arguments) Convert() *SDConfig { TLSConfig: *args.TLSConfig.Convert(), } } - -// New returns a new instance of a discovery.consulagent component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/consulagent/consulagent_metrics.go b/internal/component/discovery/consulagent/consulagent_metrics.go new file mode 100644 index 000000000000..fdaa283fe154 --- /dev/null +++ b/internal/component/discovery/consulagent/consulagent_metrics.go @@ -0,0 +1,62 @@ +package consulagent + +import ( + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/prometheus/discovery" +) + +// This code was adapted from the consul service discovery +// package in prometheus: https://github.com/prometheus/prometheus/blob/main/discovery/consul/metrics.go +// which is copyrighted: 2015 The Prometheus Authors +// and licensed under the Apache License, Version 2.0 (the "License"); + +var _ discovery.DiscovererMetrics = (*consulMetrics)(nil) + +type consulMetrics struct { + rpcFailuresCount prometheus.Counter + rpcDuration *prometheus.SummaryVec + + servicesRPCDuration prometheus.Observer + serviceRPCDuration prometheus.Observer + + metricRegisterer discovery.MetricRegisterer +} + +func newDiscovererMetrics(reg prometheus.Registerer, _ discovery.RefreshMetricsInstantiator) discovery.DiscovererMetrics { + m := &consulMetrics{ + rpcFailuresCount: prometheus.NewCounter( + prometheus.CounterOpts{ + Name: "sd_consulagent_rpc_failures_total", + Help: "The number of Consul Agent RPC call failures.", + }), + rpcDuration: prometheus.NewSummaryVec( + prometheus.SummaryOpts{ + Name: "sd_consulagent_rpc_duration_seconds", + Help: "The duration of a Consul Agent RPC call in seconds.", + Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, + }, + []string{"endpoint", "call"}, + ), + } + + m.metricRegisterer = discovery.NewMetricRegisterer(reg, []prometheus.Collector{ + m.rpcFailuresCount, + m.rpcDuration, + }) + + // Initialize metric vectors. + m.servicesRPCDuration = m.rpcDuration.WithLabelValues("agent", "services") + m.serviceRPCDuration = m.rpcDuration.WithLabelValues("agent", "service") + + return m +} + +// Register implements discovery.DiscovererMetrics. +func (m *consulMetrics) Register() error { + return m.metricRegisterer.RegisterMetrics() +} + +// Unregister implements discovery.DiscovererMetrics. +func (m *consulMetrics) Unregister() { + m.metricRegisterer.UnregisterMetrics() +} diff --git a/internal/component/discovery/consulagent/consulagent_test.go b/internal/component/discovery/consulagent/consulagent_test.go index 40b4a265fe78..c5e1c46c2047 100644 --- a/internal/component/discovery/consulagent/consulagent_test.go +++ b/internal/component/discovery/consulagent/consulagent_test.go @@ -32,7 +32,7 @@ func TestConvert(t *testing.T) { err := river.Unmarshal([]byte(exampleRiverConfig), &args) require.NoError(t, err) - converted := args.Convert() + converted := args.Convert().(*SDConfig) assert.Equal(t, "localhost:8500", converted.Server) assert.Equal(t, promcfg.Secret("token"), converted.Token) assert.Equal(t, "dc", converted.Datacenter) diff --git a/internal/component/discovery/consulagent/promtail_consulagent.go b/internal/component/discovery/consulagent/promtail_consulagent.go index 2e5d92b336b4..61d081e82d1b 100644 --- a/internal/component/discovery/consulagent/promtail_consulagent.go +++ b/internal/component/discovery/consulagent/promtail_consulagent.go @@ -118,6 +118,11 @@ type SDConfig struct { TLSConfig config.TLSConfig `yaml:"tls_config,omitempty"` } +// NewDiscovererMetrics implements discovery.DiscovererConfig. +func (c *SDConfig) NewDiscovererMetrics(reg prometheus.Registerer, rmi discovery.RefreshMetricsInstantiator) discovery.DiscovererMetrics { + return newDiscovererMetrics(reg, rmi) +} + // Name returns the name of the Config. func (*SDConfig) Name() string { return "consulagent" } diff --git a/internal/component/discovery/digitalocean/digitalocean.go b/internal/component/discovery/digitalocean/digitalocean.go index 1cae77f9bedd..e32910162a1d 100644 --- a/internal/component/discovery/digitalocean/digitalocean.go +++ b/internal/component/discovery/digitalocean/digitalocean.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -65,7 +65,7 @@ func (a *Arguments) Validate() error { return a.ProxyConfig.Validate() } -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { httpClientConfig := config.DefaultHTTPClientConfig httpClientConfig.BearerToken = a.BearerToken httpClientConfig.BearerTokenFile = a.BearerTokenFile @@ -79,11 +79,3 @@ func (a *Arguments) Convert() *prom_discovery.SDConfig { HTTPClientConfig: *httpClientConfig.Convert(), } } - -// New returns a new instance of a discovery.digitalocean component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/digitalocean/digitalocean_test.go b/internal/component/discovery/digitalocean/digitalocean_test.go index 19888583331c..f48862507b17 100644 --- a/internal/component/discovery/digitalocean/digitalocean_test.go +++ b/internal/component/discovery/digitalocean/digitalocean_test.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/river" prom_common_config "github.com/prometheus/common/config" "github.com/prometheus/common/model" + promdiscovery "github.com/prometheus/prometheus/discovery/digitalocean" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -81,7 +82,7 @@ func TestConvert(t *testing.T) { EnableHTTP2: false, } - converted := args.Convert() + converted := args.Convert().(*promdiscovery.SDConfig) assert.Equal(t, model.Duration(5*time.Minute), converted.RefreshInterval) assert.Equal(t, 8181, converted.Port) assert.Equal(t, prom_common_config.Secret("token"), converted.HTTPClientConfig.BearerToken) diff --git a/internal/component/discovery/discovery.go b/internal/component/discovery/discovery.go index 2d4014cbb776..5a6927dadeae 100644 --- a/internal/component/discovery/discovery.go +++ b/internal/component/discovery/discovery.go @@ -93,12 +93,12 @@ type Exports struct { Targets []Target `river:"targets,attr"` } -// Discoverer is an alias for Prometheus' Discoverer interface, so users of this package don't need +// DiscovererConfig is an alias for Prometheus' DiscovererConfig interface, so users of this package don't need // to import github.com/prometheus/prometheus/discover as well. -type Discoverer discovery.Discoverer +type DiscovererConfig discovery.Config // Creator is a function provided by an implementation to create a concrete Discoverer instance. -type Creator func(component.Arguments) (Discoverer, error) +type Creator func(component.Arguments) (DiscovererConfig, error) // Component is a reusable component for any discovery implementation. // it will handle dynamic updates and exporting targets appropriately for a scrape implementation. @@ -106,7 +106,7 @@ type Component struct { opts component.Options discMut sync.Mutex - latestDisc discovery.Discoverer + latestDisc DiscovererWithMetrics newDiscoverer chan struct{} creator Creator @@ -123,6 +123,19 @@ func New(o component.Options, args component.Arguments, creator Creator) (*Compo return c, c.Update(args) } +// ConvertibleConfig is used to more conveniently convert a configuration struct into a DiscovererConfig. +type ConvertibleConfig interface { + // Convert converts the struct into a DiscovererConfig. + Convert() DiscovererConfig +} + +// NewFromConvertibleConfig creates a discovery component given a ConvertibleConfig. Convenience function for New. +func NewFromConvertibleConfig[T ConvertibleConfig](opts component.Options, conf T) (component.Component, error) { + return New(opts, conf, func(args component.Arguments) (DiscovererConfig, error) { + return args.(T).Convert(), nil + }) +} + // Run implements component.Component. func (c *Component) Run(ctx context.Context) error { var cancel context.CancelFunc @@ -152,7 +165,11 @@ func (c *Component) Run(ctx context.Context) error { // Update implements component.Component. func (c *Component) Update(args component.Arguments) error { - disc, err := c.creator(args) + discConfig, err := c.creator(args) + if err != nil { + return err + } + disc, err := NewDiscovererWithMetrics(discConfig, c.opts.Registerer, c.opts.Logger) if err != nil { return err } @@ -174,7 +191,7 @@ var MaxUpdateFrequency = 5 * time.Second // runDiscovery is a utility for consuming and forwarding target groups from a discoverer. // It will handle collating targets (and clearing), as well as time based throttling of updates. -func (c *Component) runDiscovery(ctx context.Context, d Discoverer) { +func (c *Component) runDiscovery(ctx context.Context, d DiscovererWithMetrics) { // all targets we have seen so far cache := map[string]*targetgroup.Group{} diff --git a/internal/component/discovery/discovery_metrics.go b/internal/component/discovery/discovery_metrics.go new file mode 100644 index 000000000000..9a656a7df67c --- /dev/null +++ b/internal/component/discovery/discovery_metrics.go @@ -0,0 +1,61 @@ +package discovery + +import ( + "context" + + "github.com/go-kit/log" + "github.com/prometheus/client_golang/prometheus" + promdiscovery "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/targetgroup" +) + +type DiscovererWithMetrics interface { + promdiscovery.Discoverer + promdiscovery.DiscovererMetrics +} + +type discovererWithMetrics struct { + discoverer promdiscovery.Discoverer + refreshMetrics promdiscovery.DiscovererMetrics + sdMetrics promdiscovery.DiscovererMetrics +} + +func NewDiscovererWithMetrics(cfg promdiscovery.Config, reg prometheus.Registerer, logger log.Logger) (DiscovererWithMetrics, error) { + refreshMetrics := promdiscovery.NewRefreshMetrics(reg) + cfg.NewDiscovererMetrics(reg, refreshMetrics) + + sdMetrics := cfg.NewDiscovererMetrics(reg, refreshMetrics) + + discoverer, err := cfg.NewDiscoverer(promdiscovery.DiscovererOptions{ + Logger: logger, + Metrics: sdMetrics, + }) + + if err != nil { + return nil, err + } + + return &discovererWithMetrics{ + discoverer: discoverer, + refreshMetrics: refreshMetrics, + sdMetrics: sdMetrics, + }, nil +} + +func (d *discovererWithMetrics) Run(ctx context.Context, up chan<- []*targetgroup.Group) { + d.discoverer.Run(ctx, up) +} + +func (d *discovererWithMetrics) Register() error { + if err := d.refreshMetrics.Register(); err != nil { + return err + } + return d.sdMetrics.Register() +} + +func (d *discovererWithMetrics) Unregister() { + d.refreshMetrics.Unregister() + d.sdMetrics.Unregister() +} + +var _ DiscovererWithMetrics = (*discovererWithMetrics)(nil) diff --git a/internal/component/discovery/dns/dns.go b/internal/component/discovery/dns/dns.go index 3a774ae291be..9b7d62bd0199 100644 --- a/internal/component/discovery/dns/dns.go +++ b/internal/component/discovery/dns/dns.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -59,19 +59,11 @@ func (args *Arguments) Validate() error { } // Convert converts Arguments to the upstream Prometheus SD type. -func (args Arguments) Convert() dns.SDConfig { - return dns.SDConfig{ +func (args Arguments) Convert() discovery.DiscovererConfig { + return &dns.SDConfig{ Names: args.Names, RefreshInterval: model.Duration(args.RefreshInterval), Type: args.Type, Port: args.Port, } } - -// New returns a new instance of a discovery.dns component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - conf := args.(Arguments).Convert() - return dns.NewDiscovery(conf, opts.Logger), nil - }) -} diff --git a/internal/component/discovery/dns/dns_test.go b/internal/component/discovery/dns/dns_test.go index 9ee3b1f9d6b9..78cfa45abe91 100644 --- a/internal/component/discovery/dns/dns_test.go +++ b/internal/component/discovery/dns/dns_test.go @@ -7,6 +7,7 @@ import ( "github.com/grafana/river" "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/discovery/dns" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -71,7 +72,7 @@ func TestConvert(t *testing.T) { Names: []string{"example.com", "example2.com"}, } - converted := args.Convert() + converted := args.Convert().(*dns.SDConfig) assert.Equal(t, model.Duration(5*time.Minute), converted.RefreshInterval) assert.Equal(t, 8181, converted.Port) assert.Equal(t, "A", converted.Type) diff --git a/internal/component/discovery/docker/docker.go b/internal/component/discovery/docker/docker.go index 517311174b60..6772e4a44554 100644 --- a/internal/component/discovery/docker/docker.go +++ b/internal/component/discovery/docker/docker.go @@ -22,7 +22,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -81,13 +81,13 @@ func (args *Arguments) Validate() error { } // Convert converts Arguments to the upstream Prometheus SD type. -func (args Arguments) Convert() moby.DockerSDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { filters := make([]moby.Filter, len(args.Filters)) for i, filter := range args.Filters { filters[i] = filter.Convert() } - return moby.DockerSDConfig{ + return &moby.DockerSDConfig{ HTTPClientConfig: *args.HTTPClientConfig.Convert(), Host: args.Host, @@ -98,11 +98,3 @@ func (args Arguments) Convert() moby.DockerSDConfig { RefreshInterval: model.Duration(args.RefreshInterval), } } - -// New returns a new instance of a discovery.docker component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - conf := args.(Arguments).Convert() - return moby.NewDockerDiscovery(&conf, opts.Logger) - }) -} diff --git a/internal/component/discovery/dockerswarm/dockerswarm.go b/internal/component/discovery/dockerswarm/dockerswarm.go index 030d8cad99e9..4c1a78ad4c98 100644 --- a/internal/component/discovery/dockerswarm/dockerswarm.go +++ b/internal/component/discovery/dockerswarm/dockerswarm.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -68,7 +68,7 @@ func (a *Arguments) Validate() error { } // Convert converts Arguments into the SDConfig type. -func (a *Arguments) Convert() *prom_discovery.DockerSwarmSDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.DockerSwarmSDConfig{ Host: a.Host, Role: a.Role, @@ -96,11 +96,3 @@ func (f *Filter) convert() prom_discovery.Filter { Values: values, } } - -// New returns a new instance of discovery.dockerswarm component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/dockerswarm/dockerswarm_test.go b/internal/component/discovery/dockerswarm/dockerswarm_test.go index d15b6a94f3ce..4d2a48cb9c13 100644 --- a/internal/component/discovery/dockerswarm/dockerswarm_test.go +++ b/internal/component/discovery/dockerswarm/dockerswarm_test.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/river/rivertypes" promConfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" + promdiscovery "github.com/prometheus/prometheus/discovery/moby" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -60,7 +61,7 @@ func TestConvert(t *testing.T) { }, } - promArgs := riverArgs.Convert() + promArgs := riverArgs.Convert().(*promdiscovery.DockerSwarmSDConfig) assert.Equal(t, 2, len(promArgs.Filters)) assert.Equal(t, "n1", promArgs.Filters[0].Name) require.ElementsMatch(t, []string{"v11", "v12"}, promArgs.Filters[0].Values) diff --git a/internal/component/discovery/eureka/eureka.go b/internal/component/discovery/eureka/eureka.go index 1ca6bee6868f..e88b6e72a30e 100644 --- a/internal/component/discovery/eureka/eureka.go +++ b/internal/component/discovery/eureka/eureka.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -55,17 +55,10 @@ func (a *Arguments) Validate() error { return a.HTTPClientConfig.Validate() } -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ Server: a.Server, HTTPClientConfig: *a.HTTPClientConfig.Convert(), RefreshInterval: model.Duration(a.RefreshInterval), } } - -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/eureka/eureka_test.go b/internal/component/discovery/eureka/eureka_test.go index ebe6c516b393..22c5ef8c7d4a 100644 --- a/internal/component/discovery/eureka/eureka_test.go +++ b/internal/component/discovery/eureka/eureka_test.go @@ -92,5 +92,5 @@ func TestConvert(t *testing.T) { EnableHTTP2: false, }, } - require.Equal(t, expected, *sdConfig) + require.Equal(t, &expected, sdConfig) } diff --git a/internal/component/discovery/file/file.go b/internal/component/discovery/file/file.go index 5d075cbfb82f..e9ff889150c3 100644 --- a/internal/component/discovery/file/file.go +++ b/internal/component/discovery/file/file.go @@ -18,7 +18,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -37,16 +37,9 @@ func (a *Arguments) SetToDefault() { *a = DefaultArguments } -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ Files: a.Files, RefreshInterval: model.Duration(a.RefreshInterval), } } - -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger), nil - }) -} diff --git a/internal/component/discovery/file/file_test.go b/internal/component/discovery/file/file_test.go index 7cdfa20340ef..cfb983900d24 100644 --- a/internal/component/discovery/file/file_test.go +++ b/internal/component/discovery/file/file_test.go @@ -6,6 +6,7 @@ import ( "github.com/grafana/river" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/file" "github.com/stretchr/testify/require" ) @@ -37,7 +38,7 @@ func TestConvert(t *testing.T) { RefreshInterval: 10 * time.Minute, } - promSDConfig := args.Convert() + promSDConfig := args.Convert().(*prom_discovery.SDConfig) require.Equal(t, 2, len(promSDConfig.Files)) require.Equal(t, model.Duration(10*time.Minute), promSDConfig.RefreshInterval) } diff --git a/internal/component/discovery/gce/gce.go b/internal/component/discovery/gce/gce.go index ca5d3a540149..b53bf3cde666 100644 --- a/internal/component/discovery/gce/gce.go +++ b/internal/component/discovery/gce/gce.go @@ -19,7 +19,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -47,8 +47,8 @@ func (args *Arguments) SetToDefault() { } // Convert converts Arguments to the upstream Prometheus SD type. -func (args Arguments) Convert() gce.SDConfig { - return gce.SDConfig{ +func (args Arguments) Convert() discovery.DiscovererConfig { + return &gce.SDConfig{ Project: args.Project, Zone: args.Zone, Filter: args.Filter, @@ -57,11 +57,3 @@ func (args Arguments) Convert() gce.SDConfig { TagSeparator: args.TagSeparator, } } - -// New returns a new instance of a discovery.gce component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - conf := args.(Arguments).Convert() - return gce.NewDiscovery(conf, opts.Logger) - }) -} diff --git a/internal/component/discovery/gce/gce_test.go b/internal/component/discovery/gce/gce_test.go index 27b4ceab40f6..239abc0b804c 100644 --- a/internal/component/discovery/gce/gce_test.go +++ b/internal/component/discovery/gce/gce_test.go @@ -5,6 +5,7 @@ import ( "time" "github.com/grafana/river" + "github.com/prometheus/prometheus/discovery/gce" "github.com/stretchr/testify/require" ) @@ -48,7 +49,7 @@ func TestConvert(t *testing.T) { TagSeparator: ",", } - sdConfig := args.Convert() + sdConfig := args.Convert().(*gce.SDConfig) require.Equal(t, args.Project, sdConfig.Project) require.Equal(t, args.Zone, sdConfig.Zone) require.Equal(t, args.Filter, sdConfig.Filter) diff --git a/internal/component/discovery/hetzner/hetzner.go b/internal/component/discovery/hetzner/hetzner.go index be10a499d50c..07927a980afd 100644 --- a/internal/component/discovery/hetzner/hetzner.go +++ b/internal/component/discovery/hetzner/hetzner.go @@ -20,7 +20,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -53,7 +53,7 @@ func (args *Arguments) Validate() error { return args.HTTPClientConfig.Validate() } -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { httpClient := &args.HTTPClientConfig cfg := &prom_discovery.SDConfig{ @@ -64,11 +64,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { } return cfg } - -// New returns a new instance of a discovery.hetzner component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/hetzner/hetzner_test.go b/internal/component/discovery/hetzner/hetzner_test.go index da1f3e1f8c3d..4d7873ddd8c0 100644 --- a/internal/component/discovery/hetzner/hetzner_test.go +++ b/internal/component/discovery/hetzner/hetzner_test.go @@ -6,6 +6,7 @@ import ( "github.com/grafana/river" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/hetzner" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -40,7 +41,7 @@ func TestConvert(t *testing.T) { RefreshInterval: 60 * time.Second, Port: 80, } - converted := args.Convert() + converted := args.Convert().(*prom_discovery.SDConfig) assert.Equal(t, 80, converted.Port) assert.Equal(t, model.Duration(60*time.Second), converted.RefreshInterval) assert.Equal(t, "robot", string(converted.Role)) diff --git a/internal/component/discovery/http/http.go b/internal/component/discovery/http/http.go index fe74b8fd6665..41d0c97934aa 100644 --- a/internal/component/discovery/http/http.go +++ b/internal/component/discovery/http/http.go @@ -7,7 +7,6 @@ import ( "github.com/grafana/agent/internal/component/common/config" "github.com/grafana/agent/internal/component/discovery" "github.com/grafana/agent/internal/featuregate" - promcfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/discovery/http" ) @@ -19,7 +18,7 @@ func init() { Args: Arguments{}, Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -46,7 +45,7 @@ func (args *Arguments) UnmarshalRiver(f func(interface{}) error) error { return nil } -func (args Arguments) Convert() *http.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { cfg := &http.SDConfig{ HTTPClientConfig: *args.HTTPClientConfig.Convert(), URL: args.URL.String(), @@ -54,10 +53,3 @@ func (args Arguments) Convert() *http.SDConfig { } return cfg } - -func New(opts component.Options, args Arguments) (component.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - conf := args.(Arguments).Convert() - return http.NewDiscovery(conf, opts.Logger, []promcfg.HTTPClientOption{}) - }) -} diff --git a/internal/component/discovery/http/http_test.go b/internal/component/discovery/http/http_test.go index 2827f495d11c..e30d7fc473b9 100644 --- a/internal/component/discovery/http/http_test.go +++ b/internal/component/discovery/http/http_test.go @@ -13,7 +13,9 @@ import ( "github.com/grafana/agent/internal/component/common/config" "github.com/grafana/agent/internal/component/discovery" "github.com/grafana/river" + "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/model" + promhttp "github.com/prometheus/prometheus/discovery/http" "github.com/stretchr/testify/require" "go.uber.org/atomic" "gotest.tools/assert" @@ -40,7 +42,7 @@ func TestConvert(t *testing.T) { require.NoError(t, err) args.URL = config.URL{URL: u} - sd := args.Convert() + sd := args.Convert().(*promhttp.SDConfig) assert.Equal(t, "https://www.example.com:12345/foo", sd.URL) assert.Equal(t, model.Duration(60*time.Second), sd.RefreshInterval) assert.Equal(t, true, sd.HTTPClientConfig.EnableHTTP2) @@ -82,7 +84,7 @@ func TestComponent(t *testing.T) { defer srv.Close() u, _ := url.Parse(srv.URL) var cancel func() - component, err := New( + component, err := discovery.NewFromConvertibleConfig( component.Options{ OnStateChange: func(e component.Exports) { stateChanged.Store(true) @@ -91,6 +93,7 @@ func TestComponent(t *testing.T) { assert.Equal(t, 8, len(args.Targets)) cancel() }, + Registerer: prometheus.NewRegistry(), }, Arguments{ RefreshInterval: time.Second, diff --git a/internal/component/discovery/ionos/ionos.go b/internal/component/discovery/ionos/ionos.go index d1ae37cf3537..28b785021ab2 100644 --- a/internal/component/discovery/ionos/ionos.go +++ b/internal/component/discovery/ionos/ionos.go @@ -20,7 +20,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -55,7 +55,7 @@ func (a *Arguments) Validate() error { } // Convert converts Arguments into the SDConfig type. -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ DatacenterID: a.DatacenterID, Port: a.Port, @@ -63,11 +63,3 @@ func (a *Arguments) Convert() *prom_discovery.SDConfig { HTTPClientConfig: *a.HTTPClientConfig.Convert(), } } - -// New returns a new instance of a discovery.ionos component, -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/ionos/ionos_test.go b/internal/component/discovery/ionos/ionos_test.go index ab3a3c2726cc..bd48ea33f93f 100644 --- a/internal/component/discovery/ionos/ionos_test.go +++ b/internal/component/discovery/ionos/ionos_test.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/river/rivertypes" promConfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/ionos" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -46,7 +47,7 @@ func TestConvert(t *testing.T) { }, }, } - promArgs := riverArgs.Convert() + promArgs := riverArgs.Convert().(*prom_discovery.SDConfig) assert.Equal(t, "datacenter_id", promArgs.DatacenterID) assert.Equal(t, model.Duration(20*time.Second), promArgs.RefreshInterval) assert.Equal(t, 81, promArgs.Port) diff --git a/internal/component/discovery/kubelet/discoverer_config.go b/internal/component/discovery/kubelet/discoverer_config.go new file mode 100644 index 000000000000..ffc0632b846a --- /dev/null +++ b/internal/component/discovery/kubelet/discoverer_config.go @@ -0,0 +1,75 @@ +package kubelet + +import ( + "fmt" + + "github.com/prometheus/client_golang/prometheus" + prom_discovery "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/refresh" + + "github.com/grafana/agent/internal/component" +) + +type kubeletDiscoveryConfig struct { + args Arguments + opts component.Options +} + +var _ prom_discovery.Config = (*kubeletDiscoveryConfig)(nil) + +// Name implements discovery.DiscovererConfig. +func (k *kubeletDiscoveryConfig) Name() string { + return "kubelet" +} + +// NewDiscoverer implements discovery.DiscovererConfig. +func (k *kubeletDiscoveryConfig) NewDiscoverer(discOpts prom_discovery.DiscovererOptions) (prom_discovery.Discoverer, error) { + m, ok := discOpts.Metrics.(*kubeletMetrics) + if !ok { + return nil, fmt.Errorf("invalid discovery metrics type") + } + + kubeletDiscovery, err := NewKubeletDiscovery(k.args) + if err != nil { + return nil, err + } + + interval := defaultKubeletRefreshInterval + if k.args.Interval != 0 { + interval = k.args.Interval + } + + return refresh.NewDiscovery(refresh.Options{ + Logger: k.opts.Logger, + Mech: "kubelet", + Interval: interval, + RefreshF: kubeletDiscovery.Refresh, + MetricsInstantiator: m.refreshMetrics, + }), nil +} + +// NewDiscovererMetrics implements discovery.DiscovererConfig. +func (*kubeletDiscoveryConfig) NewDiscovererMetrics(_ prometheus.Registerer, rmi prom_discovery.RefreshMetricsInstantiator) prom_discovery.DiscovererMetrics { + return newDiscovererMetrics(rmi) +} + +var _ prom_discovery.DiscovererMetrics = (*kubeletMetrics)(nil) + +type kubeletMetrics struct { + refreshMetrics prom_discovery.RefreshMetricsInstantiator +} + +func newDiscovererMetrics(rmi prom_discovery.RefreshMetricsInstantiator) prom_discovery.DiscovererMetrics { + m := &kubeletMetrics{ + refreshMetrics: rmi, + } + return m +} + +// Register implements discovery.DiscovererMetrics. +func (m *kubeletMetrics) Register() error { + return nil +} + +// Unregister implements discovery.DiscovererMetrics. +func (m *kubeletMetrics) Unregister() {} diff --git a/internal/component/discovery/kubelet/kubelet.go b/internal/component/discovery/kubelet/kubelet.go index 1fcad0bcbd43..f5e82e45e41c 100644 --- a/internal/component/discovery/kubelet/kubelet.go +++ b/internal/component/discovery/kubelet/kubelet.go @@ -19,7 +19,6 @@ import ( "github.com/grafana/agent/internal/featuregate" commonConfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" - "github.com/prometheus/prometheus/discovery/refresh" "github.com/prometheus/prometheus/discovery/targetgroup" "github.com/prometheus/prometheus/util/strutil" v1 "k8s.io/api/core/v1" @@ -97,17 +96,12 @@ func (args *Arguments) Validate() error { // New returns a new instance of a discovery.kubelet component. func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { + return discovery.New(opts, args, func(args component.Arguments) (discovery.DiscovererConfig, error) { newArgs := args.(Arguments) - kubeletDiscovery, err := NewKubeletDiscovery(newArgs) - if err != nil { - return nil, err - } - interval := defaultKubeletRefreshInterval - if newArgs.Interval != 0 { - interval = newArgs.Interval - } - return refresh.NewDiscovery(opts.Logger, "kubelet", interval, kubeletDiscovery.Refresh), nil + return &kubeletDiscoveryConfig{ + args: newArgs, + opts: opts, + }, nil }) } diff --git a/internal/component/discovery/kubernetes/kubernetes.go b/internal/component/discovery/kubernetes/kubernetes.go index 7f379bac53ee..1028ec6b7e32 100644 --- a/internal/component/discovery/kubernetes/kubernetes.go +++ b/internal/component/discovery/kubernetes/kubernetes.go @@ -17,7 +17,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -50,7 +50,7 @@ func (args *Arguments) Validate() error { } // Convert converts Arguments to the Prometheus SD type. -func (args *Arguments) Convert() *promk8s.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { selectors := make([]promk8s.SelectorConfig, len(args.Selectors)) for i, s := range args.Selectors { selectors[i] = *s.convert() @@ -103,11 +103,3 @@ func (am *AttachMetadataConfig) convert() *promk8s.AttachMetadataConfig { Node: am.Node, } } - -// New returns a new instance of a discovery.kubernetes component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return promk8s.New(opts.Logger, newArgs.Convert()) - }) -} diff --git a/internal/component/discovery/kuma/kuma.go b/internal/component/discovery/kuma/kuma.go index f4adf85de00d..698ee3056cba 100644 --- a/internal/component/discovery/kuma/kuma.go +++ b/internal/component/discovery/kuma/kuma.go @@ -20,7 +20,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -60,7 +60,7 @@ func (args *Arguments) Validate() error { } // Convert returns the upstream configuration struct. -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ Server: args.Server, RefreshInterval: model.Duration(args.RefreshInterval), @@ -69,11 +69,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { HTTPClientConfig: *(args.HTTPClientConfig.Convert()), } } - -// New returns a new instance of a discovery.kuma component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewKumaHTTPDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/kuma/kuma_test.go b/internal/component/discovery/kuma/kuma_test.go index c1c89a66a9ac..4ca86dd57337 100644 --- a/internal/component/discovery/kuma/kuma_test.go +++ b/internal/component/discovery/kuma/kuma_test.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/river" promConfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/xds" "github.com/stretchr/testify/require" ) @@ -52,7 +53,7 @@ func TestConvert(t *testing.T) { }, } - promArgs := riverArgs.Convert() + promArgs := riverArgs.Convert().(*prom_discovery.SDConfig) require.Equal(t, "srv", promArgs.Server) require.Equal(t, model.Duration(30*time.Second), promArgs.RefreshInterval) require.Equal(t, model.Duration(10*time.Second), promArgs.FetchTimeout) diff --git a/internal/component/discovery/linode/linode.go b/internal/component/discovery/linode/linode.go index 152167c01048..fdd45e221826 100644 --- a/internal/component/discovery/linode/linode.go +++ b/internal/component/discovery/linode/linode.go @@ -20,7 +20,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -56,7 +56,7 @@ func (args *Arguments) Validate() error { } // Convert returns the upstream configuration struct. -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ RefreshInterval: model.Duration(args.RefreshInterval), Port: args.Port, @@ -64,11 +64,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { HTTPClientConfig: *(args.HTTPClientConfig.Convert()), } } - -// New returns a new instance of a discovery.linode component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/linode/linode_test.go b/internal/component/discovery/linode/linode_test.go index 3f26becc68fb..ba02bf49d799 100644 --- a/internal/component/discovery/linode/linode_test.go +++ b/internal/component/discovery/linode/linode_test.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/river" promconfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/linode" "github.com/stretchr/testify/require" ) @@ -40,7 +41,7 @@ func TestConvert(t *testing.T) { }, } - promArgs := riverArgs.Convert() + promArgs := riverArgs.Convert().(*prom_discovery.SDConfig) require.Equal(t, 8080, promArgs.Port) require.Equal(t, model.Duration(15*time.Second), promArgs.RefreshInterval) require.Equal(t, ";", promArgs.TagSeparator) diff --git a/internal/component/discovery/marathon/marathon.go b/internal/component/discovery/marathon/marathon.go index c94873292553..c3614d9e79b8 100644 --- a/internal/component/discovery/marathon/marathon.go +++ b/internal/component/discovery/marathon/marathon.go @@ -22,7 +22,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -70,7 +70,7 @@ func (a *Arguments) Validate() error { } // Convert converts Arguments into the SDConfig type. -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ Servers: a.Servers, RefreshInterval: model.Duration(a.RefreshInterval), @@ -79,11 +79,3 @@ func (a *Arguments) Convert() *prom_discovery.SDConfig { HTTPClientConfig: *a.HTTPClientConfig.Convert(), } } - -// New returns a new instance of discovery.marathon component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(*newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/marathon/marathon_test.go b/internal/component/discovery/marathon/marathon_test.go index 3108e3171dca..8e36f0ceb620 100644 --- a/internal/component/discovery/marathon/marathon_test.go +++ b/internal/component/discovery/marathon/marathon_test.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/river/rivertypes" promConfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/marathon" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -79,7 +80,7 @@ func TestConvert(t *testing.T) { }, } - promArgs := riverArgs.Convert() + promArgs := riverArgs.Convert().(*prom_discovery.SDConfig) require.ElementsMatch(t, []string{"serv1", "serv2"}, promArgs.Servers) assert.Equal(t, model.Duration(time.Minute), promArgs.RefreshInterval) assert.Equal(t, promConfig.Secret("auth_token"), promArgs.AuthToken) diff --git a/internal/component/discovery/nerve/nerve.go b/internal/component/discovery/nerve/nerve.go index d7a71f28ac24..a764f62b31b7 100644 --- a/internal/component/discovery/nerve/nerve.go +++ b/internal/component/discovery/nerve/nerve.go @@ -19,7 +19,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -51,18 +51,10 @@ func (args *Arguments) Validate() error { } // Convert returns the upstream configuration struct. -func (args *Arguments) Convert() *prom_discovery.NerveSDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.NerveSDConfig{ Servers: args.Servers, Paths: args.Paths, Timeout: model.Duration(args.Timeout), } } - -// New returns a new instance of a discovery.nerve component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewNerveDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/nomad/nomad.go b/internal/component/discovery/nomad/nomad.go index f2a86a4773ba..7b6766c37b7b 100644 --- a/internal/component/discovery/nomad/nomad.go +++ b/internal/component/discovery/nomad/nomad.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -59,7 +59,7 @@ func (a *Arguments) Validate() error { return a.HTTPClientConfig.Validate() } -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ AllowStale: a.AllowStale, HTTPClientConfig: *a.HTTPClientConfig.Convert(), @@ -70,11 +70,3 @@ func (a *Arguments) Convert() *prom_discovery.SDConfig { TagSeparator: a.TagSeparator, } } - -// New returns a new instance of a discovery.azure component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/nomad/nomad_test.go b/internal/component/discovery/nomad/nomad_test.go index 587a47c55cdd..0828bc36e521 100644 --- a/internal/component/discovery/nomad/nomad_test.go +++ b/internal/component/discovery/nomad/nomad_test.go @@ -6,6 +6,7 @@ import ( "github.com/grafana/river" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/nomad" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -47,7 +48,7 @@ func TestConvert(t *testing.T) { TagSeparator: ";", } - promArgs := riverArgsOAuth.Convert() + promArgs := riverArgsOAuth.Convert().(*prom_discovery.SDConfig) assert.Equal(t, false, promArgs.AllowStale) assert.Equal(t, "test", promArgs.Namespace) assert.Equal(t, "a", promArgs.Region) diff --git a/internal/component/discovery/openstack/openstack.go b/internal/component/discovery/openstack/openstack.go index 885c151d831e..493062baea2a 100644 --- a/internal/component/discovery/openstack/openstack.go +++ b/internal/component/discovery/openstack/openstack.go @@ -22,7 +22,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -75,7 +75,7 @@ func (args *Arguments) Validate() error { return args.TLSConfig.Validate() } -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { tlsConfig := &args.TLSConfig return &prom_discovery.SDConfig{ @@ -99,11 +99,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { Availability: args.Availability, } } - -// New returns a new instance of a discovery.openstack component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/openstack/openstack_test.go b/internal/component/discovery/openstack/openstack_test.go index 623c7b5be41a..8670cef1ab5d 100644 --- a/internal/component/discovery/openstack/openstack_test.go +++ b/internal/component/discovery/openstack/openstack_test.go @@ -9,6 +9,7 @@ import ( promcfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/discovery/openstack" + prom_discovery "github.com/prometheus/prometheus/discovery/openstack" "github.com/stretchr/testify/require" ) @@ -86,7 +87,7 @@ func TestConvert(t *testing.T) { Cert: "cert", }, } - converted := args.Convert() + converted := args.Convert().(*prom_discovery.SDConfig) require.Equal(t, "http://openstack", converted.IdentityEndpoint) require.Equal(t, "exampleuser", converted.Username) diff --git a/internal/component/discovery/ovhcloud/ovhcloud.go b/internal/component/discovery/ovhcloud/ovhcloud.go index ee5abd990288..fac9d03160d1 100644 --- a/internal/component/discovery/ovhcloud/ovhcloud.go +++ b/internal/component/discovery/ovhcloud/ovhcloud.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -76,7 +76,7 @@ func (args *Arguments) Validate() error { } // Convert returns the upstream configuration struct. -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ Endpoint: args.Endpoint, ApplicationKey: args.ApplicationKey, @@ -86,11 +86,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { Service: args.Service, } } - -// New returns a new instance of a discovery.ovhcloud component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/puppetdb/puppetdb.go b/internal/component/discovery/puppetdb/puppetdb.go index 7299051ea7f0..bfe19f59cb38 100644 --- a/internal/component/discovery/puppetdb/puppetdb.go +++ b/internal/component/discovery/puppetdb/puppetdb.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -61,7 +61,7 @@ func (args *Arguments) Validate() error { return args.HTTPClientConfig.Validate() } -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { httpClient := &args.HTTPClientConfig return &prom_discovery.SDConfig{ @@ -73,11 +73,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { HTTPClientConfig: *httpClient.Convert(), } } - -// New returns a new instance of a discovery.puppetdb component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/puppetdb/puppetdb_test.go b/internal/component/discovery/puppetdb/puppetdb_test.go index f63efe5a06bb..87b93efe229c 100644 --- a/internal/component/discovery/puppetdb/puppetdb_test.go +++ b/internal/component/discovery/puppetdb/puppetdb_test.go @@ -6,6 +6,7 @@ import ( "github.com/grafana/river" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/puppetdb" "github.com/stretchr/testify/require" "gotest.tools/assert" ) @@ -39,7 +40,7 @@ func TestConvert(t *testing.T) { err := river.Unmarshal([]byte(exampleRiverConfig), &args) require.NoError(t, err) - sd := args.Convert() + sd := args.Convert().(*prom_discovery.SDConfig) assert.Equal(t, "https://www.example.com", sd.URL) assert.Equal(t, model.Duration(60*time.Second), sd.RefreshInterval) assert.Equal(t, "abc", sd.Query) diff --git a/internal/component/discovery/scaleway/scaleway.go b/internal/component/discovery/scaleway/scaleway.go index 2a20c71f85c8..4aae56e603e1 100644 --- a/internal/component/discovery/scaleway/scaleway.go +++ b/internal/component/discovery/scaleway/scaleway.go @@ -26,7 +26,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -100,14 +100,14 @@ func (args *Arguments) Validate() error { // This will no longer be necessary once we can call a Validate method // instead of UnmarshalYAML. ptr := (*prom_discovery.SDConfig)(reflect.ValueOf(i).UnsafePointer()) - *ptr = *args.Convert() + *ptr = *args.Convert().(*prom_discovery.SDConfig) return nil }) return err } -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { out := &prom_discovery.SDConfig{ Project: args.Project, APIURL: args.APIURL, @@ -176,11 +176,3 @@ func (r *Role) UnmarshalText(text []byte) error { return fmt.Errorf("invalid role %q", text) } } - -// New returns a new instance of a discovery.scaleway component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/serverset/serverset.go b/internal/component/discovery/serverset/serverset.go index c63855822fa3..95127e272a4a 100644 --- a/internal/component/discovery/serverset/serverset.go +++ b/internal/component/discovery/serverset/serverset.go @@ -21,7 +21,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -57,18 +57,10 @@ func (args *Arguments) Validate() error { return nil } -func (args *Arguments) Convert() *prom_discovery.ServersetSDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.ServersetSDConfig{ Servers: args.Servers, Paths: args.Paths, Timeout: model.Duration(args.Timeout), } } - -// New returns a new instance of a discovery.serverset component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewServersetDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/triton/triton.go b/internal/component/discovery/triton/triton.go index 0aa1fea3f96f..c5a4d7d06430 100644 --- a/internal/component/discovery/triton/triton.go +++ b/internal/component/discovery/triton/triton.go @@ -20,7 +20,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -58,7 +58,7 @@ func (args *Arguments) Validate() error { return nil } -func (args *Arguments) Convert() *prom_discovery.SDConfig { +func (args Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ Account: args.Account, Role: args.Role, @@ -71,11 +71,3 @@ func (args *Arguments) Convert() *prom_discovery.SDConfig { Version: args.Version, } } - -// New returns a new instance of a discovery.triton component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.New(opts.Logger, newArgs.Convert()) - }) -} diff --git a/internal/component/discovery/uyuni/uyuni.go b/internal/component/discovery/uyuni/uyuni.go index 4d67ead59d8a..d5e6606fbcf1 100644 --- a/internal/component/discovery/uyuni/uyuni.go +++ b/internal/component/discovery/uyuni/uyuni.go @@ -23,7 +23,7 @@ func init() { Exports: discovery.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { - return New(opts, args.(Arguments)) + return discovery.NewFromConvertibleConfig(opts, args.(Arguments)) }, }) } @@ -69,7 +69,7 @@ func (a *Arguments) Validate() error { return a.ProxyConfig.Validate() } -func (a *Arguments) Convert() *prom_discovery.SDConfig { +func (a Arguments) Convert() discovery.DiscovererConfig { return &prom_discovery.SDConfig{ Server: a.Server, Username: a.Username, @@ -86,11 +86,3 @@ func (a *Arguments) Convert() *prom_discovery.SDConfig { }, } } - -// New returns a new instance of a discovery.uyuni component. -func New(opts component.Options, args Arguments) (*discovery.Component, error) { - return discovery.New(opts, args, func(args component.Arguments) (discovery.Discoverer, error) { - newArgs := args.(Arguments) - return prom_discovery.NewDiscovery(newArgs.Convert(), opts.Logger) - }) -} diff --git a/internal/component/discovery/uyuni/uyuni_test.go b/internal/component/discovery/uyuni/uyuni_test.go index a66e1799a2e7..640f2ac6c975 100644 --- a/internal/component/discovery/uyuni/uyuni_test.go +++ b/internal/component/discovery/uyuni/uyuni_test.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/river" promcfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" + prom_discovery "github.com/prometheus/prometheus/discovery/uyuni" "github.com/stretchr/testify/require" ) @@ -58,7 +59,7 @@ func TestConvert(t *testing.T) { } require.NoError(t, args.Validate()) - converted := args.Convert() + converted := args.Convert().(*prom_discovery.SDConfig) require.Equal(t, "https://uyuni.com", converted.Server) require.Equal(t, "exampleuser", converted.Username) require.Equal(t, promcfg.Secret("examplepassword"), converted.Password) diff --git a/internal/component/faro/receiver/exporters_test.go b/internal/component/faro/receiver/exporters_test.go index a6ec19ecf1f3..2bae4da6cbd6 100644 --- a/internal/component/faro/receiver/exporters_test.go +++ b/internal/component/faro/receiver/exporters_test.go @@ -12,10 +12,10 @@ import ( ) var metricNames = []string{ - "logs_total", - "measurements_total", - "exceptions_total", - "events_total", + "faro_receiver_logs_total", + "faro_receiver_measurements_total", + "faro_receiver_exceptions_total", + "faro_receiver_events_total", } func Test_metricsExporter_Export(t *testing.T) { diff --git a/internal/component/loki/process/stages/metric_test.go b/internal/component/loki/process/stages/metric_test.go index b270d22440aa..8365b866dd37 100644 --- a/internal/component/loki/process/stages/metric_test.go +++ b/internal/component/loki/process/stages/metric_test.go @@ -430,14 +430,6 @@ func TestMetricStage_Process(t *testing.T) { Value: trueVal, Action: metric.CounterInc, }}, - { - Counter: &metric.CounterConfig{ - Name: "contains_false", - Description: "contains_false", - Source: "contains_false", - Value: trueVal, - Action: metric.CounterAdd, - }}, { Counter: &metric.CounterConfig{ Name: "matches", diff --git a/internal/component/loki/source/api/internal/lokipush/push_api_server.go b/internal/component/loki/source/api/internal/lokipush/push_api_server.go index 1842522dfae3..515aec1eaec6 100644 --- a/internal/component/loki/source/api/internal/lokipush/push_api_server.go +++ b/internal/component/loki/source/api/internal/lokipush/push_api_server.go @@ -137,7 +137,7 @@ func (s *PushAPIServer) getRelabelRules() []*relabel.Config { func (s *PushAPIServer) handleLoki(w http.ResponseWriter, r *http.Request) { logger := util_log.WithContext(r.Context(), util_log.Logger) userID, _ := tenant.TenantID(r.Context()) - req, err := push.ParseRequest(logger, userID, r, nil, nil, push.ParseLokiRequest) + req, err := push.ParseRequest(logger, userID, r, nil, nil, push.ParseLokiRequest, nil) if err != nil { level.Warn(s.logger).Log("msg", "failed to parse incoming push request", "err", err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) diff --git a/internal/component/loki/source/file/legacy_file_test.go b/internal/component/loki/source/file/legacy_file_test.go index 583b911e022d..7ba59c3cb17b 100644 --- a/internal/component/loki/source/file/legacy_file_test.go +++ b/internal/component/loki/source/file/legacy_file_test.go @@ -51,7 +51,7 @@ func TestFullEndToEndLegacyConversion(t *testing.T) { var written atomic.Bool go func() { _ = http.Serve(lis, http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - _, err := push.ParseRequest(logkit.NewNopLogger(), "user_id", r, nil, nil, push.ParseLokiRequest) + _, err := push.ParseRequest(logkit.NewNopLogger(), "user_id", r, nil, nil, push.ParseLokiRequest, nil) require.NoError(t, err) _, _ = rw.Write(nil) written.Store(true) diff --git a/internal/component/otelcol/exporter/prometheus/internal/convert/convert.go b/internal/component/otelcol/exporter/prometheus/internal/convert/convert.go index 2103b044d4be..b6b28c7c87a5 100644 --- a/internal/component/otelcol/exporter/prometheus/internal/convert/convert.go +++ b/internal/component/otelcol/exporter/prometheus/internal/convert/convert.go @@ -24,7 +24,6 @@ import ( "github.com/prometheus/prometheus/model/exemplar" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/model/metadata" - "github.com/prometheus/prometheus/model/textparse" "github.com/prometheus/prometheus/model/timestamp" "github.com/prometheus/prometheus/model/value" "github.com/prometheus/prometheus/storage" @@ -130,7 +129,7 @@ func (conv *Converter) ConsumeMetrics(ctx context.Context, md pmetric.Metrics) e func (conv *Converter) consumeResourceMetrics(app storage.Appender, rm pmetric.ResourceMetrics) { resourceMD := conv.createOrUpdateMetadata("target_info", metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "Target metadata", }) resAttrs := rm.Resource().Attributes() @@ -224,7 +223,7 @@ func (conv *Converter) getOrCreateResource(res pcommon.Resource) *memorySeries { func (conv *Converter) consumeScopeMetrics(app storage.Appender, memResource *memorySeries, sm pmetric.ScopeMetrics, resAttrs pcommon.Map) { scopeMD := conv.createOrUpdateMetadata("otel_scope_info", metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, }) memScope := conv.getOrCreateScope(memResource, sm.Scope()) @@ -303,7 +302,7 @@ func (conv *Converter) consumeGauge(app storage.Appender, memResource *memorySer metricName := prometheus.BuildCompliantName(m, "", conv.opts.AddMetricSuffixes) metricMD := conv.createOrUpdateMetadata(metricName, metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Unit: m.Unit(), Help: m.Description(), }) @@ -418,12 +417,12 @@ func (conv *Converter) consumeSum(app storage.Appender, memResource *memorySerie // SHOULD be converted to a cumulative temporarlity and become a Prometheus // Sum. // * Otherwise, it MUST be dropped. - var convType textparse.MetricType + var convType model.MetricType switch { case m.Sum().AggregationTemporality() == pmetric.AggregationTemporalityCumulative && m.Sum().IsMonotonic(): - convType = textparse.MetricTypeCounter + convType = model.MetricTypeCounter case m.Sum().AggregationTemporality() == pmetric.AggregationTemporalityCumulative && !m.Sum().IsMonotonic(): - convType = textparse.MetricTypeGauge + convType = model.MetricTypeGauge case m.Sum().AggregationTemporality() == pmetric.AggregationTemporalityDelta && m.Sum().IsMonotonic(): level.Debug(conv.log).Log("msg", "dropped unsupported delta sum") // Drop non-cumulative summaries for now, which is permitted by the spec. @@ -458,7 +457,7 @@ func (conv *Converter) consumeSum(app storage.Appender, memResource *memorySerie level.Error(conv.log).Log("msg", "failed to write metric sample", metricName, "err", err) } - if convType == textparse.MetricTypeCounter { + if convType == model.MetricTypeCounter { for i := 0; i < dp.Exemplars().Len(); i++ { if err := conv.writeExemplar(app, memSeries, dp.Exemplars().At(i)); err != nil { level.Error(conv.log).Log("msg", "failed to write exemplar for metric sample", metricName, "err", err) @@ -479,7 +478,7 @@ func (conv *Converter) consumeHistogram(app storage.Appender, memResource *memor } metricMD := conv.createOrUpdateMetadata(metricName, metadata.Metadata{ - Type: textparse.MetricTypeHistogram, + Type: model.MetricTypeHistogram, Unit: m.Unit(), Help: m.Description(), }) @@ -613,7 +612,7 @@ func (conv *Converter) consumeExponentialHistogram(app storage.Appender, memReso } metricMD := conv.createOrUpdateMetadata(metricName, metadata.Metadata{ - Type: textparse.MetricTypeHistogram, + Type: model.MetricTypeHistogram, Unit: m.Unit(), Help: m.Description(), }) @@ -688,7 +687,7 @@ func (conv *Converter) consumeSummary(app storage.Appender, memResource *memoryS metricName := prometheus.BuildCompliantName(m, "", conv.opts.AddMetricSuffixes) metricMD := conv.createOrUpdateMetadata(metricName, metadata.Metadata{ - Type: textparse.MetricTypeSummary, + Type: model.MetricTypeSummary, Unit: m.Unit(), Help: m.Description(), }) diff --git a/internal/component/otelcol/receiver/prometheus/internal/metadata.go b/internal/component/otelcol/receiver/prometheus/internal/metadata.go index cea58a0e1dc9..537e998111f0 100644 --- a/internal/component/otelcol/receiver/prometheus/internal/metadata.go +++ b/internal/component/otelcol/receiver/prometheus/internal/metadata.go @@ -4,7 +4,7 @@ package internal // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal" import ( - "github.com/prometheus/prometheus/model/textparse" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/scrape" ) @@ -17,28 +17,28 @@ type dataPoint struct { var internalMetricMetadata = map[string]*scrape.MetricMetadata{ scrapeUpMetricName: { Metric: scrapeUpMetricName, - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "The scraping was successful", }, "scrape_duration_seconds": { Metric: "scrape_duration_seconds", Unit: "seconds", - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "Duration of the scrape", }, "scrape_samples_scraped": { Metric: "scrape_samples_scraped", - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "The number of samples the target exposed", }, "scrape_series_added": { Metric: "scrape_series_added", - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "The approximate number of new series in this scrape", }, "scrape_samples_post_metric_relabeling": { Metric: "scrape_samples_post_metric_relabeling", - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "The number of samples remaining after metric relabeling was applied", }, } @@ -54,7 +54,7 @@ func metadataForMetric(metricName string, mc scrape.MetricMetadataStore) (*scrap // try with suffixes trimmed, in-case it is a "merged" metric type. normalizedName := normalizeMetricName(metricName) if metadata, ok := mc.GetMetadata(normalizedName); ok { - if metadata.Type == textparse.MetricTypeCounter { + if metadata.Type == model.MetricTypeCounter { return &metadata, metricName } return &metadata, normalizedName @@ -62,6 +62,6 @@ func metadataForMetric(metricName string, mc scrape.MetricMetadataStore) (*scrap // Otherwise, the metric is unknown return &scrape.MetricMetadata{ Metric: metricName, - Type: textparse.MetricTypeUnknown, + Type: model.MetricTypeUnknown, }, metricName } diff --git a/internal/component/otelcol/receiver/prometheus/internal/metricfamily_test.go b/internal/component/otelcol/receiver/prometheus/internal/metricfamily_test.go index 10c0f9579480..2ac031389f48 100644 --- a/internal/component/otelcol/receiver/prometheus/internal/metricfamily_test.go +++ b/internal/component/otelcol/receiver/prometheus/internal/metricfamily_test.go @@ -8,8 +8,8 @@ import ( "testing" "time" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/labels" - "github.com/prometheus/prometheus/model/textparse" "github.com/prometheus/prometheus/model/value" "github.com/prometheus/prometheus/scrape" "github.com/stretchr/testify/require" @@ -36,61 +36,61 @@ func (tmc testMetadataStore) LengthMetadata() int { var mc = testMetadataStore{ "counter": scrape.MetricMetadata{ Metric: "cr", - Type: textparse.MetricTypeCounter, + Type: model.MetricTypeCounter, Help: "This is some help for a counter", Unit: "By", }, "gauge": scrape.MetricMetadata{ Metric: "ge", - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "This is some help for a gauge", Unit: "1", }, "gaugehistogram": scrape.MetricMetadata{ Metric: "gh", - Type: textparse.MetricTypeGaugeHistogram, + Type: model.MetricTypeGaugeHistogram, Help: "This is some help for a gauge histogram", Unit: "?", }, "histogram": scrape.MetricMetadata{ Metric: "hg", - Type: textparse.MetricTypeHistogram, + Type: model.MetricTypeHistogram, Help: "This is some help for a histogram", Unit: "ms", }, "histogram_with_created": scrape.MetricMetadata{ Metric: "hg", - Type: textparse.MetricTypeHistogram, + Type: model.MetricTypeHistogram, Help: "This is some help for a histogram", Unit: "ms", }, "histogram_stale": scrape.MetricMetadata{ Metric: "hg_stale", - Type: textparse.MetricTypeHistogram, + Type: model.MetricTypeHistogram, Help: "This is some help for a histogram", Unit: "ms", }, "summary": scrape.MetricMetadata{ Metric: "s", - Type: textparse.MetricTypeSummary, + Type: model.MetricTypeSummary, Help: "This is some help for a summary", Unit: "ms", }, "summary_with_created": scrape.MetricMetadata{ Metric: "s", - Type: textparse.MetricTypeSummary, + Type: model.MetricTypeSummary, Help: "This is some help for a summary", Unit: "ms", }, "summary_stale": scrape.MetricMetadata{ Metric: "s_stale", - Type: textparse.MetricTypeSummary, + Type: model.MetricTypeSummary, Help: "This is some help for a summary", Unit: "ms", }, "unknown": scrape.MetricMetadata{ Metric: "u", - Type: textparse.MetricTypeUnknown, + Type: model.MetricTypeUnknown, Help: "This is some help for an unknown metric", Unit: "?", }, diff --git a/internal/component/otelcol/receiver/prometheus/internal/transaction.go b/internal/component/otelcol/receiver/prometheus/internal/transaction.go index 6b59674c199d..80e17760c06f 100644 --- a/internal/component/otelcol/receiver/prometheus/internal/transaction.go +++ b/internal/component/otelcol/receiver/prometheus/internal/transaction.go @@ -215,6 +215,11 @@ func (t *transaction) getSeriesRef(ls labels.Labels, mtype pmetric.MetricType) u return hash } +func (t *transaction) AppendCTZeroSample(_ storage.SeriesRef, _ labels.Labels, _, _ int64) (storage.SeriesRef, error) { + //TODO: implement this func + return 0, nil +} + // getMetrics returns all metrics to the given slice. // The only error returned by this function is errNoDataToBuild. func (t *transaction) getMetrics(resource pcommon.Resource) (pmetric.Metrics, error) { diff --git a/internal/component/otelcol/receiver/prometheus/internal/util.go b/internal/component/otelcol/receiver/prometheus/internal/util.go index 405a181f47a5..1a96c32c1fa2 100644 --- a/internal/component/otelcol/receiver/prometheus/internal/util.go +++ b/internal/component/otelcol/receiver/prometheus/internal/util.go @@ -11,7 +11,6 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/labels" - "github.com/prometheus/prometheus/model/textparse" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" ) @@ -96,28 +95,28 @@ func getBoundary(metricType pmetric.MetricType, labels labels.Labels) (float64, } // convToMetricType returns the data type and if it is monotonic -func convToMetricType(metricType textparse.MetricType) (pmetric.MetricType, bool) { +func convToMetricType(metricType model.MetricType) (pmetric.MetricType, bool) { switch metricType { - case textparse.MetricTypeCounter: + case model.MetricTypeCounter: // always use float64, as it's the internal data type used in prometheus return pmetric.MetricTypeSum, true - // textparse.MetricTypeUnknown is converted to gauge by default to prevent Prometheus untyped metrics from being dropped - case textparse.MetricTypeGauge, textparse.MetricTypeUnknown: + // model.MetricTypeUnknown is converted to gauge by default to prevent Prometheus untyped metrics from being dropped + case model.MetricTypeGauge, model.MetricTypeUnknown: return pmetric.MetricTypeGauge, false - case textparse.MetricTypeHistogram: + case model.MetricTypeHistogram: return pmetric.MetricTypeHistogram, true // dropping support for gaugehistogram for now until we have an official spec of its implementation // a draft can be found in: https://docs.google.com/document/d/1KwV0mAXwwbvvifBvDKH_LU1YjyXE_wxCkHNoCGq1GX0/edit#heading=h.1cvzqd4ksd23 - // case textparse.MetricTypeGaugeHistogram: + // case model.MetricTypeGaugeHistogram: // return - case textparse.MetricTypeSummary: + case model.MetricTypeSummary: return pmetric.MetricTypeSummary, true - case textparse.MetricTypeInfo, textparse.MetricTypeStateset: + case model.MetricTypeInfo, model.MetricTypeStateset: return pmetric.MetricTypeSum, false - case textparse.MetricTypeGaugeHistogram: + case model.MetricTypeGaugeHistogram: fallthrough default: - // including: textparse.MetricTypeGaugeHistogram + // including: model.MetricTypeGaugeHistogram return pmetric.MetricTypeEmpty, false } } diff --git a/internal/component/otelcol/receiver/prometheus/internal/util_test.go b/internal/component/otelcol/receiver/prometheus/internal/util_test.go index 3bea1ac42471..3e9e121f5ee3 100644 --- a/internal/component/otelcol/receiver/prometheus/internal/util_test.go +++ b/internal/component/otelcol/receiver/prometheus/internal/util_test.go @@ -9,7 +9,6 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/labels" - "github.com/prometheus/prometheus/model/textparse" "github.com/prometheus/prometheus/scrape" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -18,25 +17,25 @@ import ( ) var testMetadata = map[string]scrape.MetricMetadata{ - "counter_test": {Metric: "counter_test", Type: textparse.MetricTypeCounter, Help: "", Unit: ""}, - "counter_test2": {Metric: "counter_test2", Type: textparse.MetricTypeCounter, Help: "", Unit: ""}, - "gauge_test": {Metric: "gauge_test", Type: textparse.MetricTypeGauge, Help: "", Unit: ""}, - "gauge_test2": {Metric: "gauge_test2", Type: textparse.MetricTypeGauge, Help: "", Unit: ""}, - "hist_test": {Metric: "hist_test", Type: textparse.MetricTypeHistogram, Help: "", Unit: ""}, - "hist_test2": {Metric: "hist_test2", Type: textparse.MetricTypeHistogram, Help: "", Unit: ""}, - "ghist_test": {Metric: "ghist_test", Type: textparse.MetricTypeGaugeHistogram, Help: "", Unit: ""}, - "summary_test": {Metric: "summary_test", Type: textparse.MetricTypeSummary, Help: "", Unit: ""}, - "summary_test2": {Metric: "summary_test2", Type: textparse.MetricTypeSummary, Help: "", Unit: ""}, - "unknown_test": {Metric: "unknown_test", Type: textparse.MetricTypeUnknown, Help: "", Unit: ""}, - "poor_name": {Metric: "poor_name", Type: textparse.MetricTypeGauge, Help: "", Unit: ""}, - "poor_name_count": {Metric: "poor_name_count", Type: textparse.MetricTypeCounter, Help: "", Unit: ""}, - "scrape_foo": {Metric: "scrape_foo", Type: textparse.MetricTypeCounter, Help: "", Unit: ""}, + "counter_test": {Metric: "counter_test", Type: model.MetricTypeCounter, Help: "", Unit: ""}, + "counter_test2": {Metric: "counter_test2", Type: model.MetricTypeCounter, Help: "", Unit: ""}, + "gauge_test": {Metric: "gauge_test", Type: model.MetricTypeGauge, Help: "", Unit: ""}, + "gauge_test2": {Metric: "gauge_test2", Type: model.MetricTypeGauge, Help: "", Unit: ""}, + "hist_test": {Metric: "hist_test", Type: model.MetricTypeHistogram, Help: "", Unit: ""}, + "hist_test2": {Metric: "hist_test2", Type: model.MetricTypeHistogram, Help: "", Unit: ""}, + "ghist_test": {Metric: "ghist_test", Type: model.MetricTypeGaugeHistogram, Help: "", Unit: ""}, + "summary_test": {Metric: "summary_test", Type: model.MetricTypeSummary, Help: "", Unit: ""}, + "summary_test2": {Metric: "summary_test2", Type: model.MetricTypeSummary, Help: "", Unit: ""}, + "unknown_test": {Metric: "unknown_test", Type: model.MetricTypeUnknown, Help: "", Unit: ""}, + "poor_name": {Metric: "poor_name", Type: model.MetricTypeGauge, Help: "", Unit: ""}, + "poor_name_count": {Metric: "poor_name_count", Type: model.MetricTypeCounter, Help: "", Unit: ""}, + "scrape_foo": {Metric: "scrape_foo", Type: model.MetricTypeCounter, Help: "", Unit: ""}, "example_process_start_time_seconds": {Metric: "example_process_start_time_seconds", - Type: textparse.MetricTypeGauge, Help: "", Unit: ""}, + Type: model.MetricTypeGauge, Help: "", Unit: ""}, "process_start_time_seconds": {Metric: "process_start_time_seconds", - Type: textparse.MetricTypeGauge, Help: "", Unit: ""}, + Type: model.MetricTypeGauge, Help: "", Unit: ""}, "subprocess_start_time_seconds": {Metric: "subprocess_start_time_seconds", - Type: textparse.MetricTypeGauge, Help: "", Unit: ""}, + Type: model.MetricTypeGauge, Help: "", Unit: ""}, } func TestTimestampFromMs(t *testing.T) { @@ -53,55 +52,55 @@ func TestTimestampFromFloat64(t *testing.T) { func TestConvToMetricType(t *testing.T) { tests := []struct { name string - mtype textparse.MetricType + mtype model.MetricType want pmetric.MetricType wantMonotonic bool }{ { - name: "textparse.counter", - mtype: textparse.MetricTypeCounter, + name: "model.counter", + mtype: model.MetricTypeCounter, want: pmetric.MetricTypeSum, wantMonotonic: true, }, { - name: "textparse.gauge", - mtype: textparse.MetricTypeGauge, + name: "model.gauge", + mtype: model.MetricTypeGauge, want: pmetric.MetricTypeGauge, wantMonotonic: false, }, { - name: "textparse.unknown", - mtype: textparse.MetricTypeUnknown, + name: "model.unknown", + mtype: model.MetricTypeUnknown, want: pmetric.MetricTypeGauge, wantMonotonic: false, }, { - name: "textparse.histogram", - mtype: textparse.MetricTypeHistogram, + name: "model.histogram", + mtype: model.MetricTypeHistogram, want: pmetric.MetricTypeHistogram, wantMonotonic: true, }, { - name: "textparse.summary", - mtype: textparse.MetricTypeSummary, + name: "model.summary", + mtype: model.MetricTypeSummary, want: pmetric.MetricTypeSummary, wantMonotonic: true, }, { - name: "textparse.metric_type_info", - mtype: textparse.MetricTypeInfo, + name: "model.metric_type_info", + mtype: model.MetricTypeInfo, want: pmetric.MetricTypeSum, wantMonotonic: false, }, { - name: "textparse.metric_state_set", - mtype: textparse.MetricTypeStateset, + name: "model.metric_state_set", + mtype: model.MetricTypeStateset, want: pmetric.MetricTypeSum, wantMonotonic: false, }, { - name: "textparse.metric_gauge_hostogram", - mtype: textparse.MetricTypeGaugeHistogram, + name: "model.metric_gauge_hostogram", + mtype: model.MetricTypeGaugeHistogram, want: pmetric.MetricTypeEmpty, wantMonotonic: false, }, diff --git a/internal/component/prometheus/fanout.go b/internal/component/prometheus/fanout.go index e25e37141faf..e0123ef47d69 100644 --- a/internal/component/prometheus/fanout.go +++ b/internal/component/prometheus/fanout.go @@ -221,6 +221,23 @@ func (a *appender) AppendHistogram(ref storage.SeriesRef, l labels.Labels, t int return ref, multiErr } +func (a *appender) AppendCTZeroSample(ref storage.SeriesRef, l labels.Labels, t, ct int64) (storage.SeriesRef, error) { + if a.start.IsZero() { + a.start = time.Now() + } + if ref == 0 { + ref = storage.SeriesRef(a.ls.GetOrAddGlobalRefID(l)) + } + var multiErr error + for _, x := range a.children { + _, err := x.AppendCTZeroSample(ref, l, t, ct) + if err != nil { + multiErr = multierror.Append(multiErr, err) + } + } + return ref, multiErr +} + // NoopMetadataStore implements the MetricMetadataStore interface. type NoopMetadataStore map[string]scrape.MetricMetadata diff --git a/internal/component/prometheus/interceptor.go b/internal/component/prometheus/interceptor.go index d8e515ec5d38..46b5b9a84178 100644 --- a/internal/component/prometheus/interceptor.go +++ b/internal/component/prometheus/interceptor.go @@ -15,10 +15,11 @@ import ( // getting data. Interceptor should not be modified once created. All callback // fields are optional. type Interceptor struct { - onAppend func(ref storage.SeriesRef, l labels.Labels, t int64, v float64, next storage.Appender) (storage.SeriesRef, error) - onAppendExemplar func(ref storage.SeriesRef, l labels.Labels, e exemplar.Exemplar, next storage.Appender) (storage.SeriesRef, error) - onUpdateMetadata func(ref storage.SeriesRef, l labels.Labels, m metadata.Metadata, next storage.Appender) (storage.SeriesRef, error) - onAppendHistogram func(ref storage.SeriesRef, l labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram, next storage.Appender) (storage.SeriesRef, error) + onAppend func(ref storage.SeriesRef, l labels.Labels, t int64, v float64, next storage.Appender) (storage.SeriesRef, error) + onAppendExemplar func(ref storage.SeriesRef, l labels.Labels, e exemplar.Exemplar, next storage.Appender) (storage.SeriesRef, error) + onUpdateMetadata func(ref storage.SeriesRef, l labels.Labels, m metadata.Metadata, next storage.Appender) (storage.SeriesRef, error) + onAppendHistogram func(ref storage.SeriesRef, l labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram, next storage.Appender) (storage.SeriesRef, error) + onAppendCTZeroSample func(ref storage.SeriesRef, l labels.Labels, t, ct int64, next storage.Appender) (storage.SeriesRef, error) // next is the next appendable to pass in the chain. next storage.Appendable @@ -196,3 +197,22 @@ func (a *interceptappender) AppendHistogram( } return a.child.AppendHistogram(ref, l, t, h, fh) } + +func (a *interceptappender) AppendCTZeroSample( + ref storage.SeriesRef, + l labels.Labels, + t, ct int64, +) (storage.SeriesRef, error) { + + if ref == 0 { + ref = storage.SeriesRef(a.ls.GetOrAddGlobalRefID(l)) + } + + if a.interceptor.onAppendCTZeroSample != nil { + return a.interceptor.onAppendCTZeroSample(ref, l, t, ct, a.child) + } + if a.child == nil { + return 0, nil + } + return a.child.AppendCTZeroSample(ref, l, t, ct) +} diff --git a/internal/component/prometheus/operator/common/crdmanager.go b/internal/component/prometheus/operator/common/crdmanager.go index d5f4b9bbb975..d2bbdd535e0e 100644 --- a/internal/component/prometheus/operator/common/crdmanager.go +++ b/internal/component/prometheus/operator/common/crdmanager.go @@ -16,6 +16,7 @@ import ( "github.com/grafana/agent/internal/service/cluster" "github.com/grafana/agent/internal/service/http" "github.com/grafana/agent/internal/service/labelstore" + "github.com/grafana/agent/internal/util" "github.com/grafana/ckit/shard" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/config" @@ -105,8 +106,16 @@ func (c *crdManager) Run(ctx context.Context) error { return fmt.Errorf("creating kubernetes client: %w", err) } + unregisterer := util.WrapWithUnregisterer(c.opts.Registerer) + defer unregisterer.UnregisterAll() + + sdMetrics, err := discovery.CreateAndRegisterSDMetrics(unregisterer) + if err != nil { + return fmt.Errorf("creating and registering service discovery metrics: %w", err) + } + // Start prometheus service discovery manager - c.discoveryManager = discovery.NewManager(ctx, c.logger, discovery.Name(c.opts.ID)) + c.discoveryManager = discovery.NewManager(ctx, c.logger, unregisterer, sdMetrics, discovery.Name(c.opts.ID)) go func() { err := c.discoveryManager.Run() if err != nil { @@ -117,7 +126,10 @@ func (c *crdManager) Run(ctx context.Context) error { // Start prometheus scrape manager. flowAppendable := prometheus.NewFanout(c.args.ForwardTo, c.opts.ID, c.opts.Registerer, c.ls) opts := &scrape.Options{} - c.scrapeManager = scrape.NewManager(opts, c.logger, flowAppendable) + c.scrapeManager, err = scrape.NewManager(opts, c.logger, flowAppendable, unregisterer) + if err != nil { + return fmt.Errorf("creating scrape manager: %w", err) + } defer c.scrapeManager.Stop() targetSetsChan := make(chan map[string][]*targetgroup.Group) go func() { diff --git a/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go b/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go index fca82b1d1dc4..c9a68e665bd0 100644 --- a/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go +++ b/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go @@ -84,6 +84,12 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -140,6 +146,12 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -196,6 +208,12 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -252,6 +270,12 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -415,6 +439,12 @@ func TestGeneratePodMonitorConfig(t *testing.T) { LabelLimit: 103, LabelNameLengthLimit: 104, LabelValueLengthLimit: 105, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, } diff --git a/internal/component/prometheus/operator/configgen/config_gen_probe_test.go b/internal/component/prometheus/operator/configgen/config_gen_probe_test.go index 25b2910a3fa1..7fc3ac9c47a0 100644 --- a/internal/component/prometheus/operator/configgen/config_gen_probe_test.go +++ b/internal/component/prometheus/operator/configgen/config_gen_probe_test.go @@ -97,6 +97,12 @@ func TestGenerateProbeConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -181,6 +187,12 @@ func TestGenerateProbeConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, } diff --git a/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go b/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go index 80fb36e87e42..462034ec353a 100644 --- a/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go +++ b/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go @@ -94,6 +94,12 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -162,6 +168,12 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -230,6 +242,12 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, }, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, { @@ -407,6 +425,12 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { LabelLimit: 103, LabelNameLengthLimit: 104, LabelValueLengthLimit: 105, + EnableCompression: true, + ScrapeProtocols: []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + }, }, }, } diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index e87dc5e10820..24c19a475e93 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -4,6 +4,8 @@ import ( "context" "fmt" "net/url" + "reflect" + "slices" "sync" "time" @@ -18,11 +20,13 @@ import ( "github.com/grafana/agent/internal/service/http" "github.com/grafana/agent/internal/service/labelstore" "github.com/grafana/agent/internal/useragent" + "github.com/grafana/agent/internal/util" client_prometheus "github.com/prometheus/client_golang/prometheus" config_util "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" ) @@ -41,6 +45,11 @@ func init() { }) } +var ( + defaultScrapeProtocols = convertScrapeProtocols(config.DefaultScrapeProtocols) + defaultNativeHistogramScrapeProtocols = convertScrapeProtocols(config.DefaultProtoFirstScrapeProtocols) +) + // Arguments holds values which are used to configure the prometheus.scrape // component. type Arguments struct { @@ -63,6 +72,11 @@ type Arguments struct { ScrapeInterval time.Duration `river:"scrape_interval,attr,optional"` // The timeout for scraping targets of this config. ScrapeTimeout time.Duration `river:"scrape_timeout,attr,optional"` + // The protocols to negotiate during a scrape. It tells clients what + // protocol are accepted by Prometheus and with what order of preference. + // Supported values (case sensitive): PrometheusProto, OpenMetricsText0.0.1, + // OpenMetricsText1.0.0, PrometheusText0.0.4. + ScrapeProtocols []string `river:"scrape_protocols,attr,optional"` // The HTTP resource path on which to fetch metrics from targets. MetricsPath string `river:"metrics_path,attr,optional"` // The URL scheme with which to fetch metrics from targets. @@ -89,7 +103,11 @@ type Arguments struct { HTTPClientConfig component_config.HTTPClientConfig `river:",squash"` // Scrape Options - ExtraMetrics bool `river:"extra_metrics,attr,optional"` + ExtraMetrics bool `river:"extra_metrics,attr,optional"` + // Deprecated: Use ScrapeProtocols instead. For backwards-compatibility, if this option is set to true, the + // ScrapeProtocols will be set to [PrometheusProto, OpenMetricsText1.0.0, OpenMetricsText0.0.1, PrometheusText0.0.4]. + // It is invalid to set both EnableProtobufNegotiation and ScrapeProtocols. + // TODO: https://github.com/grafana/alloy/issues/878: Remove this option. EnableProtobufNegotiation bool `river:"enable_protobuf_negotiation,attr,optional"` Clustering cluster.ComponentBlock `river:"clustering,block,optional"` @@ -106,6 +124,7 @@ func (arg *Arguments) SetToDefault() { HTTPClientConfig: component_config.DefaultHTTPClientConfig, ScrapeInterval: 1 * time.Minute, // From config.DefaultGlobalConfig ScrapeTimeout: 10 * time.Second, // From config.DefaultGlobalConfig + ScrapeProtocols: slices.Clone(defaultScrapeProtocols), } } @@ -115,16 +134,49 @@ func (arg *Arguments) Validate() error { return fmt.Errorf("scrape_timeout (%s) greater than scrape_interval (%s) for scrape config with job name %q", arg.ScrapeTimeout, arg.ScrapeInterval, arg.JobName) } + if arg.EnableProtobufNegotiation { + // Check if scrape_protocols is set to anything other than default and error if it is. We do not allow combining + // the enable_protobuf_negotiation and scrape_protocols options. + if !reflect.DeepEqual(arg.ScrapeProtocols, defaultScrapeProtocols) { + return fmt.Errorf("both enable_protobuf_negotiation and scrape_protocols are set, only one can be set at a time") + } + // For backwards-compatibility, if EnableProtobufNegotiation is set to true, the ScrapeProtocols are set to + // [PrometheusProto, OpenMetricsText1.0.0, OpenMetricsText0.0.1, PrometheusText0.0.4]. + arg.ScrapeProtocols = slices.Clone(defaultNativeHistogramScrapeProtocols) + } + + // Validate scrape protocols + existing := make(map[string]struct{}) + for _, p := range arg.ScrapeProtocols { + if _, ok := existing[p]; ok { + return fmt.Errorf("duplicate scrape protocol %q: make sure the scrape protocols provided are unique", p) + } + promSP := config.ScrapeProtocol(p) + if err := promSP.Validate(); err != nil { + return fmt.Errorf("invalid scrape protocol %q: %w", p, err) + } + existing[p] = struct{}{} + } + // We must explicitly Validate because HTTPClientConfig is squashed and it won't run otherwise return arg.HTTPClientConfig.Validate() } +func convertScrapeProtocols(promProtocols []config.ScrapeProtocol) []string { + protocols := make([]string, 0, len(promProtocols)) + for _, p := range promProtocols { + protocols = append(protocols, string(p)) + } + return protocols +} + // Component implements the prometheus.scrape component. type Component struct { opts component.Options cluster cluster.Cluster reloadTargets chan struct{} + unregisterer util.Unregisterer mut sync.RWMutex args Arguments @@ -163,10 +215,12 @@ func New(o component.Options, args Arguments) (*Component, error) { HTTPClientOptions: []config_util.HTTPClientOption{ config_util.WithDialContextFunc(httpData.DialFunc), }, - EnableProtobufNegotiation: args.EnableProtobufNegotiation, } - scraper := scrape.NewManager(scrapeOptions, o.Logger, flowAppendable) - + unregisterer := util.WrapWithUnregisterer(o.Registerer) + scraper, err := scrape.NewManager(scrapeOptions, o.Logger, flowAppendable, unregisterer) + if err != nil { + return nil, fmt.Errorf("failed to create scrape manager: %w", err) + } targetsGauge := client_prometheus.NewGauge(client_prometheus.GaugeOpts{ Name: "agent_prometheus_scrape_targets_gauge", Help: "Number of targets this component is configured to scrape"}) @@ -182,6 +236,7 @@ func New(o component.Options, args Arguments) (*Component, error) { scraper: scraper, appendable: flowAppendable, targetsGauge: targetsGauge, + unregisterer: unregisterer, } // Call to Update() to set the receivers and targets once at the start. @@ -189,12 +244,17 @@ func New(o component.Options, args Arguments) (*Component, error) { return nil, err } + if args.EnableProtobufNegotiation { + level.Warn(o.Logger).Log("msg", "enable_protobuf_negotiation is deprecated and will be removed in a future major release, use scrape_protocols instead") + } + return c, nil } // Run implements component.Component. func (c *Component) Run(ctx context.Context) error { defer c.scraper.Stop() + defer c.unregisterer.UnregisterAll() targetSetsChan := make(chan map[string][]*targetgroup.Group) @@ -306,6 +366,13 @@ func getPromScrapeConfigs(jobName string, c Arguments) *config.ScrapeConfig { dec.LabelNameLengthLimit = c.LabelNameLengthLimit dec.LabelValueLengthLimit = c.LabelValueLengthLimit + // Scrape protocols + scrapeProtocols := make([]config.ScrapeProtocol, 0, len(c.ScrapeProtocols)) + for _, p := range c.ScrapeProtocols { + scrapeProtocols = append(scrapeProtocols, config.ScrapeProtocol(p)) + } + dec.ScrapeProtocols = scrapeProtocols + // HTTP scrape client settings dec.HTTPClientConfig = *c.HTTPClientConfig.Convert() return &dec @@ -352,11 +419,12 @@ func BuildTargetStatuses(targets map[string][]*scrape.Target) []TargetStatus { lastError = st.LastError().Error() } if st != nil { + lb := labels.NewScratchBuilder(0) res = append(res, TargetStatus{ JobName: job, URL: st.URL().String(), Health: string(st.Health()), - Labels: st.Labels().Map(), + Labels: st.Labels(&lb).Map(), LastError: lastError, LastScrape: st.LastScrape(), LastScrapeDuration: st.LastScrapeDuration(), diff --git a/internal/converter/internal/common/http_client_config.go b/internal/converter/internal/common/http_client_config.go index 93ff1f50df00..a96d0c9757ab 100644 --- a/internal/converter/internal/common/http_client_config.go +++ b/internal/converter/internal/common/http_client_config.go @@ -102,12 +102,12 @@ func toProxyURL(proxyURL prom_config.URL) config.URL { } } -func toProxyConnectHeader(proxyConnectHeader prom_config.Header) config.Header { +func toProxyConnectHeader(proxyConnectHeader prom_config.ProxyHeader) config.ProxyHeader { if proxyConnectHeader == nil { - return config.Header{} + return config.ProxyHeader{} } - header := config.Header{ + header := config.ProxyHeader{ Header: make(map[string][]rivertypes.Secret), } for name, values := range proxyConnectHeader { diff --git a/internal/converter/internal/prometheusconvert/component/scrape.go b/internal/converter/internal/prometheusconvert/component/scrape.go index c22b8470daed..41397d66f6fa 100644 --- a/internal/converter/internal/prometheusconvert/component/scrape.go +++ b/internal/converter/internal/prometheusconvert/component/scrape.go @@ -57,6 +57,7 @@ func toScrapeArguments(scrapeConfig *prom_config.ScrapeConfig, forwardTo []stora ScrapeClassicHistograms: scrapeConfig.ScrapeClassicHistograms, ScrapeInterval: time.Duration(scrapeConfig.ScrapeInterval), ScrapeTimeout: time.Duration(scrapeConfig.ScrapeTimeout), + ScrapeProtocols: convertScrapeProtocols(scrapeConfig.ScrapeProtocols), MetricsPath: scrapeConfig.MetricsPath, Scheme: scrapeConfig.Scheme, BodySizeLimit: scrapeConfig.BodySizeLimit, @@ -95,6 +96,14 @@ func getScrapeTargets(staticConfig prom_discovery.StaticConfig) []discovery.Targ return targets } +func convertScrapeProtocols(protocols []prom_config.ScrapeProtocol) []string { + result := make([]string, 0, len(protocols)) + for _, protocol := range protocols { + result = append(result, string(protocol)) + } + return result +} + func ValidateScrapeTargets(staticConfig prom_discovery.StaticConfig) diag.Diagnostics { return make(diag.Diagnostics, 0) } diff --git a/internal/converter/internal/staticconvert/internal/build/builder_integrations.go b/internal/converter/internal/staticconvert/internal/build/builder_integrations.go index 51cca2289d5e..c7638d375d3b 100644 --- a/internal/converter/internal/staticconvert/internal/build/builder_integrations.go +++ b/internal/converter/internal/staticconvert/internal/build/builder_integrations.go @@ -173,6 +173,9 @@ func (b *ConfigBuilder) appendExporter(commonConfig *int_config.Common, name str scrapeConfig.ScrapeTimeout = b.cfg.Integrations.ConfigV1.PrometheusGlobalConfig.ScrapeTimeout } + // NOTE: We use the default value, since Agent static mode doesn't support setting this. + scrapeConfig.ScrapeProtocols = prom_config.DefaultScrapeProtocols + scrapeConfigs := []*prom_config.ScrapeConfig{&scrapeConfig} promConfig := &prom_config.Config{ @@ -308,6 +311,8 @@ func (b *ConfigBuilder) appendExporterV2(commonConfig *common_v2.MetricsConfig, scrapeConfig.MetricRelabelConfigs = commonConfig.Autoscrape.MetricRelabelConfigs scrapeConfig.ScrapeInterval = commonConfig.Autoscrape.ScrapeInterval scrapeConfig.ScrapeTimeout = commonConfig.Autoscrape.ScrapeTimeout + // NOTE: We use the default value, since Agent static mode doesn't support setting this. + scrapeConfig.ScrapeProtocols = prom_config.DefaultScrapeProtocols scrapeConfigs := []*prom_config.ScrapeConfig{&scrapeConfig} diff --git a/internal/converter/internal/staticconvert/staticconvert_test.go b/internal/converter/internal/staticconvert/staticconvert_test.go index b5c33ee60db5..9b7b65240406 100644 --- a/internal/converter/internal/staticconvert/staticconvert_test.go +++ b/internal/converter/internal/staticconvert/staticconvert_test.go @@ -1,5 +1,3 @@ -//go:build linux - package staticconvert_test import ( diff --git a/internal/converter/internal/staticconvert/testdata/prom_remote_write.river b/internal/converter/internal/staticconvert/testdata/prom_remote_write.river index 2d341fed6a5b..6762ef36e300 100644 --- a/internal/converter/internal/staticconvert/testdata/prom_remote_write.river +++ b/internal/converter/internal/staticconvert/testdata/prom_remote_write.river @@ -77,7 +77,7 @@ prometheus.remote_write "metrics_test5_sigv4_explicit" { prometheus.remote_write "metrics_test6_azuread_defaults" { endpoint { - name = "test6_azuread_defaults-cc4e7e" + name = "test6_azuread_defaults-9a212a" url = "http://localhost:9012/api/prom/push" queue_config { } @@ -94,7 +94,7 @@ prometheus.remote_write "metrics_test6_azuread_defaults" { prometheus.remote_write "metrics_test7_azuread_explicit" { endpoint { - name = "test7_azuread_explicit-9e1a3e" + name = "test7_azuread_explicit-045332" url = "http://localhost:9012/api/prom/push" queue_config { } diff --git a/internal/flow/tracing/tracing.go b/internal/flow/tracing/tracing.go index cd7acd8e4f1f..49f439682681 100644 --- a/internal/flow/tracing/tracing.go +++ b/internal/flow/tracing/tracing.go @@ -14,7 +14,7 @@ import ( "go.opentelemetry.io/otel/exporters/otlp/otlptrace" "go.opentelemetry.io/otel/sdk/resource" tracesdk "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.24.0" + semconv "go.opentelemetry.io/otel/semconv/v1.26.0" "go.opentelemetry.io/otel/trace" ) diff --git a/internal/util/testappender/internal/dtobuilder/dtobuilder.go b/internal/util/testappender/internal/dtobuilder/dtobuilder.go index 7af96e485d85..d13edadb2c7f 100644 --- a/internal/util/testappender/internal/dtobuilder/dtobuilder.go +++ b/internal/util/testappender/internal/dtobuilder/dtobuilder.go @@ -13,7 +13,6 @@ import ( "github.com/prometheus/prometheus/model/histogram" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/model/metadata" - "github.com/prometheus/prometheus/model/textparse" "google.golang.org/protobuf/types/known/timestamppb" "k8s.io/utils/ptr" ) @@ -153,15 +152,15 @@ func (b *builder) buildFamiliesFromMetadata() { } } -func textParseToMetricType(tp textparse.MetricType) dto.MetricType { +func textParseToMetricType(tp model.MetricType) dto.MetricType { switch tp { - case textparse.MetricTypeCounter: + case model.MetricTypeCounter: return dto.MetricType_COUNTER - case textparse.MetricTypeGauge: + case model.MetricTypeGauge: return dto.MetricType_GAUGE - case textparse.MetricTypeHistogram: + case model.MetricTypeHistogram: return dto.MetricType_HISTOGRAM - case textparse.MetricTypeSummary: + case model.MetricTypeSummary: return dto.MetricType_SUMMARY default: // There are other values for m.Type, but they're all diff --git a/internal/util/testappender/testappender.go b/internal/util/testappender/testappender.go index 041732900044..29abcddd228b 100644 --- a/internal/util/testappender/testappender.go +++ b/internal/util/testappender/testappender.go @@ -174,6 +174,11 @@ func (app *Appender) AppendHistogram(ref storage.SeriesRef, l labels.Labels, t i return 0, nil } +// AppendCTZeroSample implements storage.Appender. +func (app *Appender) AppendCTZeroSample(ref storage.SeriesRef, l labels.Labels, t int64, ct int64) (storage.SeriesRef, error) { + panic("this test appender does not yet implement AppendCTZeroSample") +} + // Commit commits pending samples, exemplars, and metadata, converting them // into a slice of *dto.MetricsFamily. Call MetricFamilies to get the resulting // data. diff --git a/internal/util/testappender/testappender_test.go b/internal/util/testappender/testappender_test.go index 797f4cfde999..1885e9a3fb8a 100644 --- a/internal/util/testappender/testappender_test.go +++ b/internal/util/testappender/testappender_test.go @@ -5,10 +5,10 @@ import ( "testing" "github.com/grafana/agent/internal/util/testappender" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/exemplar" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/model/metadata" - "github.com/prometheus/prometheus/model/textparse" "github.com/stretchr/testify/require" ) @@ -16,7 +16,7 @@ func Example() { var app testappender.Appender app.Append(0, labels.FromStrings("__name__", "example_metric", "foo", "bar"), 60, 1234) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, }) expect := ` @@ -58,7 +58,7 @@ func TestAppender_Metadata(t *testing.T) { var app testappender.Appender app.Append(0, labels.FromStrings("__name__", "example_metric", "foo", "bar"), 60, 1234) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, Help: "example metric", }) @@ -74,7 +74,7 @@ func TestAppender_Metadata(t *testing.T) { var app testappender.Appender app.Append(0, labels.FromStrings("__name__", "example_metric", "foo", "bar"), 60, 1234) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, }) expect := ` @@ -90,7 +90,7 @@ func TestAppender_Types(t *testing.T) { var app testappender.Appender app.Append(0, labels.FromStrings("__name__", "example_metric", "foo", "bar"), 60, 1234) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeUnknown, + Type: model.MetricTypeUnknown, }) expect := ` @@ -104,7 +104,7 @@ func TestAppender_Types(t *testing.T) { var app testappender.Appender app.Append(0, labels.FromStrings("__name__", "example_metric", "foo", "bar"), 60, 1234) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeCounter, + Type: model.MetricTypeCounter, }) expect := ` @@ -118,7 +118,7 @@ func TestAppender_Types(t *testing.T) { var app testappender.Appender app.Append(0, labels.FromStrings("__name__", "example_metric", "foo", "bar"), 60, 1234) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, }) expect := ` @@ -134,7 +134,7 @@ func TestAppender_Types(t *testing.T) { // Summaries have quantiles from 0 to 1, counts, and sums. Append the // metadata first and then append all the various samples. app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeSummary, + Type: model.MetricTypeSummary, }) app.Append(0, labels.FromStrings("__name__", "example_metric", "foo", "bar", "quantile", "0"), 10, 10) @@ -164,7 +164,7 @@ func TestAppender_Types(t *testing.T) { // Histograms have buckets, counts, and sums. Append the metadata first and // then append all the various samples. app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeHistogram, + Type: model.MetricTypeHistogram, }) app.Append(0, labels.FromStrings("__name__", "example_metric_bucket", "foo", "bar", "le", "0.5"), 10, 10) @@ -196,7 +196,7 @@ func TestAppender_Exemplars(t *testing.T) { var app testappender.Appender app.Append(0, labels.FromStrings("__name__", "example_metric_total", "foo", "bar"), 60, 1234) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric_total"), metadata.Metadata{ - Type: textparse.MetricTypeCounter, + Type: model.MetricTypeCounter, }) app.AppendExemplar(0, labels.FromStrings("__name__", "example_metric_total", "foo", "bar"), exemplar.Exemplar{ Labels: labels.FromStrings("hello", "world"), @@ -218,7 +218,7 @@ func TestAppender_Exemplars(t *testing.T) { // Histograms have buckets, counts, and sums. Append the metadata first and // then append all the various samples. app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric"), metadata.Metadata{ - Type: textparse.MetricTypeHistogram, + Type: model.MetricTypeHistogram, }) app.Append(0, labels.FromStrings("__name__", "example_metric_bucket", "foo", "bar", "le", "0.5"), 10, 10) @@ -255,10 +255,10 @@ func TestAppender_MultipleMetrics(t *testing.T) { var app testappender.Appender app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric_a"), metadata.Metadata{ - Type: textparse.MetricTypeCounter, + Type: model.MetricTypeCounter, }) app.UpdateMetadata(0, labels.FromStrings("__name__", "example_metric_b"), metadata.Metadata{ - Type: textparse.MetricTypeGauge, + Type: model.MetricTypeGauge, }) app.Append(0, labels.FromStrings("__name__", "example_metric_a", "foo", "bar"), 10, 10) diff --git a/internal/util/unregisterer.go b/internal/util/unregisterer.go index eedcabc2441a..669dfadfd8a7 100644 --- a/internal/util/unregisterer.go +++ b/internal/util/unregisterer.go @@ -4,20 +4,25 @@ import "github.com/prometheus/client_golang/prometheus" // Unregisterer is a Prometheus Registerer that can unregister all collectors // passed to it. -type Unregisterer struct { - wrap prometheus.Registerer - cs map[prometheus.Collector]struct{} +type Unregisterer interface { + prometheus.Registerer + UnregisterAll() bool } // WrapWithUnregisterer wraps a prometheus Registerer with capabilities to // unregister all collectors. -func WrapWithUnregisterer(reg prometheus.Registerer) *Unregisterer { - return &Unregisterer{ +func WrapWithUnregisterer(reg prometheus.Registerer) Unregisterer { + return &unregisterer{ wrap: reg, cs: make(map[prometheus.Collector]struct{}), } } +type unregisterer struct { + wrap prometheus.Registerer + cs map[prometheus.Collector]struct{} +} + // An "unchecked collector" is a collector which returns an empty description. // It is described in the Prometheus documentation, here: // https://pkg.go.dev/github.com/prometheus/client_golang/prometheus#hdr-Custom_Collectors_and_constant_Metrics @@ -51,7 +56,7 @@ func isUncheckedCollector(c prometheus.Collector) bool { } // Register implements prometheus.Registerer. -func (u *Unregisterer) Register(c prometheus.Collector) error { +func (u *unregisterer) Register(c prometheus.Collector) error { if u.wrap == nil { return nil } @@ -70,7 +75,7 @@ func (u *Unregisterer) Register(c prometheus.Collector) error { } // MustRegister implements prometheus.Registerer. -func (u *Unregisterer) MustRegister(cs ...prometheus.Collector) { +func (u *unregisterer) MustRegister(cs ...prometheus.Collector) { for _, c := range cs { if err := u.Register(c); err != nil { panic(err) @@ -79,7 +84,7 @@ func (u *Unregisterer) MustRegister(cs ...prometheus.Collector) { } // Unregister implements prometheus.Registerer. -func (u *Unregisterer) Unregister(c prometheus.Collector) bool { +func (u *unregisterer) Unregister(c prometheus.Collector) bool { if isUncheckedCollector(c) { return true } @@ -93,7 +98,7 @@ func (u *Unregisterer) Unregister(c prometheus.Collector) bool { // UnregisterAll unregisters all collectors that were registered through the // Registerer. -func (u *Unregisterer) UnregisterAll() bool { +func (u *unregisterer) UnregisterAll() bool { success := true for c := range u.cs { if !u.Unregister(c) { diff --git a/static/config/config_test.go b/static/config/config_test.go index e2db634d725c..055059d1e9c5 100644 --- a/static/config/config_test.go +++ b/static/config/config_test.go @@ -80,6 +80,11 @@ metrics: ScrapeInterval: model.Duration(1 * time.Minute), ScrapeTimeout: model.Duration(33 * time.Second), EvaluationInterval: model.Duration(1 * time.Minute), + ScrapeProtocols: []promCfg.ScrapeProtocol{ + promCfg.OpenMetricsText1_0_0, + promCfg.OpenMetricsText0_0_1, + promCfg.PrometheusText0_0_4, + }, }, } @@ -102,6 +107,11 @@ metrics: ScrapeInterval: model.Duration(1 * time.Minute), ScrapeTimeout: model.Duration(33 * time.Second), EvaluationInterval: model.Duration(1 * time.Minute), + ScrapeProtocols: []promCfg.ScrapeProtocol{ + promCfg.OpenMetricsText1_0_0, + promCfg.OpenMetricsText0_0_1, + promCfg.PrometheusText0_0_4, + }, }, } t.Setenv("SCRAPE_TIMEOUT", "33s") diff --git a/static/integrations/manager_test.go b/static/integrations/manager_test.go index f266268ddadc..f322ad6b244b 100644 --- a/static/integrations/manager_test.go +++ b/static/integrations/manager_test.go @@ -429,5 +429,10 @@ func mockPromConfigWithValues(scrapeInterval model.Duration, scrapeTimeout model return promConfig.GlobalConfig{ ScrapeInterval: scrapeInterval, ScrapeTimeout: scrapeTimeout, + ScrapeProtocols: []promConfig.ScrapeProtocol{ + promConfig.OpenMetricsText1_0_0, + promConfig.OpenMetricsText0_0_1, + promConfig.PrometheusText0_0_4, + }, } } diff --git a/static/integrations/node_exporter/node_exporter_test.go b/static/integrations/node_exporter/node_exporter_test.go index 3fe58233cf8d..d0dd64e481ce 100644 --- a/static/integrations/node_exporter/node_exporter_test.go +++ b/static/integrations/node_exporter/node_exporter_test.go @@ -55,7 +55,7 @@ func TestNodeExporter(t *testing.T) { body, err := io.ReadAll(res.Body) require.NoError(t, err) - p := textparse.NewPromParser(body) + p := textparse.NewPromParser(body, nil) for { _, err := p.Next() if err == io.EOF { diff --git a/static/integrations/redis_exporter/redis_exporter_test.go b/static/integrations/redis_exporter/redis_exporter_test.go index 4b5281dab736..b90c75b59080 100644 --- a/static/integrations/redis_exporter/redis_exporter_test.go +++ b/static/integrations/redis_exporter/redis_exporter_test.go @@ -180,7 +180,7 @@ func TestRedisCases(t *testing.T) { foundMetricNames[name] = false } - p := textparse.NewPromParser(body) + p := textparse.NewPromParser(body, nil) for { entry, err := p.Next() if err == io.EOF { diff --git a/static/integrations/v2/autoscrape/appender.go b/static/integrations/v2/autoscrape/appender.go index 04be1c7d6ada..38a8aa073a1d 100644 --- a/static/integrations/v2/autoscrape/appender.go +++ b/static/integrations/v2/autoscrape/appender.go @@ -40,3 +40,7 @@ func (fa *failedAppender) UpdateMetadata(ref storage.SeriesRef, l labels.Labels, func (fa *failedAppender) AppendHistogram(ref storage.SeriesRef, l labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) { return 0, fmt.Errorf("no such instance %s", fa.instanceName) } + +func (fa *failedAppender) AppendCTZeroSample(ref storage.SeriesRef, l labels.Labels, t int64, ct int64) (storage.SeriesRef, error) { + return 0, fmt.Errorf("no such instance %s", fa.instanceName) +} diff --git a/static/integrations/v2/autoscrape/autoscrape.go b/static/integrations/v2/autoscrape/autoscrape.go index 9f1a25e0be73..1591eaf39c15 100644 --- a/static/integrations/v2/autoscrape/autoscrape.go +++ b/static/integrations/v2/autoscrape/autoscrape.go @@ -9,8 +9,10 @@ import ( "github.com/go-kit/log/level" "github.com/grafana/agent/static/metrics" "github.com/grafana/agent/static/metrics/instance" + "github.com/grafana/agent/static/prom_metrics" "github.com/grafana/agent/static/server" "github.com/oklog/run" + "github.com/prometheus/client_golang/prometheus" config_util "github.com/prometheus/common/config" "github.com/prometheus/common/model" prom_config "github.com/prometheus/prometheus/config" @@ -214,16 +216,21 @@ func newInstanceScraper( config_util.WithDialContextFunc(dialerFunc), ), } - sd := discovery.NewManager(ctx, l, sdOpts...) - sm := scrape.NewManager(&scrape.Options{ - HTTPClientOptions: []config_util.HTTPClientOption{ - // If dialerFunc is nil, scrape.NewManager will use Go's default dialer. - config_util.WithDialContextFunc(dialerFunc), + sd := discovery.NewManager(ctx, l, prometheus.DefaultRegisterer, prom_metrics.SDMetrics, sdOpts...) + sm := scrape.NewManagerWithMetrics( + &scrape.Options{ + HTTPClientOptions: []config_util.HTTPClientOption{ + // If dialerFunc is nil, scrape.NewManager will use Go's default dialer. + config_util.WithDialContextFunc(dialerFunc), + }, }, - }, l, &agentAppender{ - inst: instanceName, - is: s, - }) + l, + &agentAppender{ + inst: instanceName, + is: s, + }, + prom_metrics.ScrapeManagerMetrics, + ) is := &instanceScraper{ log: l, diff --git a/static/integrations/v2/autoscrape/autoscrape_test.go b/static/integrations/v2/autoscrape/autoscrape_test.go index e716f6165e0b..d4825cefae3f 100644 --- a/static/integrations/v2/autoscrape/autoscrape_test.go +++ b/static/integrations/v2/autoscrape/autoscrape_test.go @@ -59,6 +59,7 @@ func TestAutoscrape(t *testing.T) { Source: t.Name(), }}, } + cfg.ScrapeProtocols = prom_config.DefaultScrapeProtocols return cfg }(), }}) @@ -87,12 +88,13 @@ var noOpAppender = mockAppender{ } type mockAppender struct { - AppendFunc func(ref storage.SeriesRef, l labels.Labels, t int64, v float64) (storage.SeriesRef, error) - CommitFunc func() error - RollbackFunc func() error - AppendExemplarFunc func(ref storage.SeriesRef, l labels.Labels, e exemplar.Exemplar) (storage.SeriesRef, error) - UpdateMetadataFunc func(ref storage.SeriesRef, l labels.Labels, m metadata.Metadata) (storage.SeriesRef, error) - AppendHistogramFunc func(ref storage.SeriesRef, l labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) + AppendFunc func(ref storage.SeriesRef, l labels.Labels, t int64, v float64) (storage.SeriesRef, error) + CommitFunc func() error + RollbackFunc func() error + AppendExemplarFunc func(ref storage.SeriesRef, l labels.Labels, e exemplar.Exemplar) (storage.SeriesRef, error) + UpdateMetadataFunc func(ref storage.SeriesRef, l labels.Labels, m metadata.Metadata) (storage.SeriesRef, error) + AppendHistogramFunc func(ref storage.SeriesRef, l labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) + AppendCTZeroSampleFunc func(ref storage.SeriesRef, l labels.Labels, t int64, ct int64) (storage.SeriesRef, error) } func (ma *mockAppender) Append(ref storage.SeriesRef, l labels.Labels, t int64, v float64) (storage.SeriesRef, error) { @@ -110,6 +112,10 @@ func (ma *mockAppender) AppendHistogram(ref storage.SeriesRef, l labels.Labels, return ma.AppendHistogramFunc(ref, l, t, h, fh) } +func (ma *mockAppender) AppendCTZeroSample(ref storage.SeriesRef, l labels.Labels, t int64, ct int64) (storage.SeriesRef, error) { + return ma.AppendCTZeroSampleFunc(ref, l, t, ct) +} + type mockInstance struct { instance.NoOpInstance app storage.Appender diff --git a/static/integrations/v2/blackbox_exporter/blackbox.go b/static/integrations/v2/blackbox_exporter/blackbox.go index 4456cd5f5653..d63d808747ad 100644 --- a/static/integrations/v2/blackbox_exporter/blackbox.go +++ b/static/integrations/v2/blackbox_exporter/blackbox.go @@ -80,6 +80,11 @@ func (bbh *blackboxHandler) ScrapeConfigs(sd discovery.Configs) []*autoscrape.Sc cfg.ScrapeTimeout = bbh.cfg.Common.Autoscrape.ScrapeTimeout cfg.RelabelConfigs = bbh.cfg.Common.Autoscrape.RelabelConfigs cfg.MetricRelabelConfigs = bbh.cfg.Common.Autoscrape.MetricRelabelConfigs + cfg.ScrapeProtocols = []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + } return []*autoscrape.ScrapeConfig{{ Instance: bbh.cfg.Common.Autoscrape.MetricsInstance, diff --git a/static/integrations/v2/metricsutils/metricshandler_integration.go b/static/integrations/v2/metricsutils/metricshandler_integration.go index 3a8bd8db55f1..515c61e0f791 100644 --- a/static/integrations/v2/metricsutils/metricshandler_integration.go +++ b/static/integrations/v2/metricsutils/metricshandler_integration.go @@ -144,6 +144,11 @@ func (i *metricsHandlerIntegration) ScrapeConfigs(sd discovery.Configs) []*autos cfg.ScrapeTimeout = i.common.Autoscrape.ScrapeTimeout cfg.RelabelConfigs = i.common.Autoscrape.RelabelConfigs cfg.MetricRelabelConfigs = i.common.Autoscrape.MetricRelabelConfigs + cfg.ScrapeProtocols = []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + } return []*autoscrape.ScrapeConfig{{ Instance: i.common.Autoscrape.MetricsInstance, diff --git a/static/integrations/v2/snmp_exporter/snmp.go b/static/integrations/v2/snmp_exporter/snmp.go index 4283e9525c56..57d44e2eb50f 100644 --- a/static/integrations/v2/snmp_exporter/snmp.go +++ b/static/integrations/v2/snmp_exporter/snmp.go @@ -98,6 +98,11 @@ func (sh *snmpHandler) ScrapeConfigs(sd discovery.Configs) []*autoscrape.ScrapeC cfg.ScrapeTimeout = sh.cfg.Common.Autoscrape.ScrapeTimeout cfg.RelabelConfigs = sh.cfg.Common.Autoscrape.RelabelConfigs cfg.MetricRelabelConfigs = sh.cfg.Common.Autoscrape.MetricRelabelConfigs + cfg.ScrapeProtocols = []config.ScrapeProtocol{ + config.OpenMetricsText1_0_0, + config.OpenMetricsText0_0_1, + config.PrometheusText0_0_4, + } return []*autoscrape.ScrapeConfig{{ Instance: sh.cfg.Common.Autoscrape.MetricsInstance, diff --git a/static/logs/logs.go b/static/logs/logs.go index 5de9a2c7ade2..415c0b82a240 100644 --- a/static/logs/logs.go +++ b/static/logs/logs.go @@ -120,7 +120,7 @@ type Instance struct { cfg *InstanceConfig log log.Logger - reg *util.Unregisterer + reg util.Unregisterer previousConfig string diff --git a/static/logs/logs_test.go b/static/logs/logs_test.go index e3d3e71b46d6..3b42f0c1b61f 100644 --- a/static/logs/logs_test.go +++ b/static/logs/logs_test.go @@ -63,7 +63,7 @@ func TestLogs(t *testing.T) { }) go func() { _ = http.Serve(lis, http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - req, err := push.ParseRequest(log.NewNopLogger(), "user_id", r, nil, nil, push.ParseLokiRequest) + req, err := push.ParseRequest(log.NewNopLogger(), "user_id", r, nil, nil, push.ParseLokiRequest, nil) require.NoError(t, err) pushes <- req diff --git a/static/metrics/agent.go b/static/metrics/agent.go index a29022c86afe..8aeef61a095f 100644 --- a/static/metrics/agent.go +++ b/static/metrics/agent.go @@ -21,7 +21,6 @@ import ( "github.com/grafana/agent/static/metrics/cluster" "github.com/grafana/agent/static/metrics/cluster/client" "github.com/grafana/agent/static/metrics/instance" - "github.com/prometheus/prometheus/discovery" ) // DefaultConfig is the default settings for the Prometheus-lite client. @@ -157,8 +156,6 @@ type Agent struct { // New creates and starts a new Agent. func New(reg prometheus.Registerer, cfg Config, logger log.Logger) (*Agent, error) { - // This registers discovery metrics with the default registry which should be the reg specified above. - discovery.RegisterMetrics() return newAgent(reg, cfg, logger, defaultInstanceFactory) } diff --git a/static/metrics/cluster/node.go b/static/metrics/cluster/node.go index 0b1e6fa55a68..22335f52f7a1 100644 --- a/static/metrics/cluster/node.go +++ b/static/metrics/cluster/node.go @@ -38,7 +38,7 @@ var backoffConfig = backoff.Config{ // the ring, it will inform the local service to reshard. type node struct { log log.Logger - reg *util.Unregisterer + reg util.Unregisterer srv pb.ScrapingServiceServer mut sync.RWMutex diff --git a/static/metrics/http.go b/static/metrics/http.go index fe033df53f7e..125c81ba8abc 100644 --- a/static/metrics/http.go +++ b/static/metrics/http.go @@ -67,6 +67,7 @@ func ListTargetsHandler(targets map[string]TargetSet) http.Handler { lastError = scrapeError.Error() } + lb := labels.NewScratchBuilder(0) resp = append(resp, TargetInfo{ InstanceName: instance, TargetGroup: key, @@ -74,7 +75,7 @@ func ListTargetsHandler(targets map[string]TargetSet) http.Handler { Endpoint: tgt.URL().String(), State: string(tgt.Health()), DiscoveredLabels: tgt.DiscoveredLabels(), - Labels: tgt.Labels(), + Labels: tgt.Labels(&lb), LastScrape: tgt.LastScrape(), ScrapeDuration: tgt.LastScrapeDuration().Milliseconds(), ScrapeError: lastError, diff --git a/static/metrics/instance/configstore/api_test.go b/static/metrics/instance/configstore/api_test.go index 43e0d1fe599c..6922d2537afc 100644 --- a/static/metrics/instance/configstore/api_test.go +++ b/static/metrics/instance/configstore/api_test.go @@ -140,6 +140,7 @@ scrape_configs: metrics_path: /metrics scheme: http track_timestamps_staleness: true + enable_compression: true static_configs: - targets: - 127.0.0.1:12345 diff --git a/static/metrics/instance/configstore/remote.go b/static/metrics/instance/configstore/remote.go index 7307bd3ccbbe..cd2b37aa68fe 100644 --- a/static/metrics/instance/configstore/remote.go +++ b/static/metrics/instance/configstore/remote.go @@ -39,7 +39,7 @@ var consulRequestDuration = instrument.NewHistogramCollector(promauto.NewHistogr // can be swapped out in real time. type Remote struct { log log.Logger - reg *util.Unregisterer + reg util.Unregisterer kvMut sync.RWMutex kv *agentRemoteClient diff --git a/static/metrics/instance/global.go b/static/metrics/instance/global.go index 38643b7a94f9..246559cd4d69 100644 --- a/static/metrics/instance/global.go +++ b/static/metrics/instance/global.go @@ -8,8 +8,14 @@ import ( ) // DefaultGlobalConfig holds default global settings to be used across all instances. -var DefaultGlobalConfig = GlobalConfig{ - Prometheus: config.DefaultGlobalConfig, +var DefaultGlobalConfig = globalConfig() + +func globalConfig() GlobalConfig { + cfg := GlobalConfig{Prometheus: config.DefaultGlobalConfig} + // We use `DefaultScrapeProtocols` to keep the native histograms disabled by default. + // See https://github.com/prometheus/prometheus/pull/12738/files#diff-17f1012e0c2fbd9bcd8dff3c23b18ff4b6676eef3beca6f8a3e72e6a36633334R64-R68 + cfg.Prometheus.ScrapeProtocols = config.DefaultScrapeProtocols + return cfg } // GlobalConfig holds global settings that apply to all instances by default. diff --git a/static/metrics/instance/host_filter_test.go b/static/metrics/instance/host_filter_test.go index 8eca3a3f519a..f41ec8129dad 100644 --- a/static/metrics/instance/host_filter_test.go +++ b/static/metrics/instance/host_filter_test.go @@ -175,6 +175,7 @@ func TestHostFilter_PatchSD(t *testing.T) { track_timestamps_staleness: false follow_redirects: true enable_http2: true + enable_compression: true kubernetes_sd_configs: - role: service kubeconfig_file: "" diff --git a/static/metrics/instance/instance.go b/static/metrics/instance/instance.go index 1e264ca76b8c..4bc115a2de89 100644 --- a/static/metrics/instance/instance.go +++ b/static/metrics/instance/instance.go @@ -13,6 +13,7 @@ import ( "net/http" "os" "path/filepath" + "strings" "sync" "time" @@ -22,6 +23,7 @@ import ( "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/internal/util" "github.com/grafana/agent/static/metrics/wal" + "github.com/grafana/agent/static/prom_metrics" "github.com/oklog/run" "github.com/prometheus/client_golang/prometheus" config_util "github.com/prometheus/common/config" @@ -36,6 +38,9 @@ import ( "gopkg.in/yaml.v2" ) +var sdManagerMetrics *discovery.Metrics +var sdManagerName = "scrape" + func init() { remote.UserAgent = useragent.Get() scrape.UserAgent = useragent.Get() @@ -44,6 +49,12 @@ func init() { config.DefaultRemoteWriteConfig.SendExemplars = true // default remote_write retry_on_http_429 to true config.DefaultRemoteWriteConfig.QueueConfig.RetryOnRateLimit = true + + var err error + sdManagerMetrics, err = discovery.NewManagerMetrics(prometheus.DefaultRegisterer, sdManagerName) + if err != nil { + panic(fmt.Sprintf("traces: failed to create sd manager metrics for scrapers: %s", err)) + } } // Default configuration values @@ -151,6 +162,12 @@ func (c *Config) ApplyDefaults(global GlobalConfig) error { sc.ScrapeTimeout = c.global.Prometheus.ScrapeTimeout } } + if sc.ScrapeProtocols == nil { + sc.ScrapeProtocols = c.global.Prometheus.ScrapeProtocols + } + if err := validateScrapeProtocols(sc.ScrapeProtocols); err != nil { + return fmt.Errorf("invalid scrape protocols provided: %w", err) + } if _, exists := jobNames[sc.JobName]; exists { return fmt.Errorf("found multiple scrape configs with job name %q", sc.JobName) @@ -617,7 +634,9 @@ func (i *Instance) newDiscoveryManager(ctx context.Context, cfg *Config) (*disco ctx, cancel := context.WithCancel(ctx) logger := log.With(i.logger, "component", "discovery manager") - manager := discovery.NewManager(ctx, logger, discovery.Name("scrape")) + + manager := discovery.NewManager(ctx, logger, nil, prom_metrics.SDMetrics, + discovery.Name(sdManagerName), discovery.SetMetrics(sdManagerMetrics)) // TODO(rfratto): refactor this to a function? // TODO(rfratto): ensure job name name is unique @@ -776,6 +795,24 @@ func getHash(data interface{}) (string, error) { return hex.EncodeToString(hash[:]), nil } +// validateScrapeProtocols return errors if we see problems with accept scrape protocols option. +func validateScrapeProtocols(sps []config.ScrapeProtocol) error { + if len(sps) == 0 { + return errors.New("scrape_protocols cannot be empty") + } + dups := map[string]struct{}{} + for _, sp := range sps { + if _, ok := dups[strings.ToLower(string(sp))]; ok { + return fmt.Errorf("duplicated protocol in scrape_protocols, got %v", sps) + } + if err := sp.Validate(); err != nil { + return fmt.Errorf("scrape_protocols: %w", err) + } + dups[strings.ToLower(string(sp))] = struct{}{} + } + return nil +} + var managerMtx sync.Mutex func newScrapeManager(o *scrape.Options, logger log.Logger, app storage.Appendable) *scrape.Manager { @@ -783,7 +820,7 @@ func newScrapeManager(o *scrape.Options, logger log.Logger, app storage.Appendab // data race of modifying that global, we lock a mutex here briefly. managerMtx.Lock() defer managerMtx.Unlock() - return scrape.NewManager(o, logger, app) + return scrape.NewManagerWithMetrics(o, logger, app, prom_metrics.ScrapeManagerMetrics) } type runGroupContext struct { diff --git a/static/metrics/instance/instance_test.go b/static/metrics/instance/instance_test.go index 0f97aecac232..b16101651dc5 100644 --- a/static/metrics/instance/instance_test.go +++ b/static/metrics/instance/instance_test.go @@ -330,6 +330,7 @@ func getTestConfig(t *testing.T, global *GlobalConfig, scrapeAddr string) Config Labels: model.LabelSet{}, }}, } + scrapeCfg.ScrapeProtocols = config.DefaultScrapeProtocols cfg := DefaultConfig cfg.Name = "test" @@ -403,6 +404,9 @@ func (a *mockAppender) UpdateMetadata(ref storage.SeriesRef, l labels.Labels, m func (a *mockAppender) AppendHistogram(ref storage.SeriesRef, l labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) { return 0, nil } +func (a *mockAppender) AppendCTZeroSample(ref storage.SeriesRef, l labels.Labels, t int64, ct int64) (storage.SeriesRef, error) { + return 0, nil +} func (a *mockAppender) Commit() error { return nil diff --git a/static/metrics/instance/marshal_test.go b/static/metrics/instance/marshal_test.go index b102c3d635d2..00025d58faf0 100644 --- a/static/metrics/instance/marshal_test.go +++ b/static/metrics/instance/marshal_test.go @@ -37,6 +37,7 @@ scrape_configs: metrics_path: /metrics scheme: http track_timestamps_staleness: true + enable_compression: true static_configs: - targets: - 127.0.0.1:12345 @@ -94,6 +95,7 @@ scrape_configs: metrics_path: /metrics scheme: http track_timestamps_staleness: true + enable_compression: true static_configs: - targets: - 127.0.0.1:12345 diff --git a/static/metrics/wal/util.go b/static/metrics/wal/util.go index 10312fde45c9..b0368dba8399 100644 --- a/static/metrics/wal/util.go +++ b/static/metrics/wal/util.go @@ -146,6 +146,8 @@ func (c *walDataCollector) SeriesReset(_ int) {} func (*walDataCollector) UpdateSeriesSegment([]record.RefSeries, int) {} +func (*walDataCollector) StoreMetadata([]record.RefMetadata) {} + // SubDirectory returns the subdirectory within a Storage directory used for // the Prometheus WAL. func SubDirectory(base string) string { diff --git a/static/metrics/wal/wal.go b/static/metrics/wal/wal.go index 513a43df5da1..d1c7dabb3899 100644 --- a/static/metrics/wal/wal.go +++ b/static/metrics/wal/wal.go @@ -783,13 +783,13 @@ func (a *appender) AppendExemplar(ref storage.SeriesRef, _ labels.Labels, e exem func (a *appender) AppendHistogram(ref storage.SeriesRef, l labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) { if h != nil { - if err := tsdb.ValidateHistogram(h); err != nil { + if err := h.Validate(); err != nil { return 0, err } } if fh != nil { - if err := tsdb.ValidateFloatHistogram(fh); err != nil { + if err := fh.Validate(); err != nil { return 0, err } } @@ -848,6 +848,11 @@ func (a *appender) AppendHistogram(ref storage.SeriesRef, l labels.Labels, t int return storage.SeriesRef(series.ref), nil } +func (a *appender) AppendCTZeroSample(_ storage.SeriesRef, _ labels.Labels, _ int64, _ int64) (storage.SeriesRef, error) { + // TODO(ptodev): implement this later + return 0, nil +} + func (a *appender) UpdateMetadata(ref storage.SeriesRef, _ labels.Labels, m metadata.Metadata) (storage.SeriesRef, error) { // TODO(rfratto): implement pushing metadata to WAL return 0, nil diff --git a/static/prom_metrics/prom_metrics.go b/static/prom_metrics/prom_metrics.go new file mode 100644 index 000000000000..6cd2b518ec11 --- /dev/null +++ b/static/prom_metrics/prom_metrics.go @@ -0,0 +1,25 @@ +package prom_metrics + +import ( + "fmt" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/scrape" +) + +var SDMetrics map[string]discovery.DiscovererMetrics +var ScrapeManagerMetrics *scrape.ScrapeMetrics + +func init() { + var err error + SDMetrics, err = discovery.CreateAndRegisterSDMetrics(prometheus.DefaultRegisterer) + if err != nil { + panic(fmt.Sprintf("failed to create and register Prometheus SD metrics: %s", err)) + } + + ScrapeManagerMetrics, err = scrape.NewScrapeMetrics(prometheus.DefaultRegisterer) + if err != nil { + panic(fmt.Sprintf("failed to create Prometheus scrape manager metrics: %s", err)) + } +} diff --git a/static/traces/promsdprocessor/prom_sd_processor.go b/static/traces/promsdprocessor/prom_sd_processor.go index 5dc617d49243..8f6ba7688627 100644 --- a/static/traces/promsdprocessor/prom_sd_processor.go +++ b/static/traces/promsdprocessor/prom_sd_processor.go @@ -8,7 +8,9 @@ import ( "github.com/go-kit/log/level" "github.com/grafana/agent/internal/component/discovery" util "github.com/grafana/agent/internal/util/log" + "github.com/grafana/agent/static/prom_metrics" promsdconsumer "github.com/grafana/agent/static/traces/promsdprocessor/consumer" + "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/prometheus/config" promdiscovery "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/discovery/targetgroup" @@ -32,11 +34,31 @@ type promServiceDiscoProcessor struct { logger log.Logger } +var sdManagerMetrics *promdiscovery.Metrics +var sdManagerName = "traces service disco" + +func init() { + reg := prometheus.DefaultRegisterer + + var err error + sdManagerMetrics, err = promdiscovery.NewManagerMetrics(reg, sdManagerName) + if err != nil { + panic(fmt.Sprintf("traces: failed to create sd manager metrics for prom sd processor: %s", err)) + } +} + func newTraceProcessor(nextConsumer consumer.Traces, operationType string, podAssociations []string, scrapeConfigs []*config.ScrapeConfig) (processor.Traces, error) { ctx, cancel := context.WithCancel(context.Background()) - logger := log.With(util.Logger, "component", "traces service disco") - mgr := promdiscovery.NewManager(ctx, logger, promdiscovery.Name("traces service disco")) + logger := log.With(util.Logger, "component", sdManagerName) + + mgr := promdiscovery.NewManager(ctx, logger, nil, prom_metrics.SDMetrics, + promdiscovery.Name(sdManagerName), promdiscovery.SetMetrics(sdManagerMetrics)) + + if mgr == nil { + cancel() + return nil, fmt.Errorf("cannot create a new manager") + } relabelConfigs := map[string][]*relabel.Config{} managerConfig := map[string]promdiscovery.Configs{} diff --git a/static/traces/remotewriteexporter/exporter_test.go b/static/traces/remotewriteexporter/exporter_test.go index d3c0f5e1a219..082b77f4d499 100644 --- a/static/traces/remotewriteexporter/exporter_test.go +++ b/static/traces/remotewriteexporter/exporter_test.go @@ -181,3 +181,7 @@ func (a *mockAppender) UpdateMetadata(_ storage.SeriesRef, _ labels.Labels, _ me func (a *mockAppender) AppendHistogram(_ storage.SeriesRef, _ labels.Labels, _ int64, _ *histogram.Histogram, _ *histogram.FloatHistogram) (storage.SeriesRef, error) { return 0, nil } + +func (a *mockAppender) AppendCTZeroSample(_ storage.SeriesRef, _ labels.Labels, _ int64, _ int64) (storage.SeriesRef, error) { + return 0, nil +}