Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions lib/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"github.com/armon/go-metrics/prometheus"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-multierror"
prometheuscore "github.com/prometheus/client_golang/prometheus"

"github.com/hashicorp/consul/lib/retry"
)
Expand Down Expand Up @@ -258,20 +259,27 @@ func dogstatdSink(cfg TelemetryConfig, hostname string) (metrics.MetricSink, err
return sink, nil
}

func prometheusSink(cfg TelemetryConfig, hostname string) (metrics.MetricSink, error) {
func prometheusSink(cfg TelemetryConfig, _ string) (metrics.MetricSink, error) {

if cfg.PrometheusOpts.Expiration.Nanoseconds() < 1 {
return nil, nil
}

sink, err := prometheus.NewPrometheusSinkFrom(cfg.PrometheusOpts)
if err != nil {
// During testing we may try to register the same metrics collector
// multiple times in a single run (e.g. a metrics test fails and
// we attempt a retry), resulting in an AlreadyRegisteredError.
// Suppress this and move on.
if errors.As(err, &prometheuscore.AlreadyRegisteredError{}) {
return nil, nil
}
return nil, err
}
return sink, nil
}

func circonusSink(cfg TelemetryConfig, hostname string) (metrics.MetricSink, error) {
func circonusSink(cfg TelemetryConfig, _ string) (metrics.MetricSink, error) {
token := cfg.CirconusAPIToken
url := cfg.CirconusSubmissionURL
if token == "" && url == "" {
Expand Down Expand Up @@ -337,7 +345,6 @@ func configureSinks(cfg TelemetryConfig, memSink metrics.MetricSink) (metrics.Fa
addSink(statsdSink)
addSink(dogstatdSink)
addSink(circonusSink)
addSink(circonusSink)
addSink(prometheusSink)

if len(sinks) > 0 {
Expand Down