mirror of https://github.com/status-im/consul.git
Now use prometheus_retention_time > 0 to enable prometheus support
This commit is contained in:
parent
fd98fb1449
commit
93a01b0949
|
@ -89,6 +89,11 @@ func (s *HTTPServer) AgentMetrics(resp http.ResponseWriter, req *http.Request) (
|
|||
return nil, acl.ErrPermissionDenied
|
||||
}
|
||||
if format := req.URL.Query().Get("format"); format == "prometheus" {
|
||||
if s.agent.config.TelemetryPrometheusRetentionTime.Nanoseconds() < 1 {
|
||||
resp.WriteHeader(http.StatusUnsupportedMediaType)
|
||||
fmt.Fprint(resp, "Prometheus is not enable since its retention time is not positive")
|
||||
return nil, nil
|
||||
}
|
||||
handlerOptions := promhttp.HandlerOpts{
|
||||
ErrorLog: s.agent.logger,
|
||||
ErrorHandling: promhttp.ContinueOnError,
|
||||
|
|
|
@ -626,7 +626,7 @@ func (b *Builder) Build() (rt RuntimeConfig, err error) {
|
|||
TelemetryDisableHostname: b.boolVal(c.Telemetry.DisableHostname),
|
||||
TelemetryDogstatsdAddr: b.stringVal(c.Telemetry.DogstatsdAddr),
|
||||
TelemetryDogstatsdTags: c.Telemetry.DogstatsdTags,
|
||||
TelemetryPrometheusDisable: b.boolVal(c.Telemetry.PrometheusDisable),
|
||||
TelemetryPrometheusRetentionTime: b.durationVal("prometheus_retention_time", c.Telemetry.PrometheusRetentionTime),
|
||||
TelemetryFilterDefault: b.boolVal(c.Telemetry.FilterDefault),
|
||||
TelemetryAllowedPrefixes: telemetryAllowedPrefixes,
|
||||
TelemetryBlockedPrefixes: telemetryBlockedPrefixes,
|
||||
|
|
|
@ -394,7 +394,7 @@ type Telemetry struct {
|
|||
FilterDefault *bool `json:"filter_default,omitempty" hcl:"filter_default" mapstructure:"filter_default"`
|
||||
PrefixFilter []string `json:"prefix_filter,omitempty" hcl:"prefix_filter" mapstructure:"prefix_filter"`
|
||||
MetricsPrefix *string `json:"metrics_prefix,omitempty" hcl:"metrics_prefix" mapstructure:"metrics_prefix"`
|
||||
PrometheusDisable *bool `json:"prometheus_disable,omitempty" hcl:"prometheus_disable" mapstructure:"prometheus_disable"`
|
||||
PrometheusRetentionTime *string `json:"prometheus_retention_time,omitempty" hcl:"prometheus_retention_time" mapstructure:"prometheus_retention_time"`
|
||||
StatsdAddr *string `json:"statsd_address,omitempty" hcl:"statsd_address" mapstructure:"statsd_address"`
|
||||
StatsiteAddr *string `json:"statsite_address,omitempty" hcl:"statsite_address" mapstructure:"statsite_address"`
|
||||
EnableDeprecatedNames *bool `json:"enable_deprecated_names" hcl:"enable_deprecated_names" mapstructure:"enable_deprecated_names"`
|
||||
|
|
|
@ -425,10 +425,10 @@ type RuntimeConfig struct {
|
|||
// hcl: telemetry { dogstatsd_tags = []string }
|
||||
TelemetryDogstatsdTags []string
|
||||
|
||||
// TelemetryPrometheusDisable enables prometheus Support for metrics
|
||||
// PrometheusRetentionTime enables prometheus Support for metrics if greater than 0
|
||||
//
|
||||
// hcl: telemetry { prometheus_disable = (true|false) }
|
||||
TelemetryPrometheusDisable bool
|
||||
// hcl: telemetry { prometheus_retention_time = "duration" }
|
||||
TelemetryPrometheusRetentionTime time.Duration
|
||||
|
||||
// TelemetryFilterDefault is the default for whether to allow a metric that's not
|
||||
// covered by the filter.
|
||||
|
|
|
@ -2589,7 +2589,7 @@ func TestFullConfig(t *testing.T) {
|
|||
"prefix_filter": [ "+oJotS8XJ","-cazlEhGn" ],
|
||||
"enable_deprecated_names": true,
|
||||
"metrics_prefix": "ftO6DySn",
|
||||
"prometheus_disable": true,
|
||||
"prometheus_retention_time": "15s",
|
||||
"statsd_address": "drce87cy",
|
||||
"statsite_address": "HpFwKB8R"
|
||||
},
|
||||
|
@ -3027,7 +3027,7 @@ func TestFullConfig(t *testing.T) {
|
|||
prefix_filter = [ "+oJotS8XJ","-cazlEhGn" ]
|
||||
enable_deprecated_names = true
|
||||
metrics_prefix = "ftO6DySn"
|
||||
prometheus_disable = true
|
||||
prometheus_retention_time = "15s"
|
||||
statsd_address = "drce87cy"
|
||||
statsite_address = "HpFwKB8R"
|
||||
}
|
||||
|
@ -3590,7 +3590,7 @@ func TestFullConfig(t *testing.T) {
|
|||
TelemetryAllowedPrefixes: []string{"oJotS8XJ", "consul.consul"},
|
||||
TelemetryBlockedPrefixes: []string{"cazlEhGn"},
|
||||
TelemetryMetricsPrefix: "ftO6DySn",
|
||||
TelemetryPrometheusDisable: true,
|
||||
TelemetryPrometheusRetentionTime: 15 * time.Second,
|
||||
TelemetryStatsdAddr: "drce87cy",
|
||||
TelemetryStatsiteAddr: "HpFwKB8R",
|
||||
TLSCipherSuites: []uint16{tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384},
|
||||
|
@ -4143,7 +4143,7 @@ func TestSanitize(t *testing.T) {
|
|||
"TelemetryDogstatsdTags": [],
|
||||
"TelemetryFilterDefault": false,
|
||||
"TelemetryMetricsPrefix": "",
|
||||
"TelemetryPrometheusDisable": false,
|
||||
"TelemetryPrometheusRetentionTime": "0s",
|
||||
"TelemetryStatsdAddr": "",
|
||||
"TelemetryStatsiteAddr": "",
|
||||
"TranslateWANAddrs": false,
|
||||
|
|
|
@ -210,10 +210,13 @@ func dogstatdSink(config *config.RuntimeConfig, hostname string) (metrics.Metric
|
|||
}
|
||||
|
||||
func prometheusSink(config *config.RuntimeConfig, hostname string) (metrics.MetricSink, error) {
|
||||
if config.TelemetryPrometheusDisable {
|
||||
if config.TelemetryPrometheusRetentionTime.Nanoseconds() < 1 {
|
||||
return nil, nil
|
||||
}
|
||||
sink, err := prometheus.NewPrometheusSink()
|
||||
prometheusOpts := prometheus.PrometheusOpts{
|
||||
Expiration: config.TelemetryPrometheusRetentionTime,
|
||||
}
|
||||
sink, err := prometheus.NewPrometheusSinkFrom(prometheusOpts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue