From 573083e60878fdc0d4a68b7d7c212fea04334df1 Mon Sep 17 00:00:00 2001 From: Anton Bystrov Date: Wed, 9 Feb 2022 11:16:59 +0300 Subject: [PATCH 1/7] PMM-9510 remove from the job name time interval --- services/victoriametrics/scrape_configs.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/victoriametrics/scrape_configs.go b/services/victoriametrics/scrape_configs.go index 6e6e2bffa9..09e798d2f3 100644 --- a/services/victoriametrics/scrape_configs.go +++ b/services/victoriametrics/scrape_configs.go @@ -146,8 +146,8 @@ func jobNameMapping(r rune) rune { } } -func jobName(agent *models.Agent, intervalName string, interval time.Duration) string { - return fmt.Sprintf("%s%s_%s-%s", agent.AgentType, strings.Map(jobNameMapping, agent.AgentID), intervalName, interval) +func jobName(agent *models.Agent, intervalName string) string { + return fmt.Sprintf("%s%s_%s", agent.AgentType, strings.Map(jobNameMapping, agent.AgentID), intervalName) } func httpClientConfig(agent *models.Agent) config.HTTPClientConfig { From a22c6d1dd5ee6acb474b90296c6dcf410affd617 Mon Sep 17 00:00:00 2001 From: Anton Bystrov Date: Wed, 9 Feb 2022 11:42:13 +0300 Subject: [PATCH 2/7] Fix --- services/victoriametrics/scrape_configs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/victoriametrics/scrape_configs.go b/services/victoriametrics/scrape_configs.go index 09e798d2f3..968a182960 100644 --- a/services/victoriametrics/scrape_configs.go +++ b/services/victoriametrics/scrape_configs.go @@ -146,7 +146,7 @@ func jobNameMapping(r rune) rune { } } -func jobName(agent *models.Agent, intervalName string) string { +func jobName(agent *models.Agent, intervalName string, interval time.Duration) string { return fmt.Sprintf("%s%s_%s", agent.AgentType, strings.Map(jobNameMapping, agent.AgentID), intervalName) } From f18b998ae499946020ff573e36afe56135836860 Mon Sep 17 00:00:00 2001 From: Anton Bystrov Date: Wed, 9 Feb 2022 16:52:43 +0300 Subject: [PATCH 3/7] Fix test --- .../victoriametrics/scrape_configs_test.go | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/services/victoriametrics/scrape_configs_test.go b/services/victoriametrics/scrape_configs_test.go index 3738bea8ea..5c557a9ecc 100644 --- a/services/victoriametrics/scrape_configs_test.go +++ b/services/victoriametrics/scrape_configs_test.go @@ -55,7 +55,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -98,7 +98,7 @@ func TestScrapeConfig(t *testing.T) { "vmstat", }}, }, { - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -127,7 +127,7 @@ func TestScrapeConfig(t *testing.T) { "textfile.mr", }}, }, { - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -188,7 +188,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -257,7 +257,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -291,7 +291,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -330,7 +330,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -410,7 +410,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -443,7 +443,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -480,7 +480,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -556,7 +556,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -587,7 +587,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -622,7 +622,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -711,7 +711,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -793,7 +793,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -879,7 +879,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "proxysql_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "proxysql_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -963,7 +963,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "rds_exporter_1_1_1_1_12345_mr-5s", + JobName: "rds_exporter_1_1_1_1_12345_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/enhanced", @@ -974,7 +974,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_1_1_1_1_12345_lr-1m0s", + JobName: "rds_exporter_1_1_1_1_12345_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/basic", @@ -985,7 +985,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12345_mr-5s", + JobName: "rds_exporter_2_2_2_2_12345_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/enhanced", @@ -996,7 +996,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12345_lr-1m0s", + JobName: "rds_exporter_2_2_2_2_12345_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/basic", @@ -1007,7 +1007,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12346_mr-5s", + JobName: "rds_exporter_2_2_2_2_12346_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/enhanced", @@ -1018,7 +1018,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12346_lr-1m0s", + JobName: "rds_exporter_2_2_2_2_12346_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/basic", @@ -1061,7 +1061,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ @@ -1109,7 +1109,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/some-metric-path", From 090b63e6f7d8b3fb75c868a4b8c869fc4e05b356 Mon Sep 17 00:00:00 2001 From: Anton Bystrov Date: Wed, 9 Feb 2022 17:17:50 +0300 Subject: [PATCH 4/7] Fix test --- services/victoriametrics/victoriametrics_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/services/victoriametrics/victoriametrics_test.go b/services/victoriametrics/victoriametrics_test.go index 6955514aa1..4fd6f27397 100644 --- a/services/victoriametrics/victoriametrics_test.go +++ b/services/victoriametrics/victoriametrics_test.go @@ -252,7 +252,7 @@ scrape_configs: - 127.0.0.1:9933 labels: instance: pmm-server - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr honor_timestamps: false params: collect[]: @@ -283,7 +283,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-10s + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr honor_timestamps: false params: collect[]: @@ -319,7 +319,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr honor_timestamps: false params: collect[]: @@ -360,7 +360,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_hr-5s + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_hr honor_timestamps: false params: collect[]: @@ -391,7 +391,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_mr-10s + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_mr honor_timestamps: false params: collect[]: @@ -427,7 +427,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_lr-1m0s + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_lr honor_timestamps: false params: collect[]: @@ -468,7 +468,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_hr-5s + - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_hr honor_timestamps: false params: collect[]: From d98bcb163462fa88b04418ab461d607b6b9e7899 Mon Sep 17 00:00:00 2001 From: Jiri Ctvrtka Date: Thu, 10 Feb 2022 09:17:38 +0100 Subject: [PATCH 5/7] PMM-9510 Fix tests. --- services/victoriametrics/scrape_configs_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/victoriametrics/scrape_configs_test.go b/services/victoriametrics/scrape_configs_test.go index 5c557a9ecc..ee26ce1470 100644 --- a/services/victoriametrics/scrape_configs_test.go +++ b/services/victoriametrics/scrape_configs_test.go @@ -963,7 +963,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "rds_exporter_1_1_1_1_12345_mr", + JobName: "rds_exporter_1_1_1_1_12345_mr-5s", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/enhanced", @@ -974,7 +974,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_1_1_1_1_12345_lr", + JobName: "rds_exporter_1_1_1_1_12345_lr-1m0s", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/basic", @@ -985,7 +985,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12345_mr", + JobName: "rds_exporter_2_2_2_2_12345_mr-5s", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/enhanced", @@ -996,7 +996,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12345_lr", + JobName: "rds_exporter_2_2_2_2_12345_lr-1m0s", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/basic", @@ -1007,7 +1007,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12346_mr", + JobName: "rds_exporter_2_2_2_2_12346_mr-5s", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/enhanced", @@ -1018,7 +1018,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "rds_exporter_2_2_2_2_12346_lr", + JobName: "rds_exporter_2_2_2_2_12346_lr-1m0s", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/basic", From fa5a3e5723e538c65fcf852d7f8d1ed5fd71055e Mon Sep 17 00:00:00 2001 From: Anton Bystrov Date: Wed, 1 Jun 2022 12:09:20 +0300 Subject: [PATCH 6/7] Fix conflicts --- .../victoriametrics/scrape_configs_test.go | 216 +++++++++++---- .../victoriametrics/victoriametrics_test.go | 254 ++++++++++++++++-- 2 files changed, 386 insertions(+), 84 deletions(-) diff --git a/services/victoriametrics/scrape_configs_test.go b/services/victoriametrics/scrape_configs_test.go index ee26ce1470..efb1481bdb 100644 --- a/services/victoriametrics/scrape_configs_test.go +++ b/services/victoriametrics/scrape_configs_test.go @@ -22,6 +22,7 @@ import ( "time" "github.com/AlekSi/pointer" + "github.com/percona/pmm/version" config "github.com/percona/promconfig" "github.com/pmezard/go-difflib/difflib" "github.com/stretchr/testify/assert" @@ -55,7 +56,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -98,7 +99,7 @@ func TestScrapeConfig(t *testing.T) { "vmstat", }}, }, { - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -127,7 +128,7 @@ func TestScrapeConfig(t *testing.T) { "textfile.mr", }}, }, { - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -188,7 +189,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -257,7 +258,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -291,7 +292,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -330,7 +331,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -410,7 +411,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -443,7 +444,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -480,7 +481,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -556,7 +557,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -587,7 +588,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -622,7 +623,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -704,46 +705,83 @@ func TestScrapeConfig(t *testing.T) { CustomLabels: []byte(`{"_some_service_label": "bar"}`), } agent := &models.Agent{ - AgentID: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", - AgentType: models.MongoDBExporterType, - CustomLabels: []byte(`{"_some_agent_label": "baz"}`), - ListenPort: pointer.ToUint16(12345), + AgentID: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + AgentType: models.MongoDBExporterType, + CustomLabels: []byte(`{"_some_agent_label": "baz"}`), + ListenPort: pointer.ToUint16(12345), + MongoDBOptions: &models.MongoDBOptions{EnableAllCollectors: true}, } - expected := []*config.ScrapeConfig{{ - JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", - ScrapeInterval: config.Duration(s.HR), - ScrapeTimeout: scrapeTimeout(s.HR), - MetricsPath: "/metrics", - HTTPClientConfig: config.HTTPClientConfig{ - BasicAuth: &config.BasicAuth{ - Username: "pmm", - Password: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + expected := []*config.ScrapeConfig{ + { + JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + ScrapeInterval: config.Duration(s.HR), + ScrapeTimeout: scrapeTimeout(s.HR), + MetricsPath: "/metrics", + Params: map[string][]string{ + "collect[]": {"diagnosticdata", "replicasetstatus", "topmetrics"}, }, - }, - ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ - StaticConfigs: []*config.Group{{ - Targets: []string{"4.5.6.7:12345"}, - Labels: map[string]string{ - "_some_agent_label": "baz", - "_some_node_label": "foo", - "_some_service_label": "bar", - "agent_id": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", - "agent_type": "mongodb_exporter", - "instance": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", - "node_id": "/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d", - "node_name": "node_name", - "service_id": "/service_id/014647c3-b2f5-44eb-94f4-d943260a968c", + HTTPClientConfig: config.HTTPClientConfig{ + BasicAuth: &config.BasicAuth{ + Username: "pmm", + Password: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", }, - }}, + }, + ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ + StaticConfigs: []*config.Group{{ + Targets: []string{"4.5.6.7:12345"}, + Labels: map[string]string{ + "_some_agent_label": "baz", + "_some_node_label": "foo", + "_some_service_label": "bar", + "agent_id": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "agent_type": "mongodb_exporter", + "instance": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "node_id": "/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d", + "node_name": "node_name", + "service_id": "/service_id/014647c3-b2f5-44eb-94f4-d943260a968c", + }, + }}, + }, + }, { + JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + ScrapeInterval: config.Duration(s.LR), + ScrapeTimeout: scrapeTimeout(s.LR), + MetricsPath: "/metrics", + Params: map[string][]string{ + "collect[]": {"collstats", "dbstats", "indexstats"}, + }, + HTTPClientConfig: config.HTTPClientConfig{ + BasicAuth: &config.BasicAuth{ + Username: "pmm", + Password: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + }, + }, + ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ + StaticConfigs: []*config.Group{{ + Targets: []string{"4.5.6.7:12345"}, + Labels: map[string]string{ + "_some_agent_label": "baz", + "_some_node_label": "foo", + "_some_service_label": "bar", + "agent_id": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "agent_type": "mongodb_exporter", + "instance": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "node_id": "/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d", + "node_name": "node_name", + "service_id": "/service_id/014647c3-b2f5-44eb-94f4-d943260a968c", + }, + }}, + }, }, - }} + } actual, err := scrapeConfigsForMongoDBExporter(s, &scrapeConfigParams{ - host: "4.5.6.7", - node: node, - service: service, - agent: agent, + host: "4.5.6.7", + node: node, + service: service, + agent: agent, + pmmAgentVersion: version.MustParse("2.26.0"), }) require.NoError(t, err) require.Len(t, actual, len(expected)) @@ -761,10 +799,11 @@ func TestScrapeConfig(t *testing.T) { } _, err := scrapeConfigsForMongoDBExporter(s, &scrapeConfigParams{ - host: "4.5.6.7", - node: node, - service: service, - agent: agent, + host: "4.5.6.7", + node: node, + service: service, + agent: agent, + pmmAgentVersion: version.MustParse("2.26.0"), }) require.EqualError(t, err, "failed to decode custom labels: unexpected end of JSON input") }) @@ -793,7 +832,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", + JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -820,10 +859,68 @@ func TestScrapeConfig(t *testing.T) { }}, }, Params: url.Values{"collect[]": []string{ - "custom_query", + "custom_query.hr", "exporter", "standard.go", }}, + }, { + JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + ScrapeInterval: config.Duration(s.MR), + ScrapeTimeout: scrapeTimeout(s.MR), + MetricsPath: "/metrics", + HTTPClientConfig: config.HTTPClientConfig{ + BasicAuth: &config.BasicAuth{ + Username: "pmm", + Password: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + }, + }, + ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ + StaticConfigs: []*config.Group{{ + Targets: []string{"4.5.6.7:12345"}, + Labels: map[string]string{ + "_some_agent_label": "baz", + "_some_node_label": "foo", + "_some_service_label": "bar", + "agent_id": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "agent_type": "postgres_exporter", + "instance": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "node_id": "/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d", + "node_name": "node_name", + "service_id": "/service_id/014647c3-b2f5-44eb-94f4-d943260a968c", + }, + }}, + }, + Params: url.Values{"collect[]": []string{ + "custom_query.mr", + }}, + }, { + JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + ScrapeInterval: config.Duration(s.LR), + ScrapeTimeout: scrapeTimeout(s.LR), + MetricsPath: "/metrics", + HTTPClientConfig: config.HTTPClientConfig{ + BasicAuth: &config.BasicAuth{ + Username: "pmm", + Password: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + }, + }, + ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ + StaticConfigs: []*config.Group{{ + Targets: []string{"4.5.6.7:12345"}, + Labels: map[string]string{ + "_some_agent_label": "baz", + "_some_node_label": "foo", + "_some_service_label": "bar", + "agent_id": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "agent_type": "postgres_exporter", + "instance": "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", + "node_id": "/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d", + "node_name": "node_name", + "service_id": "/service_id/014647c3-b2f5-44eb-94f4-d943260a968c", + }, + }}, + }, + Params: nil, }} actual, err := scrapeConfigsForPostgresExporter(s, &scrapeConfigParams{ @@ -879,7 +976,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "proxysql_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", + JobName: "proxysql_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -1061,7 +1158,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", + JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ @@ -1109,7 +1206,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", + JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/some-metric-path", @@ -1159,10 +1256,11 @@ func TestScrapeConfig(t *testing.T) { } _, err := scrapeConfigsForMongoDBExporter(s, &scrapeConfigParams{ - host: "4.5.6.7", - node: node, - service: service, - agent: agent, + host: "4.5.6.7", + node: node, + service: service, + agent: agent, + pmmAgentVersion: version.MustParse("2.26.0"), }) require.EqualError(t, err, "failed to decode custom labels: unexpected end of JSON input") }) diff --git a/services/victoriametrics/victoriametrics_test.go b/services/victoriametrics/victoriametrics_test.go index 4fd6f27397..be5a75354a 100644 --- a/services/victoriametrics/victoriametrics_test.go +++ b/services/victoriametrics/victoriametrics_test.go @@ -26,11 +26,14 @@ import ( "github.com/AlekSi/pointer" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "gopkg.in/reform.v1" "gopkg.in/reform.v1/dialects/postgresql" "github.com/percona/pmm-managed/models" "github.com/percona/pmm-managed/utils/testdb" + "github.com/percona/pmm-managed/utils/tests" ) const configPath = "../../testdata/victoriametrics/promscrape.yml" @@ -57,7 +60,7 @@ func teardown(t *testing.T, db *reform.DB, svc *Service, original []byte) { t.Helper() check := assert.New(t) - check.NoError(ioutil.WriteFile(configPath, original, 0600)) + check.NoError(ioutil.WriteFile(configPath, original, 0o600)) check.NoError(svc.reload(context.Background())) check.NoError(db.DBInterface().(*sql.DB).Close()) @@ -102,6 +105,7 @@ func TestVictoriaMetrics(t *testing.T) { AgentID: "/agent_id/217907dc-d34d-4e2e-aa84-a1b765d49853", AgentType: models.PMMAgentType, RunsOnNodeID: pointer.ToString("/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d"), + Version: pointer.ToString("2.26.0"), }, // listen port not known @@ -133,6 +137,26 @@ func TestVictoriaMetrics(t *testing.T) { CustomLabels: []byte(`{"_service_label": "bar"}`), }, + &models.Service{ + ServiceID: "/service_id/acds89846-3cd2-47f8-a5f9-ac789513cde4", + ServiceType: models.MongoDBServiceType, + ServiceName: "test-mongodb", + NodeID: "/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d", + Address: pointer.ToString("5.6.7.8"), + Port: pointer.ToUint16(27017), + CustomLabels: []byte(`{"_service_label": "bam"}`), + }, + + &models.Agent{ + AgentID: "/agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb", + AgentType: models.MongoDBExporterType, + PMMAgentID: pointer.ToString("/agent_id/217907dc-d34d-4e2e-aa84-a1b765d49853"), + ServiceID: pointer.ToString("/service_id/acds89846-3cd2-47f8-a5f9-ac789513cde4"), + CustomLabels: []byte(`{"_agent_label": "mongodb-baz"}`), + ListenPort: pointer.ToUint16(12346), + MongoDBOptions: &models.MongoDBOptions{EnableAllCollectors: true}, + }, + &models.Agent{ AgentID: "/agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd", AgentType: models.MySQLdExporterType, @@ -179,6 +203,47 @@ func TestVictoriaMetrics(t *testing.T) { Disabled: true, ListenPort: pointer.ToUint16(12345), }, + + // PMM Agent without version + &models.Agent{ + AgentID: "/agent_id/892b3d86-12e5-4765-aa32-e5092ecd78e1", + AgentType: models.PMMAgentType, + RunsOnNodeID: pointer.ToString("/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d"), + }, + + &models.Service{ + ServiceID: "/service_id/1eae647b-f1e2-4e15-bc58-dfdbc3c37cbf", + ServiceType: models.MongoDBServiceType, + ServiceName: "test-mongodb-noversion", + NodeID: "/node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d", + Address: pointer.ToString("5.6.7.9"), + Port: pointer.ToUint16(27017), + CustomLabels: []byte(`{"_service_label": "bam"}`), + }, + + // Agent with push model + &models.Agent{ + AgentID: "/agent_id/386c4ce6-7cd2-4bc9-9d6f-b4691c6e7eb7", + AgentType: models.MongoDBExporterType, + PMMAgentID: pointer.ToString("/agent_id/892b3d86-12e5-4765-aa32-e5092ecd78e1"), + ServiceID: pointer.ToString("/service_id/1eae647b-f1e2-4e15-bc58-dfdbc3c37cbf"), + CustomLabels: []byte(`{"_agent_label": "mongodb-baz-push"}`), + ListenPort: pointer.ToUint16(12346), + MongoDBOptions: &models.MongoDBOptions{EnableAllCollectors: true}, + PushMetrics: true, + }, + + // Agent with pull model + &models.Agent{ + AgentID: "/agent_id/cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8", + AgentType: models.MongoDBExporterType, + PMMAgentID: pointer.ToString("/agent_id/892b3d86-12e5-4765-aa32-e5092ecd78e1"), + ServiceID: pointer.ToString("/service_id/1eae647b-f1e2-4e15-bc58-dfdbc3c37cbf"), + CustomLabels: []byte(`{"_agent_label": "mongodb-baz-pull"}`), + ListenPort: pointer.ToUint16(12346), + MongoDBOptions: &models.MongoDBOptions{EnableAllCollectors: true}, + PushMetrics: false, + }, } { check.NoError(db.Insert(str), "%+v", str) } @@ -195,7 +260,7 @@ scrape_configs: - job_name: victoriametrics honor_timestamps: false scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /prometheus/metrics static_configs: - targets: @@ -205,7 +270,7 @@ scrape_configs: - job_name: vmalert honor_timestamps: false scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /metrics static_configs: - targets: @@ -252,7 +317,89 @@ scrape_configs: - 127.0.0.1:9933 labels: instance: pmm-server - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr + - job_name: mongodb_exporter_agent_id_cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8_hr-5s + honor_timestamps: false + scrape_interval: 5s + scrape_timeout: 4500ms + metrics_path: /metrics + static_configs: + - targets: + - 1.2.3.4:12346 + labels: + _agent_label: mongodb-baz-pull + _node_label: foo + _service_label: bam + agent_id: /agent_id/cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8 + agent_type: mongodb_exporter + instance: /agent_id/cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8 + node_id: /node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d + node_name: test-generic-node + node_type: generic + service_id: /service_id/1eae647b-f1e2-4e15-bc58-dfdbc3c37cbf + service_name: test-mongodb-noversion + service_type: mongodb + basic_auth: + username: pmm + password: /agent_id/cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8 + - job_name: mongodb_exporter_agent_id_ecd8995a-d479-4b4d-bfb7-865bac4ac2fb_hr-5s + honor_timestamps: false + params: + collect[]: + - diagnosticdata + - replicasetstatus + - topmetrics + scrape_interval: 5s + scrape_timeout: 4500ms + metrics_path: /metrics + static_configs: + - targets: + - 1.2.3.4:12346 + labels: + _agent_label: mongodb-baz + _node_label: foo + _service_label: bam + agent_id: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb + agent_type: mongodb_exporter + instance: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb + node_id: /node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d + node_name: test-generic-node + node_type: generic + service_id: /service_id/acds89846-3cd2-47f8-a5f9-ac789513cde4 + service_name: test-mongodb + service_type: mongodb + basic_auth: + username: pmm + password: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb + - job_name: mongodb_exporter_agent_id_ecd8995a-d479-4b4d-bfb7-865bac4ac2fb_lr-1m0s + honor_timestamps: false + params: + collect[]: + - collstats + - dbstats + - indexstats + scrape_interval: 1m + scrape_timeout: 54s + metrics_path: /metrics + static_configs: + - targets: + - 1.2.3.4:12346 + labels: + _agent_label: mongodb-baz + _node_label: foo + _service_label: bam + agent_id: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb + agent_type: mongodb_exporter + instance: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb + node_id: /node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d + node_name: test-generic-node + node_type: generic + service_id: /service_id/acds89846-3cd2-47f8-a5f9-ac789513cde4 + service_name: test-mongodb + service_type: mongodb + basic_auth: + username: pmm + password: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s honor_timestamps: false params: collect[]: @@ -262,7 +409,7 @@ scrape_configs: - standard.go - standard.process scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /metrics static_configs: - targets: @@ -283,7 +430,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-10s honor_timestamps: false params: collect[]: @@ -319,7 +466,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s honor_timestamps: false params: collect[]: @@ -360,7 +507,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_hr + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_hr-5s honor_timestamps: false params: collect[]: @@ -370,7 +517,7 @@ scrape_configs: - standard.go - standard.process scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /metrics static_configs: - targets: @@ -391,7 +538,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_mr + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_mr-10s honor_timestamps: false params: collect[]: @@ -427,7 +574,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_lr + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_lr-1m0s honor_timestamps: false params: collect[]: @@ -468,16 +615,72 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_hr + - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_hr-5s honor_timestamps: false params: collect[]: - - custom_query + - custom_query.hr - exporter - standard.go - standard.process scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms + metrics_path: /metrics + static_configs: + - targets: + - 1.2.3.4:12345 + labels: + _agent_label: postgres-baz + _node_label: foo + _service_label: bar + agent_id: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac + agent_type: postgres_exporter + instance: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac + node_id: /node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d + node_name: test-generic-node + node_type: generic + service_id: /service_id/9cffbdd4-3cd2-47f8-a5f9-a749c3d5fee1 + service_name: test-postgresql + service_type: postgresql + basic_auth: + username: pmm + password: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac + stream_parse: true + - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_mr-10s + honor_timestamps: false + params: + collect[]: + - custom_query.mr + scrape_interval: 10s + scrape_timeout: 9s + metrics_path: /metrics + static_configs: + - targets: + - 1.2.3.4:12345 + labels: + _agent_label: postgres-baz + _node_label: foo + _service_label: bar + agent_id: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac + agent_type: postgres_exporter + instance: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac + node_id: /node_id/cc663f36-18ca-40a1-aea9-c6310bb4738d + node_name: test-generic-node + node_type: generic + service_id: /service_id/9cffbdd4-3cd2-47f8-a5f9-a749c3d5fee1 + service_name: test-postgresql + service_type: postgresql + basic_auth: + username: pmm + password: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac + stream_parse: true + - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_lr-1m0s + honor_timestamps: false + params: + collect[]: + - custom_query.lr + scrape_interval: 1m + scrape_timeout: 54s metrics_path: /metrics static_configs: - targets: @@ -520,7 +723,7 @@ scrape_configs: - job_name: victoriametrics honor_timestamps: false scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /prometheus/metrics static_configs: - targets: @@ -530,7 +733,7 @@ scrape_configs: - job_name: vmalert honor_timestamps: false scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /metrics static_configs: - targets: @@ -555,19 +758,20 @@ scrape_configs: assert.Errorf(t, err, "error when checking Prometheus config") }) - t.Run("Good scrape config file with unsupported params", func(t *testing.T) { + t.Run("Scrape config file with unknown params", func(t *testing.T) { err := svc.configAndReload(context.TODO(), []byte(strings.TrimSpace(` # Managed by pmm-managed. DO NOT EDIT. --- global: scrape_interval: 1m scrape_timeout: 54s -remote_write: -- url: http://some-remote-url -remote_read: -- url: http://some-remote-read-url +unknown_filed: unknown_value + `))) - assert.NoError(t, err) + tests.AssertGRPCError(t, status.New(codes.Aborted, + "yaml: unmarshal errors:\n line 6: field unknown_filed not found in type promscrape.Config;"+ + " pass -promscrape.config.strictParse=false command-line flag for ignoring unknown fields in yaml config\n", + ), err) }) } @@ -587,7 +791,7 @@ scrape_configs: - job_name: external-service honor_timestamps: true scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /metrics scheme: http static_configs: @@ -598,7 +802,7 @@ scrape_configs: - job_name: victoriametrics honor_timestamps: false scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /prometheus/metrics static_configs: - targets: @@ -608,7 +812,7 @@ scrape_configs: - job_name: vmalert honor_timestamps: false scrape_interval: 5s - scrape_timeout: 4s + scrape_timeout: 4500ms metrics_path: /metrics static_configs: - targets: From 7966a55c555ea1a0b82ae86ea52df0eed2674995 Mon Sep 17 00:00:00 2001 From: Pavel Khripkov Date: Wed, 1 Jun 2022 17:20:43 +0300 Subject: [PATCH 7/7] PMM-9510 Fix tests. --- .../victoriametrics/scrape_configs_test.go | 42 +++++++++---------- .../victoriametrics/victoriametrics_test.go | 24 +++++------ 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/services/victoriametrics/scrape_configs_test.go b/services/victoriametrics/scrape_configs_test.go index efb1481bdb..e2359634a9 100644 --- a/services/victoriametrics/scrape_configs_test.go +++ b/services/victoriametrics/scrape_configs_test.go @@ -56,7 +56,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -99,7 +99,7 @@ func TestScrapeConfig(t *testing.T) { "vmstat", }}, }, { - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -128,7 +128,7 @@ func TestScrapeConfig(t *testing.T) { "textfile.mr", }}, }, { - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -189,7 +189,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "node_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -258,7 +258,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -292,7 +292,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -331,7 +331,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -411,7 +411,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -444,7 +444,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -481,7 +481,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -557,7 +557,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -588,7 +588,7 @@ func TestScrapeConfig(t *testing.T) { "standard.process", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -623,7 +623,7 @@ func TestScrapeConfig(t *testing.T) { "slave_status", }}, }, { - JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -714,7 +714,7 @@ func TestScrapeConfig(t *testing.T) { expected := []*config.ScrapeConfig{ { - JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -744,7 +744,7 @@ func TestScrapeConfig(t *testing.T) { }}, }, }, { - JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "mongodb_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -832,7 +832,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -864,7 +864,7 @@ func TestScrapeConfig(t *testing.T) { "standard.go", }}, }, { - JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.MR), ScrapeTimeout: scrapeTimeout(s.MR), MetricsPath: "/metrics", @@ -894,7 +894,7 @@ func TestScrapeConfig(t *testing.T) { "custom_query.mr", }}, }, { - JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s", + JobName: "postgres_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr", ScrapeInterval: config.Duration(s.LR), ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", @@ -976,7 +976,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "proxysql_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s", + JobName: "proxysql_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/metrics", @@ -1158,7 +1158,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), ServiceDiscoveryConfig: config.ServiceDiscoveryConfig{ @@ -1206,7 +1206,7 @@ func TestScrapeConfig(t *testing.T) { } expected := []*config.ScrapeConfig{{ - JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-5s", + JobName: "external-exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr", ScrapeInterval: config.Duration(s.HR), ScrapeTimeout: scrapeTimeout(s.HR), MetricsPath: "/some-metric-path", diff --git a/services/victoriametrics/victoriametrics_test.go b/services/victoriametrics/victoriametrics_test.go index be5a75354a..f3b54cfc1b 100644 --- a/services/victoriametrics/victoriametrics_test.go +++ b/services/victoriametrics/victoriametrics_test.go @@ -317,7 +317,7 @@ scrape_configs: - 127.0.0.1:9933 labels: instance: pmm-server - - job_name: mongodb_exporter_agent_id_cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8_hr-5s + - job_name: mongodb_exporter_agent_id_cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8_hr honor_timestamps: false scrape_interval: 5s scrape_timeout: 4500ms @@ -341,7 +341,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/cfec996c-4fe6-41d9-83cb-e1a3b1fe10a8 - - job_name: mongodb_exporter_agent_id_ecd8995a-d479-4b4d-bfb7-865bac4ac2fb_hr-5s + - job_name: mongodb_exporter_agent_id_ecd8995a-d479-4b4d-bfb7-865bac4ac2fb_hr honor_timestamps: false params: collect[]: @@ -370,7 +370,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb - - job_name: mongodb_exporter_agent_id_ecd8995a-d479-4b4d-bfb7-865bac4ac2fb_lr-1m0s + - job_name: mongodb_exporter_agent_id_ecd8995a-d479-4b4d-bfb7-865bac4ac2fb_lr honor_timestamps: false params: collect[]: @@ -399,7 +399,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/ecd8995a-d479-4b4d-bfb7-865bac4ac2fb - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr-5s + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_hr honor_timestamps: false params: collect[]: @@ -430,7 +430,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr-10s + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_mr honor_timestamps: false params: collect[]: @@ -466,7 +466,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr-1m0s + - job_name: mysqld_exporter_agent_id_75bb30d3-ef4a-4147-97a8-621a996611dd_lr honor_timestamps: false params: collect[]: @@ -507,7 +507,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/75bb30d3-ef4a-4147-97a8-621a996611dd - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_hr-5s + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_hr honor_timestamps: false params: collect[]: @@ -538,7 +538,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_mr-10s + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_mr honor_timestamps: false params: collect[]: @@ -574,7 +574,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_lr-1m0s + - job_name: mysqld_exporter_agent_id_f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a_lr honor_timestamps: false params: collect[]: @@ -615,7 +615,7 @@ scrape_configs: basic_auth: username: pmm password: /agent_id/f9ab9f7b-5e53-4952-a2e7-ff25fb90fe6a - - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_hr-5s + - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_hr honor_timestamps: false params: collect[]: @@ -646,7 +646,7 @@ scrape_configs: username: pmm password: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac stream_parse: true - - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_mr-10s + - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_mr honor_timestamps: false params: collect[]: @@ -674,7 +674,7 @@ scrape_configs: username: pmm password: /agent_id/29e14468-d479-4b4d-bfb7-4ac2fb865bac stream_parse: true - - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_lr-1m0s + - job_name: postgres_exporter_agent_id_29e14468-d479-4b4d-bfb7-4ac2fb865bac_lr honor_timestamps: false params: collect[]: