From 979db46a7f0946e4dfc9a3f613e802ba1c325c30 Mon Sep 17 00:00:00 2001 From: weekface Date: Tue, 30 Jun 2020 17:44:08 +0800 Subject: [PATCH] cherry pick #2835 to release-1.1 Signed-off-by: ti-srebot --- pkg/monitor/monitor/template.go | 66 +++++- pkg/monitor/monitor/template_test.go | 291 ++++++++++++++++++++++++++- 2 files changed, 345 insertions(+), 12 deletions(-) diff --git a/pkg/monitor/monitor/template.go b/pkg/monitor/monitor/template.go index d1ca2f8f4f..19d2885b59 100644 --- a/pkg/monitor/monitor/template.go +++ b/pkg/monitor/monitor/template.go @@ -40,17 +40,20 @@ const ( ) var ( - truePattern config.Regexp - allMatchPattern config.Regexp - portPattern config.Regexp - tikvPattern config.Regexp - pdPattern config.Regexp - tidbPattern config.Regexp - addressPattern config.Regexp - tiflashPattern config.Regexp - pumpPattern config.Regexp - drainerPattern config.Regexp - dashBoardConfig = `{ + truePattern config.Regexp + allMatchPattern config.Regexp + portPattern config.Regexp + tikvPattern config.Regexp + pdPattern config.Regexp + tidbPattern config.Regexp + addressPattern config.Regexp + tiflashPattern config.Regexp + pumpPattern config.Regexp + drainerPattern config.Regexp + cdcPattern config.Regexp + importerPattern config.Regexp + lightningPattern config.Regexp + dashBoardConfig = `{ "apiVersion": 1, "providers": [ { @@ -108,6 +111,18 @@ func init() { if err != nil { klog.Fatalf("monitor regex template parse error,%v", err) } + cdcPattern, err = config.NewRegexp("ticdc") + if err != nil { + klog.Fatalf("monitor regex template parse error,%v", err) + } + importerPattern, err = config.NewRegexp("importer") + if err != nil { + klog.Fatalf("monitor regex template parse error,%v", err) + } + lightningPattern, err = config.NewRegexp("tidb-lightning") + if err != nil { + klog.Fatalf("monitor regex template parse error,%v", err) + } } type MonitorConfigModel struct { @@ -134,6 +149,9 @@ func newPrometheusConfig(cmodel *MonitorConfigModel) *config.Config { scrapeJob("tiflash-proxy", tiflashPattern, cmodel, buildAddressRelabelConfigByComponent("tiflash-proxy")), scrapeJob("pump", pumpPattern, cmodel, buildAddressRelabelConfigByComponent("pump")), scrapeJob("drainer", drainerPattern, cmodel, buildAddressRelabelConfigByComponent("drainer")), + scrapeJob("ticdc", cdcPattern, cmodel, buildAddressRelabelConfigByComponent("ticdc")), + scrapeJob("importer", importerPattern, cmodel, buildAddressRelabelConfigByComponent("importer")), + scrapeJob("lightning", lightningPattern, cmodel, buildAddressRelabelConfigByComponent("lightning")), }, } return &c @@ -164,6 +182,8 @@ func buildAddressRelabelConfigByComponent(kind string) *config.RelabelConfig { return f() case "tiflash": return f() + case "ticdc": + return f() case "tiflash-proxy": return &config.RelabelConfig{ Action: config.RelabelReplace, @@ -188,6 +208,18 @@ func buildAddressRelabelConfigByComponent(kind string) *config.RelabelConfig { portLabel, }, } + case "importer": + return &config.RelabelConfig{ + Action: config.RelabelReplace, + Regex: addressPattern, + Replacement: "$1.$2-importer:$3", + TargetLabel: "__address__", + SourceLabels: model.LabelNames{ + podNameLabel, + instanceLabel, + portLabel, + }, + } case "drainer": return &config.RelabelConfig{ Action: config.RelabelReplace, @@ -200,6 +232,18 @@ func buildAddressRelabelConfigByComponent(kind string) *config.RelabelConfig { portLabel, }, } + case "lightning": + return &config.RelabelConfig{ + Action: config.RelabelReplace, + Regex: addressPattern, + Replacement: "$2:$3", + TargetLabel: "__address__", + SourceLabels: model.LabelNames{ + podNameLabel, + nameLabel, + portLabel, + }, + } default: return &config.RelabelConfig{ SourceLabels: model.LabelNames{ diff --git a/pkg/monitor/monitor/template_test.go b/pkg/monitor/monitor/template_test.go index 44403f2005..11aaf10128 100644 --- a/pkg/monitor/monitor/template_test.go +++ b/pkg/monitor/monitor/template_test.go @@ -14,9 +14,10 @@ package monitor import ( + "testing" + . "github.com/onsi/gomega" "github.com/prometheus/prometheus/config" - "testing" ) func TestRenderPrometheusConfig(t *testing.T) { @@ -369,6 +370,150 @@ scrape_configs: - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] target_label: cluster action: replace +- job_name: ticdc + honor_labels: true + scrape_interval: 15s + scheme: http + kubernetes_sd_configs: + - api_server: null + role: pod + namespaces: + names: + - ns1 + - ns2 + tls_config: + insecure_skip_verify: true + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: target + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + regex: ticdc + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + regex: "true" + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_pod_label_app_kubernetes_io_instance, + __meta_kubernetes_pod_annotation_prometheus_io_port] + regex: (.+);(.+);(.+) + target_label: __address__ + replacement: $1.$2-ticdc-peer:$3 + action: replace + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace +- job_name: importer + honor_labels: true + scrape_interval: 15s + scheme: http + kubernetes_sd_configs: + - api_server: null + role: pod + namespaces: + names: + - ns1 + - ns2 + tls_config: + insecure_skip_verify: true + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: target + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + regex: importer + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + regex: "true" + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_pod_label_app_kubernetes_io_instance, + __meta_kubernetes_pod_annotation_prometheus_io_port] + regex: (.+);(.+);(.+) + target_label: __address__ + replacement: $1.$2-importer:$3 + action: replace + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace +- job_name: lightning + honor_labels: true + scrape_interval: 15s + scheme: http + kubernetes_sd_configs: + - api_server: null + role: pod + namespaces: + names: + - ns1 + - ns2 + tls_config: + insecure_skip_verify: true + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: target + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + regex: tidb-lightning + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + regex: "true" + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_pod_label_app_kubernetes_io_name, + __meta_kubernetes_pod_annotation_prometheus_io_port] + regex: (.+);(.+);(.+) + target_label: __address__ + replacement: $2:$3 + action: replace + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace ` model := &MonitorConfigModel{ ReleaseTargetRegex: &target, @@ -744,6 +889,150 @@ scrape_configs: - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] target_label: cluster action: replace +- job_name: ticdc + honor_labels: true + scrape_interval: 15s + scheme: http + kubernetes_sd_configs: + - api_server: null + role: pod + namespaces: + names: + - ns1 + - ns2 + tls_config: + insecure_skip_verify: true + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: target + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + regex: ticdc + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + regex: "true" + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_pod_label_app_kubernetes_io_instance, + __meta_kubernetes_pod_annotation_prometheus_io_port] + regex: (.+);(.+);(.+) + target_label: __address__ + replacement: $1.$2-ticdc-peer:$3 + action: replace + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace +- job_name: importer + honor_labels: true + scrape_interval: 15s + scheme: http + kubernetes_sd_configs: + - api_server: null + role: pod + namespaces: + names: + - ns1 + - ns2 + tls_config: + insecure_skip_verify: true + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: target + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + regex: importer + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + regex: "true" + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_pod_label_app_kubernetes_io_instance, + __meta_kubernetes_pod_annotation_prometheus_io_port] + regex: (.+);(.+);(.+) + target_label: __address__ + replacement: $1.$2-importer:$3 + action: replace + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace +- job_name: lightning + honor_labels: true + scrape_interval: 15s + scheme: http + kubernetes_sd_configs: + - api_server: null + role: pod + namespaces: + names: + - ns1 + - ns2 + tls_config: + insecure_skip_verify: true + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: target + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + regex: tidb-lightning + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + regex: "true" + action: keep + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_pod_label_app_kubernetes_io_name, + __meta_kubernetes_pod_annotation_prometheus_io_port] + regex: (.+);(.+);(.+) + target_label: __address__ + replacement: $2:$3 + action: replace + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace + - source_labels: [__meta_kubernetes_pod_name] + target_label: instance + action: replace + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + target_label: cluster + action: replace ` model := &MonitorConfigModel{ ReleaseTargetRegex: &target,