mirror of https://github.com/status-im/consul.git
Metrics service prefix (#3498)
* metrics: replace statsite_prefix with service_prefix The metrics prefix isn't statsite specific and is in fact used for all metrics providers. Since we are deprecating fields anyway we should fix this one as well. Fixes #3293 * Updates docs and sorts telemetry section. * Renames to "metrics_prefix" to disambiguate with Consul services. * Updates the change log.
This commit is contained in:
parent
0975031678
commit
e84c2b2edd
|
@ -47,8 +47,9 @@ BREAKING CHANGES:
|
||||||
| /v1/session/node | GET |
|
| /v1/session/node | GET |
|
||||||
| /v1/status/leader | GET |
|
| /v1/status/leader | GET |
|
||||||
| /v1/status/peers | GET |
|
| /v1/status/peers | GET |
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
* **Renamed `statsite_prefix` to `metrics_prefix` in Telemetry Configuration:** Since the `statsite_prefix` applied to all telemetry providers, `statsite_prefix` was renamed to [`metrics_prefix`](https://www.consul.io/docs/agent/options.html#telemetry-metrics_prefix). Configuration files will need to be updated when upgrading to this version of Consul. [GH-3498]
|
||||||
|
|
||||||
FEATURES:
|
FEATURES:
|
||||||
|
|
||||||
|
|
|
@ -539,9 +539,9 @@ func (b *Builder) Build() (rt RuntimeConfig, err error) {
|
||||||
TelemetryFilterDefault: b.boolVal(c.Telemetry.FilterDefault),
|
TelemetryFilterDefault: b.boolVal(c.Telemetry.FilterDefault),
|
||||||
TelemetryAllowedPrefixes: telemetryAllowedPrefixes,
|
TelemetryAllowedPrefixes: telemetryAllowedPrefixes,
|
||||||
TelemetryBlockedPrefixes: telemetryBlockedPrefixes,
|
TelemetryBlockedPrefixes: telemetryBlockedPrefixes,
|
||||||
|
TelemetryMetricsPrefix: b.stringVal(c.Telemetry.MetricsPrefix),
|
||||||
TelemetryStatsdAddr: b.stringVal(c.Telemetry.StatsdAddr),
|
TelemetryStatsdAddr: b.stringVal(c.Telemetry.StatsdAddr),
|
||||||
TelemetryStatsiteAddr: b.stringVal(c.Telemetry.StatsiteAddr),
|
TelemetryStatsiteAddr: b.stringVal(c.Telemetry.StatsiteAddr),
|
||||||
TelemetryStatsitePrefix: b.stringVal(c.Telemetry.StatsitePrefix),
|
|
||||||
|
|
||||||
// Agent
|
// Agent
|
||||||
AdvertiseAddrLAN: advertiseAddrLAN,
|
AdvertiseAddrLAN: advertiseAddrLAN,
|
||||||
|
|
|
@ -365,9 +365,9 @@ type Telemetry struct {
|
||||||
DogstatsdTags []string `json:"dogstatsd_tags,omitempty" hcl:"dogstatsd_tags" mapstructure:"dogstatsd_tags"`
|
DogstatsdTags []string `json:"dogstatsd_tags,omitempty" hcl:"dogstatsd_tags" mapstructure:"dogstatsd_tags"`
|
||||||
FilterDefault *bool `json:"filter_default,omitempty" hcl:"filter_default" mapstructure:"filter_default"`
|
FilterDefault *bool `json:"filter_default,omitempty" hcl:"filter_default" mapstructure:"filter_default"`
|
||||||
PrefixFilter []string `json:"prefix_filter,omitempty" hcl:"prefix_filter" mapstructure:"prefix_filter"`
|
PrefixFilter []string `json:"prefix_filter,omitempty" hcl:"prefix_filter" mapstructure:"prefix_filter"`
|
||||||
|
MetricsPrefix *string `json:"metrics_prefix,omitempty" hcl:"metrics_prefix" mapstructure:"metrics_prefix"`
|
||||||
StatsdAddr *string `json:"statsd_address,omitempty" hcl:"statsd_address" mapstructure:"statsd_address"`
|
StatsdAddr *string `json:"statsd_address,omitempty" hcl:"statsd_address" mapstructure:"statsd_address"`
|
||||||
StatsiteAddr *string `json:"statsite_address,omitempty" hcl:"statsite_address" mapstructure:"statsite_address"`
|
StatsiteAddr *string `json:"statsite_address,omitempty" hcl:"statsite_address" mapstructure:"statsite_address"`
|
||||||
StatsitePrefix *string `json:"statsite_prefix,omitempty" hcl:"statsite_prefix" mapstructure:"statsite_prefix"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ports struct {
|
type Ports struct {
|
||||||
|
|
|
@ -76,7 +76,7 @@ func DefaultSource() Source {
|
||||||
server = ` + strconv.Itoa(consul.DefaultRPCPort) + `
|
server = ` + strconv.Itoa(consul.DefaultRPCPort) + `
|
||||||
}
|
}
|
||||||
telemetry = {
|
telemetry = {
|
||||||
statsite_prefix = "consul"
|
metrics_prefix = "consul"
|
||||||
filter_default = true
|
filter_default = true
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
|
|
|
@ -66,7 +66,8 @@
|
||||||
// * "recursor" is deprecated. Please use "recursors" instead.
|
// * "recursor" is deprecated. Please use "recursors" instead.
|
||||||
// * "statsd_addr" is deprecated. Please use "telemetry.statsd_addr" instead.
|
// * "statsd_addr" is deprecated. Please use "telemetry.statsd_addr" instead.
|
||||||
// * "statsite_addr" is deprecated. Please use "telemetry.statsite_addr" instead.
|
// * "statsite_addr" is deprecated. Please use "telemetry.statsite_addr" instead.
|
||||||
// * "statsite_prefix" is deprecated. Please use "telemetry.statsite_prefix" instead.
|
// * "statsite_prefix" is deprecated. Please use "telemetry.metrics_prefix" instead.
|
||||||
|
// * "telemetry.statsite_prefix" is deprecated. Please use "telemetry.metrics_prefix" instead.
|
||||||
// * "retry_join_azure" is deprecated. Please use "retry_join" instead.
|
// * "retry_join_azure" is deprecated. Please use "retry_join" instead.
|
||||||
// * "retry_join_ec2" is deprecated. Please use "retry_join" instead.
|
// * "retry_join_ec2" is deprecated. Please use "retry_join" instead.
|
||||||
// * "retry_join_gce" is deprecated. Please use "retry_join" instead.
|
// * "retry_join_gce" is deprecated. Please use "retry_join" instead.
|
||||||
|
|
|
@ -100,9 +100,9 @@ type RuntimeConfig struct {
|
||||||
TelemetryFilterDefault bool
|
TelemetryFilterDefault bool
|
||||||
TelemetryAllowedPrefixes []string
|
TelemetryAllowedPrefixes []string
|
||||||
TelemetryBlockedPrefixes []string
|
TelemetryBlockedPrefixes []string
|
||||||
|
TelemetryMetricsPrefix string
|
||||||
TelemetryStatsdAddr string
|
TelemetryStatsdAddr string
|
||||||
TelemetryStatsiteAddr string
|
TelemetryStatsiteAddr string
|
||||||
TelemetryStatsitePrefix string
|
|
||||||
|
|
||||||
AdvertiseAddrLAN *net.IPAddr
|
AdvertiseAddrLAN *net.IPAddr
|
||||||
AdvertiseAddrWAN *net.IPAddr
|
AdvertiseAddrWAN *net.IPAddr
|
||||||
|
|
|
@ -2254,9 +2254,9 @@ func TestFullConfig(t *testing.T) {
|
||||||
"dogstatsd_tags": [ "3N81zSUB","Xtj8AnXZ" ],
|
"dogstatsd_tags": [ "3N81zSUB","Xtj8AnXZ" ],
|
||||||
"filter_default": true,
|
"filter_default": true,
|
||||||
"prefix_filter": [ "+oJotS8XJ","-cazlEhGn" ],
|
"prefix_filter": [ "+oJotS8XJ","-cazlEhGn" ],
|
||||||
|
"metrics_prefix": "ftO6DySn",
|
||||||
"statsd_address": "drce87cy",
|
"statsd_address": "drce87cy",
|
||||||
"statsite_address": "HpFwKB8R",
|
"statsite_address": "HpFwKB8R"
|
||||||
"statsite_prefix": "ftO6DySn"
|
|
||||||
},
|
},
|
||||||
"tls_cipher_suites": "TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA",
|
"tls_cipher_suites": "TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA",
|
||||||
"tls_min_version": "pAOWafkR",
|
"tls_min_version": "pAOWafkR",
|
||||||
|
@ -2674,9 +2674,9 @@ func TestFullConfig(t *testing.T) {
|
||||||
dogstatsd_tags = [ "3N81zSUB","Xtj8AnXZ" ]
|
dogstatsd_tags = [ "3N81zSUB","Xtj8AnXZ" ]
|
||||||
filter_default = true
|
filter_default = true
|
||||||
prefix_filter = [ "+oJotS8XJ","-cazlEhGn" ]
|
prefix_filter = [ "+oJotS8XJ","-cazlEhGn" ]
|
||||||
|
metrics_prefix = "ftO6DySn"
|
||||||
statsd_address = "drce87cy"
|
statsd_address = "drce87cy"
|
||||||
statsite_address = "HpFwKB8R"
|
statsite_address = "HpFwKB8R"
|
||||||
statsite_prefix = "ftO6DySn"
|
|
||||||
}
|
}
|
||||||
tls_cipher_suites = "TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA"
|
tls_cipher_suites = "TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA"
|
||||||
tls_min_version = "pAOWafkR"
|
tls_min_version = "pAOWafkR"
|
||||||
|
@ -3213,9 +3213,9 @@ func TestFullConfig(t *testing.T) {
|
||||||
TelemetryFilterDefault: true,
|
TelemetryFilterDefault: true,
|
||||||
TelemetryAllowedPrefixes: []string{"oJotS8XJ"},
|
TelemetryAllowedPrefixes: []string{"oJotS8XJ"},
|
||||||
TelemetryBlockedPrefixes: []string{"cazlEhGn"},
|
TelemetryBlockedPrefixes: []string{"cazlEhGn"},
|
||||||
|
TelemetryMetricsPrefix: "ftO6DySn",
|
||||||
TelemetryStatsdAddr: "drce87cy",
|
TelemetryStatsdAddr: "drce87cy",
|
||||||
TelemetryStatsiteAddr: "HpFwKB8R",
|
TelemetryStatsiteAddr: "HpFwKB8R",
|
||||||
TelemetryStatsitePrefix: "ftO6DySn",
|
|
||||||
TLSCipherSuites: []uint16{tls.TLS_RSA_WITH_RC4_128_SHA, tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA},
|
TLSCipherSuites: []uint16{tls.TLS_RSA_WITH_RC4_128_SHA, tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA},
|
||||||
TLSMinVersion: "pAOWafkR",
|
TLSMinVersion: "pAOWafkR",
|
||||||
TLSPreferServerCipherSuites: true,
|
TLSPreferServerCipherSuites: true,
|
||||||
|
|
|
@ -220,7 +220,7 @@ func startupTelemetry(conf *config.RuntimeConfig) (*metrics.InmemSink, error) {
|
||||||
// metrics over stderr when there is a SIGUSR1 received.
|
// metrics over stderr when there is a SIGUSR1 received.
|
||||||
memSink := metrics.NewInmemSink(10*time.Second, time.Minute)
|
memSink := metrics.NewInmemSink(10*time.Second, time.Minute)
|
||||||
metrics.DefaultInmemSignal(memSink)
|
metrics.DefaultInmemSignal(memSink)
|
||||||
metricsConf := metrics.DefaultConfig(conf.TelemetryStatsitePrefix)
|
metricsConf := metrics.DefaultConfig(conf.TelemetryMetricsPrefix)
|
||||||
metricsConf.EnableHostname = !conf.TelemetryDisableHostname
|
metricsConf.EnableHostname = !conf.TelemetryDisableHostname
|
||||||
metricsConf.FilterDefault = conf.TelemetryFilterDefault
|
metricsConf.FilterDefault = conf.TelemetryFilterDefault
|
||||||
|
|
||||||
|
|
|
@ -1139,50 +1139,6 @@ Consul will not enable TLS for the HTTP API unless the `https` port has been ass
|
||||||
* <a name="telemetry"></a><a href="#telemetry">`telemetry`</a> This is a nested object that configures where Consul
|
* <a name="telemetry"></a><a href="#telemetry">`telemetry`</a> This is a nested object that configures where Consul
|
||||||
sends its runtime telemetry, and contains the following keys:
|
sends its runtime telemetry, and contains the following keys:
|
||||||
|
|
||||||
* <a name="telemetry-statsd_address"></a><a href="#telemetry-statsd_address">`statsd_address`</a> This provides the
|
|
||||||
address of a statsd instance in the format `host:port`. If provided, Consul will send various telemetry information to that instance for
|
|
||||||
aggregation. This can be used to capture runtime information. This sends UDP packets only and can be used with
|
|
||||||
statsd or statsite.
|
|
||||||
|
|
||||||
* <a name="telemetry-statsite_address"></a><a href="#telemetry-statsite_address">`statsite_address`</a> This provides
|
|
||||||
the address of a statsite instance in the format `host:port`. If provided, Consul will stream various telemetry information to that instance
|
|
||||||
for aggregation. This can be used to capture runtime information. This streams via TCP and can only be used with
|
|
||||||
statsite.
|
|
||||||
|
|
||||||
* <a name="telemetry-statsite_prefix"></a><a href="#telemetry-statsite_prefix">`statsite_prefix`</a>
|
|
||||||
The prefix used while writing all telemetry data to statsite. By default, this is set to "consul".
|
|
||||||
|
|
||||||
* <a name="telemetry-dogstatsd_addr"></a><a href="#telemetry-dogstatsd_addr">`dogstatsd_addr`</a> This provides the
|
|
||||||
address of a DogStatsD instance in the format `host:port`. DogStatsD is a protocol-compatible flavor of
|
|
||||||
statsd, with the added ability to decorate metrics with tags and event information. If provided, Consul will
|
|
||||||
send various telemetry information to that instance for aggregation. This can be used to capture runtime
|
|
||||||
information.
|
|
||||||
|
|
||||||
* <a name="telemetry-dogstatsd_tags"></a><a href="#telemetry-dogstatsd_tags">`dogstatsd_tags`</a> This provides a list of global tags
|
|
||||||
that will be added to all telemetry packets sent to DogStatsD. It is a list of strings, where each string
|
|
||||||
looks like "my_tag_name:my_tag_value".
|
|
||||||
|
|
||||||
* <a name="telemetry-disable_hostname"></a><a href="#telemetry-disable_hostname">`disable_hostname`</a>
|
|
||||||
This controls whether or not to prepend runtime telemetry with the machine's hostname, defaults to false.
|
|
||||||
|
|
||||||
* <a name="telemetry-prefix_filter"></a><a href="#telemetry-prefix_filter">`prefix_filter`</a>
|
|
||||||
This is a list of filter rules to apply for allowing/blocking metrics by prefix in the following format:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
[
|
|
||||||
"+consul.raft.apply",
|
|
||||||
"-consul.http",
|
|
||||||
"+consul.http.GET"
|
|
||||||
]
|
|
||||||
```
|
|
||||||
A leading "<b>+</b>" will enable any metrics with the given prefix, and a leading "<b>-</b>" will block them. If there
|
|
||||||
is overlap between two rules, the more specific rule will take precedence. Blocking will take priority if the same
|
|
||||||
prefix is listed multiple times.
|
|
||||||
|
|
||||||
* <a name="telemetry-filter_default"></a><a href="#telemetry-filter_default">`filter_default`</a>
|
|
||||||
This controls whether to allow metrics that have not been specified by the filter. Defaults to `true`, which will
|
|
||||||
allow all metrics when no filters are provided. When set to `false` with no filters, no metrics will be sent.
|
|
||||||
|
|
||||||
* <a name="telemetry-circonus_api_token"></a><a href="#telemetry-circonus_api_token">`circonus_api_token`</a>
|
* <a name="telemetry-circonus_api_token"></a><a href="#telemetry-circonus_api_token">`circonus_api_token`</a>
|
||||||
A valid API Token used to create/manage check. If provided, metric management is enabled.
|
A valid API Token used to create/manage check. If provided, metric management is enabled.
|
||||||
|
|
||||||
|
@ -1222,6 +1178,50 @@ Consul will not enable TLS for the HTTP API unless the `https` port has been ass
|
||||||
* <a name="telemetry-circonus_broker_select_tag"></a><a href="#telemetry-circonus_broker_select_tag">`circonus_broker_select_tag`</a>
|
* <a name="telemetry-circonus_broker_select_tag"></a><a href="#telemetry-circonus_broker_select_tag">`circonus_broker_select_tag`</a>
|
||||||
A special tag which will be used to select a Circonus Broker when a Broker ID is not provided. The best use of this is to as a hint for which broker should be used based on *where* this particular instance is running (e.g. a specific geo location or datacenter, dc:sfo). By default, this is left blank and not used.
|
A special tag which will be used to select a Circonus Broker when a Broker ID is not provided. The best use of this is to as a hint for which broker should be used based on *where* this particular instance is running (e.g. a specific geo location or datacenter, dc:sfo). By default, this is left blank and not used.
|
||||||
|
|
||||||
|
* <a name="telemetry-disable_hostname"></a><a href="#telemetry-disable_hostname">`disable_hostname`</a>
|
||||||
|
This controls whether or not to prepend runtime telemetry with the machine's hostname, defaults to false.
|
||||||
|
|
||||||
|
* <a name="telemetry-dogstatsd_addr"></a><a href="#telemetry-dogstatsd_addr">`dogstatsd_addr`</a> This provides the
|
||||||
|
address of a DogStatsD instance in the format `host:port`. DogStatsD is a protocol-compatible flavor of
|
||||||
|
statsd, with the added ability to decorate metrics with tags and event information. If provided, Consul will
|
||||||
|
send various telemetry information to that instance for aggregation. This can be used to capture runtime
|
||||||
|
information.
|
||||||
|
|
||||||
|
* <a name="telemetry-dogstatsd_tags"></a><a href="#telemetry-dogstatsd_tags">`dogstatsd_tags`</a> This provides a list of global tags
|
||||||
|
that will be added to all telemetry packets sent to DogStatsD. It is a list of strings, where each string
|
||||||
|
looks like "my_tag_name:my_tag_value".
|
||||||
|
|
||||||
|
* <a name="telemetry-filter_default"></a><a href="#telemetry-filter_default">`filter_default`</a>
|
||||||
|
This controls whether to allow metrics that have not been specified by the filter. Defaults to `true`, which will
|
||||||
|
allow all metrics when no filters are provided. When set to `false` with no filters, no metrics will be sent.
|
||||||
|
|
||||||
|
* <a name="telemetry-metrics_prefix"></a><a href="#telemetry-metrics_prefix">`metrics_prefix`</a>
|
||||||
|
The prefix used while writing all telemetry data. By default, this is set to "consul".
|
||||||
|
|
||||||
|
* <a name="telemetry-prefix_filter"></a><a href="#telemetry-prefix_filter">`prefix_filter`</a>
|
||||||
|
This is a list of filter rules to apply for allowing/blocking metrics by prefix in the following format:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
[
|
||||||
|
"+consul.raft.apply",
|
||||||
|
"-consul.http",
|
||||||
|
"+consul.http.GET"
|
||||||
|
]
|
||||||
|
```
|
||||||
|
A leading "<b>+</b>" will enable any metrics with the given prefix, and a leading "<b>-</b>" will block them. If there
|
||||||
|
is overlap between two rules, the more specific rule will take precedence. Blocking will take priority if the same
|
||||||
|
prefix is listed multiple times.
|
||||||
|
|
||||||
|
* <a name="telemetry-statsd_address"></a><a href="#telemetry-statsd_address">`statsd_address`</a> This provides the
|
||||||
|
address of a statsd instance in the format `host:port`. If provided, Consul will send various telemetry information to that instance for
|
||||||
|
aggregation. This can be used to capture runtime information. This sends UDP packets only and can be used with
|
||||||
|
statsd or statsite.
|
||||||
|
|
||||||
|
* <a name="telemetry-statsite_address"></a><a href="#telemetry-statsite_address">`statsite_address`</a> This provides
|
||||||
|
the address of a statsite instance in the format `host:port`. If provided, Consul will stream various telemetry information to that instance
|
||||||
|
for aggregation. This can be used to capture runtime information. This streams via TCP and can only be used with
|
||||||
|
statsite.
|
||||||
|
|
||||||
* <a name="statsd_addr"></a><a href="#statsd_addr">`statsd_addr`</a> Deprecated, see
|
* <a name="statsd_addr"></a><a href="#statsd_addr">`statsd_addr`</a> Deprecated, see
|
||||||
the <a href="#telemetry">telemetry</a> structure
|
the <a href="#telemetry">telemetry</a> structure
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue