From c0f1ea7010220bb56e32a97710bd3e4f70dc9a56 Mon Sep 17 00:00:00 2001 From: gusakk Date: Fri, 4 May 2018 14:06:41 +0300 Subject: [PATCH] added possibility to select exporter's metric prefix for each of exporters --- cmd/load_exporter/main.go | 4 +++- cmd/load_exporter_static/main.go | 4 +++- loadgen/collectors.go | 9 +++++---- prombench.go | 7 ++++--- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/cmd/load_exporter/main.go b/cmd/load_exporter/main.go index 9bcfff9..ce74b15 100644 --- a/cmd/load_exporter/main.go +++ b/cmd/load_exporter/main.go @@ -25,10 +25,12 @@ func main() { "how many metrics to expose per exporter") labelCount = flag.Int("label-count", 100, "how many labels to create per metric") + metricNamePrefix = flag.String("metric-prefix", "test", + "Metric's prefix for each metric of this exporter.") ) flag.Parse() - tc := loadgen.NewIncCollector(*metricCount, *labelCount) + tc := loadgen.NewIncCollector(*metricCount, *labelCount, *metricNamePrefix) prometheus.MustRegister(tc) sigchan := make(chan os.Signal, 1) signal.Notify(sigchan, syscall.SIGTERM) diff --git a/cmd/load_exporter_static/main.go b/cmd/load_exporter_static/main.go index ab99ff0..6be5901 100644 --- a/cmd/load_exporter_static/main.go +++ b/cmd/load_exporter_static/main.go @@ -25,10 +25,12 @@ func main() { "how many metrics to expose per exporter") labelCount = flag.Int("label-count", 100, "how many labels to create per metric") + metricNamePrefix = flag.String("metric-prefix", "test", + "Metric's prefix for each metric of this exporter.") ) flag.Parse() - tc := loadgen.NewStaticCollector(*metricCount, *labelCount) + tc := loadgen.NewStaticCollector(*metricCount, *labelCount, *metricNamePrefix) prometheus.MustRegister(tc) sigchan := make(chan os.Signal, 1) signal.Notify(sigchan, syscall.SIGTERM) diff --git a/loadgen/collectors.go b/loadgen/collectors.go index 2c3837c..2581057 100644 --- a/loadgen/collectors.go +++ b/loadgen/collectors.go @@ -5,6 +5,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "math/rand" "strconv" + "strings" ) type ( @@ -15,10 +16,10 @@ type ( } ) -func NewIncCollector(nmetrics, nlabels int) *incCollector { +func NewIncCollector(nmetrics, nlabels int, metricNamePrefix string) *incCollector { descs := make([]*prometheus.Desc, nmetrics) for i := 0; i < nmetrics; i++ { - metname := fmt.Sprintf("test%d", i) + metname := strings.Join([]string{metricNamePrefix, strconv.Itoa(i)}, "") descs[i] = prometheus.NewDesc(metname, metname, []string{"lab"}, nil) } return &incCollector{descs: descs, labelCount: nlabels} @@ -55,11 +56,11 @@ type ( } ) -func NewStaticCollector(nmetrics, nlabels int) *staticCollector { +func NewStaticCollector(nmetrics, nlabels int, metricNamePrefix string) *staticCollector { descs := make([]*prometheus.Desc, nmetrics) metrics := make([]prometheus.Metric, 0, nlabels*nmetrics) for i := 0; i < nmetrics; i++ { - metname := fmt.Sprintf("test%d", i) + metname := strings.Join([]string{metricNamePrefix, strconv.Itoa(i)}, "") desc := prometheus.NewDesc(metname, metname, []string{"lab"}, nil) descs[i] = desc for j := 0; j < nlabels; j++ { diff --git a/prombench.go b/prombench.go index 4d37201..4d3e719 100644 --- a/prombench.go +++ b/prombench.go @@ -431,18 +431,19 @@ func startRunInterval(ctx context.Context, ri RunIntervalSpec) func() { func startExporters(le loadgen.LoadExporter, esl ExporterSpecList, firstPort int) int { log.Printf("starting exporters: %s", esl.String()) exporterCount := 0 + metricPrefix := "test" for _, exporterSpec := range esl { for i := 0; i < exporterSpec.Count; i++ { var exporter loadgen.HttpExporter switch exporterSpec.Exporter { case ExporterInc: - exporter = loadgen.NewHttpExporter(loadgen.NewIncCollector(100, 100)) + exporter = loadgen.NewHttpExporter(loadgen.NewIncCollector(100, 100, metricPrefix)) case ExporterStatic: - exporter = loadgen.NewHttpExporter(loadgen.NewStaticCollector(100, 100)) + exporter = loadgen.NewHttpExporter(loadgen.NewStaticCollector(100, 100, metricPrefix)) case ExporterRandCyclic: exporter = loadgen.NewHttpExporter(loadgen.NewRandCyclicCollector(100, 100, 100000)) case ExporterOscillate: - exporter = loadgen.NewReplayHandler(loadgen.NewHttpExporter(loadgen.NewIncCollector(100, 100))) + exporter = loadgen.NewReplayHandler(loadgen.NewHttpExporter(loadgen.NewIncCollector(100, 100, metricPrefix))) default: log.Fatalf("invalid exporter '%s'", exporterSpec.Exporter) }