From c37f2854666150939e4a61a164dfb5f0392e5e5c Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sat, 16 Oct 2021 20:48:15 +0300 Subject: [PATCH] lib/promscrape: set `honor_timestamps: true` by default if this option isnt set explicitly in scrape configs This aligns the behavior to Prometheus - see https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config --- docs/CHANGELOG.md | 1 + lib/promscrape/config.go | 7 ++- lib/promscrape/config_test.go | 105 ++++++++++++++++++---------------- 3 files changed, 62 insertions(+), 51 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index e0fc6e5cd9..b9982efd9c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -19,6 +19,7 @@ sort: 15 * BUGFIX: vmstorage: fix `unaligned 64-bit atomic operation` panic on 32-bit architectures (arm and 386). The panic has been introduced in v1.67.0. * BUGFIX: vmalert, vmauth: prevent from frequent closing of TCP connections established to backends under high load. This should reduce the number of TCP sockets in `TIME_WAIT` state at `vmalert` and `vmauth` under high load. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1704). +* BUGFIX: vmagent: set `honor_timestamps: true` by default in [scrape configs](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) if this options isn't set explicitly. This aligns the behaviour with Prometheus. ## [v1.67.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.67.0) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 17cc688085..ec1047f913 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -120,7 +120,7 @@ type ScrapeConfig struct { ScrapeTimeout time.Duration `yaml:"scrape_timeout,omitempty"` MetricsPath string `yaml:"metrics_path,omitempty"` HonorLabels bool `yaml:"honor_labels,omitempty"` - HonorTimestamps bool `yaml:"honor_timestamps,omitempty"` + HonorTimestamps *bool `yaml:"honor_timestamps,omitempty"` FollowRedirects *bool `yaml:"follow_redirects,omitempty"` Scheme string `yaml:"scheme,omitempty"` Params map[string][]string `yaml:"params,omitempty"` @@ -720,7 +720,10 @@ func getScrapeWorkConfig(sc *ScrapeConfig, baseDir string, globalCfg *GlobalConf scrapeTimeout = scrapeInterval } honorLabels := sc.HonorLabels - honorTimestamps := sc.HonorTimestamps + honorTimestamps := true + if sc.HonorTimestamps != nil { + honorTimestamps = *sc.HonorTimestamps + } denyRedirects := false if sc.FollowRedirects != nil { denyRedirects = !*sc.FollowRedirects diff --git a/lib/promscrape/config_test.go b/lib/promscrape/config_test.go index c28f7c550d..8ed36a49c3 100644 --- a/lib/promscrape/config_test.go +++ b/lib/promscrape/config_test.go @@ -128,9 +128,10 @@ scrape_configs: sws := cfg.getStaticScrapeWork() resetNonEssentialFields(sws) swsExpected := []*ScrapeWork{{ - ScrapeURL: "http://black:9115/probe?module=dns_udp_example&target=8.8.8.8", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://black:9115/probe?module=dns_udp_example&target=8.8.8.8", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -574,8 +575,7 @@ scrape_configs: ScrapeURL: "http://host1:80/abc/de", ScrapeInterval: defaultScrapeInterval, ScrapeTimeout: defaultScrapeTimeout, - HonorLabels: false, - HonorTimestamps: false, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -622,8 +622,7 @@ scrape_configs: ScrapeURL: "http://host2:80/abc/de", ScrapeInterval: defaultScrapeInterval, ScrapeTimeout: defaultScrapeTimeout, - HonorLabels: false, - HonorTimestamps: false, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -670,8 +669,7 @@ scrape_configs: ScrapeURL: "http://localhost:9090/abc/de", ScrapeInterval: defaultScrapeInterval, ScrapeTimeout: defaultScrapeTimeout, - HonorLabels: false, - HonorTimestamps: false, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -740,8 +738,7 @@ scrape_configs: ScrapeURL: "http://foo.bar:1234/metrics", ScrapeInterval: defaultScrapeInterval, ScrapeTimeout: defaultScrapeTimeout, - HonorLabels: false, - HonorTimestamps: false, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -791,8 +788,7 @@ scrape_configs: ScrapeURL: "http://foo.bar:1234/metrics", ScrapeInterval: defaultScrapeInterval, ScrapeTimeout: defaultScrapeTimeout, - HonorLabels: false, - HonorTimestamps: false, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -847,7 +843,7 @@ scrape_configs: metrics_path: /foo/bar scheme: https honor_labels: true - honor_timestamps: true + honor_timestamps: false follow_redirects: false params: p: ["x&y", "="] @@ -873,7 +869,7 @@ scrape_configs: ScrapeInterval: 54 * time.Second, ScrapeTimeout: 5 * time.Second, HonorLabels: true, - HonorTimestamps: true, + HonorTimestamps: false, DenyRedirects: true, Labels: []prompbmarshal.Label{ { @@ -923,7 +919,7 @@ scrape_configs: ScrapeInterval: 54 * time.Second, ScrapeTimeout: 5 * time.Second, HonorLabels: true, - HonorTimestamps: true, + HonorTimestamps: false, DenyRedirects: true, Labels: []prompbmarshal.Label{ { @@ -969,9 +965,10 @@ scrape_configs: jobNameOriginal: "foo", }, { - ScrapeURL: "http://1.2.3.4:80/metrics", - ScrapeInterval: 8 * time.Second, - ScrapeTimeout: 8 * time.Second, + ScrapeURL: "http://1.2.3.4:80/metrics", + ScrapeInterval: 8 * time.Second, + ScrapeTimeout: 8 * time.Second, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1010,9 +1007,10 @@ scrape_configs: jobNameOriginal: "qwer", }, { - ScrapeURL: "http://foobar:80/metrics", - ScrapeInterval: 8 * time.Second, - ScrapeTimeout: 8 * time.Second, + ScrapeURL: "http://foobar:80/metrics", + ScrapeInterval: 8 * time.Second, + ScrapeTimeout: 8 * time.Second, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1085,9 +1083,10 @@ scrape_configs: - targets: ["foo.bar:1234", "drop-this-target"] `, []*ScrapeWork{ { - ScrapeURL: "http://foo.bar:1234/metrics?x=keep_me", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://foo.bar:1234/metrics?x=keep_me", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1164,9 +1163,10 @@ scrape_configs: - targets: ["foo.bar:1234"] `, []*ScrapeWork{ { - ScrapeURL: "mailto://foo.bar:1234/abc.de?a=b", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "mailto://foo.bar:1234/abc.de?a=b", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1228,9 +1228,10 @@ scrape_configs: - targets: ["foo.bar:1234", "xyz"] `, []*ScrapeWork{ { - ScrapeURL: "http://foo.bar:1234/metrics", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://foo.bar:1234/metrics", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1261,9 +1262,10 @@ scrape_configs: - targets: ["foo.bar:1234"] `, []*ScrapeWork{ { - ScrapeURL: "http://foo.bar:1234/metrics", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://foo.bar:1234/metrics", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1310,9 +1312,10 @@ scrape_configs: - targets: ["foo.bar:1234"] `, []*ScrapeWork{ { - ScrapeURL: "http://foo.bar:1234/metrics", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://foo.bar:1234/metrics", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1355,9 +1358,10 @@ scrape_configs: - targets: ["foo.bar:1234"] `, []*ScrapeWork{ { - ScrapeURL: "http://foo.bar:1234/metrics", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://foo.bar:1234/metrics", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1414,9 +1418,10 @@ scrape_configs: job: yyy `, []*ScrapeWork{ { - ScrapeURL: "http://pp:80/metrics?a=c&a=xy", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://pp:80/metrics?a=c&a=xy", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1491,9 +1496,10 @@ scrape_configs: replacement: true `, []*ScrapeWork{ { - ScrapeURL: "http://127.0.0.1:9116/snmp?module=if_mib&target=192.168.1.2", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://127.0.0.1:9116/snmp?module=if_mib&target=192.168.1.2", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__", @@ -1562,9 +1568,10 @@ scrape_configs: target_label: __metrics_path__ `, []*ScrapeWork{ { - ScrapeURL: "http://foo.bar:1234/metricspath", - ScrapeInterval: defaultScrapeInterval, - ScrapeTimeout: defaultScrapeTimeout, + ScrapeURL: "http://foo.bar:1234/metricspath", + ScrapeInterval: defaultScrapeInterval, + ScrapeTimeout: defaultScrapeTimeout, + HonorTimestamps: true, Labels: []prompbmarshal.Label{ { Name: "__address__",