From 25a0f89e96d0674c8591ca7677cc8d82993dc7d8 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Wed, 14 Apr 2021 16:14:49 +0200 Subject: [PATCH 1/3] Add harcoded namespace to spanmetrics --- pkg/tempo/config.go | 28 +++++++++++++++++++++++++--- pkg/tempo/config_test.go | 2 +- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/pkg/tempo/config.go b/pkg/tempo/config.go index 8d73e04cfa94..58f879618e06 100644 --- a/pkg/tempo/config.go +++ b/pkg/tempo/config.go @@ -161,8 +161,20 @@ type SpanMetricsConfig struct { LatencyHistogramBuckets []time.Duration `yaml:"latency_histogram_buckets,omitempty"` Dimensions []spanmetricsprocessor.Dimension `yaml:"dimensions,omitempty"` - // Configuration for Prometheus exporter: https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34/exporter/prometheusexporter/README.md. - MetricsExporter map[string]interface{} `yaml:"metrics_exporter,omitempty"` + // MetricsExporter is a Prometheus metrics exporter + MetricsExporter metricsExporterConfig `yaml:"metrics_exporter,omitempty"` +} + +// Configuration for Prometheus exporter: https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34/exporter/prometheusexporter/README.md. +type metricsExporterConfig struct { + // The address on which the Prometheus scrape handler will be run on. + Endpoint string `yaml:"endpoint"` + // Namespace if set, exports metrics under the provided value. + Namespace string `yaml:"namespace"` + // ConstLabels are values that are applied for every exported metric. + ConstLabels map[string]interface{} `yaml:"const_labels"` + // SendTimestamps will send the underlying scrape timestamp with the export + SendTimestamps bool `yaml:"send_timestamps"` } // exporter builds an OTel exporter from RemoteWriteConfig @@ -300,7 +312,17 @@ func (c *InstanceConfig) otelConfig() (*configmodels.Config, error) { if c.SpanMetrics != nil { // Configure the metrics exporter. - exporters[defaultSpanMetricsExporter] = c.SpanMetrics.MetricsExporter + namespace := "tempo_spanmetrics" + if len(c.SpanMetrics.MetricsExporter.Namespace) != 0 { + namespace = fmt.Sprintf("%s_%s", c.SpanMetrics.MetricsExporter.Namespace, namespace) + } + + exporters[defaultSpanMetricsExporter] = map[string]interface{}{ + "endpoint": c.SpanMetrics.MetricsExporter.Endpoint, + "namespace": namespace, + "const_labels": c.SpanMetrics.MetricsExporter.ConstLabels, + "send_timestamps": c.SpanMetrics.MetricsExporter.SendTimestamps, + } processorNames = append(processorNames, "spanmetrics") processors["spanmetrics"] = map[string]interface{}{ diff --git a/pkg/tempo/config_test.go b/pkg/tempo/config_test.go index b145cb4951e7..c2eaffebb968 100644 --- a/pkg/tempo/config_test.go +++ b/pkg/tempo/config_test.go @@ -465,7 +465,7 @@ exporters: max_elapsed_time: 60s prometheus: endpoint: "0.0.0.0:8889" - namespace: promexample + namespace: promexample_tempo_spanmetrics processors: spanmetrics: metrics_exporter: prometheus From 1334e30b2806b9bde0302cc02eaad466180c9191 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Wed, 14 Apr 2021 16:43:04 +0200 Subject: [PATCH 2/3] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c022d842f42..ecaf74f8f5ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ cross-compilation issue, but will return in v0.13.0. - [ENHANCEMENT] Add `headers` field in `remote_write` config for Tempo. `headers` specifies HTTP headers to forward to the remote endpoint. (@alexbiehl) +- [CHANGE] Add `tempo_spanmetrics` namespace in spanmetrics (@mapno) # v0.13.1 (2021-04-09) From 032666179f4d6646fa51a67d381deaa409709e5c Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Wed, 14 Apr 2021 21:51:58 +0200 Subject: [PATCH 3/3] Specify namespace default in docs --- docs/configuration-reference.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/configuration-reference.md b/docs/configuration-reference.md index 80e04c2521fd..54ee4a453058 100644 --- a/docs/configuration-reference.md +++ b/docs/configuration-reference.md @@ -2074,6 +2074,8 @@ spanmetrics: metrics_exporter: [ endpoint: ] [ const_labels: ] + # Metrics are namespaced to `tempo_spanmetrics` by default. + # They can be further namespaced, i.e. `{namespace}_tempo_spanmetrics` [ namespace: ] [ send_timestamps: ] ```