From a875a235ec86d90c2506841f7a106646b8628846 Mon Sep 17 00:00:00 2001 From: Piotr Gwizdala <17101802+thampiotr@users.noreply.github.com> Date: Tue, 21 May 2024 13:49:27 +0100 Subject: [PATCH] PR comments part 2 --- .../reference/components/prometheus.scrape.md | 3 + .../prometheus/scrape/scrape_test.go | 56 +++++++++++++++++-- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/docs/sources/reference/components/prometheus.scrape.md b/docs/sources/reference/components/prometheus.scrape.md index 2f250d8a82..be93c1aec8 100644 --- a/docs/sources/reference/components/prometheus.scrape.md +++ b/docs/sources/reference/components/prometheus.scrape.md @@ -84,6 +84,9 @@ a scrape. The following values are supported: - `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="reference/components/http-client-proxy-config-description.md" source="alloy" version="" >}} `track_timestamps_staleness` controls whether Prometheus tracks [staleness][prom-staleness] of metrics with an explicit timestamp present in scraped data. diff --git a/internal/component/prometheus/scrape/scrape_test.go b/internal/component/prometheus/scrape/scrape_test.go index fc7ceea04c..b7cddbd561 100644 --- a/internal/component/prometheus/scrape/scrape_test.go +++ b/internal/component/prometheus/scrape/scrape_test.go @@ -8,19 +8,21 @@ import ( "testing" "time" + "github.com/grafana/ckit/memconn" + prometheus_client "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/prometheus/prometheus/model/labels" + "github.com/prometheus/prometheus/storage" + "github.com/stretchr/testify/require" + "github.com/grafana/alloy/internal/component" + component_config "github.com/grafana/alloy/internal/component/common/config" "github.com/grafana/alloy/internal/component/prometheus" "github.com/grafana/alloy/internal/service/cluster" http_service "github.com/grafana/alloy/internal/service/http" "github.com/grafana/alloy/internal/service/labelstore" "github.com/grafana/alloy/internal/util" "github.com/grafana/alloy/syntax" - "github.com/grafana/ckit/memconn" - prometheus_client "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promhttp" - "github.com/prometheus/prometheus/model/labels" - "github.com/prometheus/prometheus/storage" - "github.com/stretchr/testify/require" ) func TestAlloyConfig(t *testing.T) { @@ -51,6 +53,48 @@ func TestAlloyConfig(t *testing.T) { require.NoError(t, err) } +func TestDefaults(t *testing.T) { + var args Arguments + args.SetToDefault() + require.NoError(t, args.Validate()) + + require.Equal(t, "/metrics", args.MetricsPath) + require.Equal(t, "http", args.Scheme) + require.Equal(t, false, args.HonorLabels) + require.Equal(t, true, args.HonorTimestamps) + require.Equal(t, false, args.TrackTimestampsStaleness) + require.Equal(t, component_config.DefaultHTTPClientConfig, args.HTTPClientConfig) + require.Equal(t, time.Minute, args.ScrapeInterval) + require.Equal(t, time.Second*10, args.ScrapeTimeout) + require.Equal(t, []string{ + "OpenMetricsText1.0.0", + "OpenMetricsText0.0.1", + "PrometheusText0.0.4", + }, args.ScrapeProtocols) +} + +func TestDefaultsWithNativeHistograms(t *testing.T) { + var args Arguments + args.SetToDefault() + args.EnableProtobufNegotiation = true + require.NoError(t, args.Validate()) + + require.Equal(t, "/metrics", args.MetricsPath) + require.Equal(t, "http", args.Scheme) + require.Equal(t, false, args.HonorLabels) + require.Equal(t, true, args.HonorTimestamps) + require.Equal(t, false, args.TrackTimestampsStaleness) + require.Equal(t, component_config.DefaultHTTPClientConfig, args.HTTPClientConfig) + require.Equal(t, time.Minute, args.ScrapeInterval) + require.Equal(t, time.Second*10, args.ScrapeTimeout) + require.Equal(t, []string{ + "PrometheusProto", + "OpenMetricsText1.0.0", + "OpenMetricsText0.0.1", + "PrometheusText0.0.4", + }, args.ScrapeProtocols) +} + func TestBadAlloyConfig(t *testing.T) { var exampleAlloyConfig = ` targets = [{ "target1" = "target1" }]