mirror of https://github.com/status-im/consul.git
add config flag to disable 1.9 metrics backwards compatibility. Add warnings on start and reload on default value
This commit is contained in:
parent
f5c51ae13b
commit
7fe2f80b4b
|
@ -592,6 +592,12 @@ func (a *Agent) Start(ctx context.Context) error {
|
|||
go a.retryJoinWAN()
|
||||
}
|
||||
|
||||
// DEPRECATED: Warn users if they're emitting deprecated metrics. Remove this warning and the flagged metrics in a
|
||||
// future release of Consul.
|
||||
if !a.config.Telemetry.DisableCompatOneNine {
|
||||
a.logger.Warn("DEPRECATED Backwards compatibility with pre-1.9 metrics enabled. These metrics will be removed in a future version of Consul. Set `telemetry { disable_compat_1.9 = true }` to disable them.")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -3489,6 +3495,12 @@ func (a *Agent) ReloadConfig() error {
|
|||
// breaking some existing behavior.
|
||||
newCfg.NodeID = a.config.NodeID
|
||||
|
||||
// DEPRECATED: Warn users on reload if they're emitting deprecated metrics. Remove this warning and the flagged
|
||||
// metrics in a future release of Consul.
|
||||
if !a.config.Telemetry.DisableCompatOneNine {
|
||||
a.logger.Warn("DEPRECATED Backwards compatibility with pre-1.9 metrics enabled. These metrics will be removed in a future version of Consul. Set `telemetry { disable_compat_1.9 = true }` to disable them.")
|
||||
}
|
||||
|
||||
return a.reloadConfigInternal(newCfg)
|
||||
}
|
||||
|
||||
|
|
|
@ -936,6 +936,7 @@ func (b *Builder) Build() (rt RuntimeConfig, err error) {
|
|||
CirconusCheckTags: b.stringVal(c.Telemetry.CirconusCheckTags),
|
||||
CirconusSubmissionInterval: b.stringVal(c.Telemetry.CirconusSubmissionInterval),
|
||||
CirconusSubmissionURL: b.stringVal(c.Telemetry.CirconusSubmissionURL),
|
||||
DisableCompatOneNine: b.boolVal(c.Telemetry.DisableCompatOneNine),
|
||||
DisableHostname: b.boolVal(c.Telemetry.DisableHostname),
|
||||
DogstatsdAddr: b.stringVal(c.Telemetry.DogstatsdAddr),
|
||||
DogstatsdTags: c.Telemetry.DogstatsdTags,
|
||||
|
|
|
@ -628,6 +628,7 @@ type Telemetry struct {
|
|||
CirconusCheckTags *string `json:"circonus_check_tags,omitempty" hcl:"circonus_check_tags" mapstructure:"circonus_check_tags"`
|
||||
CirconusSubmissionInterval *string `json:"circonus_submission_interval,omitempty" hcl:"circonus_submission_interval" mapstructure:"circonus_submission_interval"`
|
||||
CirconusSubmissionURL *string `json:"circonus_submission_url,omitempty" hcl:"circonus_submission_url" mapstructure:"circonus_submission_url"`
|
||||
DisableCompatOneNine *bool `json:"disable_compat_1.9,omitempty" hcl:"disable_compat_1.9" mapstructure:"disable_compat_1.9"`
|
||||
DisableHostname *bool `json:"disable_hostname,omitempty" hcl:"disable_hostname" mapstructure:"disable_hostname"`
|
||||
DogstatsdAddr *string `json:"dogstatsd_addr,omitempty" hcl:"dogstatsd_addr" mapstructure:"dogstatsd_addr"`
|
||||
DogstatsdTags []string `json:"dogstatsd_tags,omitempty" hcl:"dogstatsd_tags" mapstructure:"dogstatsd_tags"`
|
||||
|
|
|
@ -5227,7 +5227,8 @@ func TestFullConfig(t *testing.T) {
|
|||
"metrics_prefix": "ftO6DySn",
|
||||
"prometheus_retention_time": "15s",
|
||||
"statsd_address": "drce87cy",
|
||||
"statsite_address": "HpFwKB8R"
|
||||
"statsite_address": "HpFwKB8R",
|
||||
"disable_compat_1.9": true
|
||||
},
|
||||
"tls_cipher_suites": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
|
||||
"tls_min_version": "pAOWafkR",
|
||||
|
@ -5911,6 +5912,7 @@ func TestFullConfig(t *testing.T) {
|
|||
prometheus_retention_time = "15s"
|
||||
statsd_address = "drce87cy"
|
||||
statsite_address = "HpFwKB8R"
|
||||
disable_compat_1.9 = true
|
||||
}
|
||||
tls_cipher_suites = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"
|
||||
tls_min_version = "pAOWafkR"
|
||||
|
@ -6681,6 +6683,7 @@ func TestFullConfig(t *testing.T) {
|
|||
CirconusCheckTags: "prvO4uBl",
|
||||
CirconusSubmissionInterval: "DolzaflP",
|
||||
CirconusSubmissionURL: "gTcbS93G",
|
||||
DisableCompatOneNine: true,
|
||||
DisableHostname: true,
|
||||
DogstatsdAddr: "0wSndumK",
|
||||
DogstatsdTags: []string{"3N81zSUB", "Xtj8AnXZ"},
|
||||
|
@ -7379,6 +7382,7 @@ func TestSanitize(t *testing.T) {
|
|||
"CirconusSubmissionInterval": "",
|
||||
"CirconusSubmissionURL": "",
|
||||
"Disable": false,
|
||||
"DisableCompatOneNine": false,
|
||||
"DisableHostname": false,
|
||||
"DogstatsdAddr": "",
|
||||
"DogstatsdTags": [],
|
||||
|
|
|
@ -195,14 +195,15 @@ func (s *HTTPHandlers) handler(enableDebug bool) http.Handler {
|
|||
start := time.Now()
|
||||
handler(resp, req)
|
||||
|
||||
// This new metric is disabled by default with the prefix_filter option.
|
||||
// It will be enabled by default in a future version.
|
||||
labels := []metrics.Label{{Name: "method", Value: req.Method}, {Name: "path", Value: path_label}}
|
||||
metrics.MeasureSinceWithLabels([]string{"api", "http"}, start, labels)
|
||||
|
||||
// Duplicated information. Kept for backward compatibility.
|
||||
key := append([]string{"http", req.Method}, parts...)
|
||||
metrics.MeasureSince(key, start)
|
||||
// DEPRECATED Emit pre-1.9 metric as `consul.http...` to maintain backwards compatibility. Enabled by
|
||||
// default. Users may set `telemetry { disable_compat_1.9 = true }`
|
||||
if !s.agent.config.Telemetry.DisableCompatOneNine {
|
||||
key := append([]string{"http", req.Method}, parts...)
|
||||
metrics.MeasureSince(key, start)
|
||||
}
|
||||
}
|
||||
|
||||
var gzipHandler http.Handler
|
||||
|
|
|
@ -132,6 +132,11 @@ type TelemetryConfig struct {
|
|||
// hcl: telemetry { circonus_submission_url = string }
|
||||
CirconusSubmissionURL string `json:"circonus_submission_url,omitempty" mapstructure:"circonus_submission_url"`
|
||||
|
||||
// DisableCompatOneNine is a flag to stop emitting metrics that have been deprecated in version 1.9.
|
||||
//
|
||||
// hcl: telemetry { disable_compat_1.9 = (true|false) }
|
||||
DisableCompatOneNine bool `json:"disable_compat_1.9,omitempty" mapstructure:"disable_compat_1.9"`
|
||||
|
||||
// DisableHostname will disable hostname prefixing for all metrics.
|
||||
//
|
||||
// hcl: telemetry { disable_hostname = (true|false)
|
||||
|
|
Loading…
Reference in New Issue