mirror of
https://github.com/prometheus/prometheus.git
synced 2025-12-08 02:51:16 +01:00
Add configuration option to control
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
This commit is contained in:
parent
d0d2699dc5
commit
478dd97bb8
@ -176,6 +176,7 @@ var (
|
||||
ScrapeNativeHistograms: &f,
|
||||
ConvertClassicHistogramsToNHCB: false,
|
||||
AlwaysScrapeClassicHistograms: false,
|
||||
ExtraScrapeMetrics: false,
|
||||
MetricNameValidationScheme: model.UTF8Validation,
|
||||
MetricNameEscapingScheme: model.AllowUTF8,
|
||||
}
|
||||
@ -513,6 +514,10 @@ type GlobalConfig struct {
|
||||
ConvertClassicHistogramsToNHCB bool `yaml:"convert_classic_histograms_to_nhcb,omitempty"`
|
||||
// Whether to scrape a classic histogram, even if it is also exposed as a native histogram.
|
||||
AlwaysScrapeClassicHistograms bool `yaml:"always_scrape_classic_histograms,omitempty"`
|
||||
// Whether to enable additional scrape metrics.
|
||||
// When enabled, Prometheus stores samples for scrape_timeout_seconds,
|
||||
// scrape_sample_limit, and scrape_body_size_bytes.
|
||||
ExtraScrapeMetrics bool `yaml:"extra_scrape_metrics,omitempty"`
|
||||
}
|
||||
|
||||
// ScrapeProtocol represents supported protocol for scraping metrics.
|
||||
@ -687,7 +692,8 @@ func (c *GlobalConfig) isZero() bool {
|
||||
c.ScrapeProtocols == nil &&
|
||||
c.ScrapeNativeHistograms == nil &&
|
||||
!c.ConvertClassicHistogramsToNHCB &&
|
||||
!c.AlwaysScrapeClassicHistograms
|
||||
!c.AlwaysScrapeClassicHistograms &&
|
||||
!c.ExtraScrapeMetrics
|
||||
}
|
||||
|
||||
const DefaultGoGCPercentage = 75
|
||||
@ -796,6 +802,11 @@ type ScrapeConfig struct {
|
||||
// blank in config files but must have a value if a ScrapeConfig is created
|
||||
// programmatically.
|
||||
MetricNameEscapingScheme string `yaml:"metric_name_escaping_scheme,omitempty"`
|
||||
// Whether to enable additional scrape metrics.
|
||||
// When enabled, Prometheus stores samples for scrape_timeout_seconds,
|
||||
// scrape_sample_limit, and scrape_body_size_bytes.
|
||||
// If not set (nil), inherits the value from the global configuration.
|
||||
ExtraScrapeMetrics *bool `yaml:"extra_scrape_metrics,omitempty"`
|
||||
|
||||
// We cannot do proper Go type embedding below as the parser will then parse
|
||||
// values arbitrarily into the overflow maps of further-down types.
|
||||
@ -897,6 +908,9 @@ func (c *ScrapeConfig) Validate(globalConfig GlobalConfig) error {
|
||||
if c.ScrapeNativeHistograms == nil {
|
||||
c.ScrapeNativeHistograms = globalConfig.ScrapeNativeHistograms
|
||||
}
|
||||
if c.ExtraScrapeMetrics == nil {
|
||||
c.ExtraScrapeMetrics = &globalConfig.ExtraScrapeMetrics
|
||||
}
|
||||
|
||||
if c.ScrapeProtocols == nil {
|
||||
switch {
|
||||
@ -1045,6 +1059,11 @@ func (c *ScrapeConfig) AlwaysScrapeClassicHistogramsEnabled() bool {
|
||||
return c.AlwaysScrapeClassicHistograms != nil && *c.AlwaysScrapeClassicHistograms
|
||||
}
|
||||
|
||||
// ExtraScrapeMetricsEnabled returns whether to enable extra scrape metrics.
|
||||
func (c *ScrapeConfig) ExtraScrapeMetricsEnabled() bool {
|
||||
return c.ExtraScrapeMetrics != nil && *c.ExtraScrapeMetrics
|
||||
}
|
||||
|
||||
// StorageConfig configures runtime reloadable configuration options.
|
||||
type StorageConfig struct {
|
||||
TSDBConfig *TSDBConfig `yaml:"tsdb,omitempty"`
|
||||
|
||||
@ -109,6 +109,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: false,
|
||||
ConvertClassicHistogramsToNHCB: false,
|
||||
ExtraScrapeMetrics: false,
|
||||
MetricNameValidationScheme: model.UTF8Validation,
|
||||
},
|
||||
|
||||
@ -236,6 +237,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -360,6 +362,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
HTTPClientConfig: config.HTTPClientConfig{
|
||||
BasicAuth: &config.BasicAuth{
|
||||
@ -470,6 +473,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -532,6 +536,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: "/metrics",
|
||||
Scheme: "http",
|
||||
@ -571,6 +576,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -616,6 +622,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -661,6 +668,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -696,6 +704,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -739,6 +748,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -779,6 +789,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -826,6 +837,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -863,6 +875,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -903,6 +916,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -936,6 +950,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -972,6 +987,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: "/federate",
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1008,6 +1024,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1044,6 +1061,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1077,6 +1095,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1118,6 +1137,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1158,6 +1178,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1195,6 +1216,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1231,6 +1253,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1271,6 +1294,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1314,6 +1338,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(true),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1377,6 +1402,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1410,6 +1436,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
HTTPClientConfig: config.DefaultHTTPClientConfig,
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
@ -1454,6 +1481,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
HTTPClientConfig: config.DefaultHTTPClientConfig,
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
@ -1504,6 +1532,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1544,6 +1573,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1585,6 +1615,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
HTTPClientConfig: config.DefaultHTTPClientConfig,
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
@ -1621,6 +1652,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -1659,6 +1691,7 @@ var expectedConf = &Config{
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -2680,6 +2713,7 @@ type ScrapeConfigOptions struct {
|
||||
ScrapeNativeHistograms bool
|
||||
AlwaysScrapeClassicHistograms bool
|
||||
ConvertClassicHistToNHCB bool
|
||||
ExtraScrapeMetrics bool
|
||||
}
|
||||
|
||||
func TestGetScrapeConfigs(t *testing.T) {
|
||||
@ -2713,6 +2747,7 @@ func TestGetScrapeConfigs(t *testing.T) {
|
||||
ScrapeNativeHistograms: boolPtr(opts.ScrapeNativeHistograms),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(opts.AlwaysScrapeClassicHistograms),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(opts.ConvertClassicHistToNHCB),
|
||||
ExtraScrapeMetrics: boolPtr(opts.ExtraScrapeMetrics),
|
||||
}
|
||||
if opts.ScrapeProtocols == nil {
|
||||
sc.ScrapeProtocols = DefaultScrapeProtocols
|
||||
@ -2796,6 +2831,7 @@ func TestGetScrapeConfigs(t *testing.T) {
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
MetricsPath: DefaultScrapeConfig.MetricsPath,
|
||||
Scheme: DefaultScrapeConfig.Scheme,
|
||||
@ -2834,6 +2870,7 @@ func TestGetScrapeConfigs(t *testing.T) {
|
||||
ScrapeNativeHistograms: boolPtr(false),
|
||||
AlwaysScrapeClassicHistograms: boolPtr(false),
|
||||
ConvertClassicHistogramsToNHCB: boolPtr(false),
|
||||
ExtraScrapeMetrics: boolPtr(false),
|
||||
|
||||
HTTPClientConfig: config.HTTPClientConfig{
|
||||
TLSConfig: config.TLSConfig{
|
||||
@ -2946,6 +2983,26 @@ func TestGetScrapeConfigs(t *testing.T) {
|
||||
configFile: "testdata/global_scrape_protocols_and_local_disable_scrape_native_hist.good.yml",
|
||||
expectedResult: []*ScrapeConfig{sc(ScrapeConfigOptions{JobName: "prometheus", ScrapeInterval: model.Duration(60 * time.Second), ScrapeTimeout: model.Duration(10 * time.Second), ScrapeNativeHistograms: false, ScrapeProtocols: []ScrapeProtocol{PrometheusText0_0_4}})},
|
||||
},
|
||||
{
|
||||
name: "A global config that enables extra scrape metrics",
|
||||
configFile: "testdata/global_enable_extra_scrape_metrics.good.yml",
|
||||
expectedResult: []*ScrapeConfig{sc(ScrapeConfigOptions{JobName: "prometheus", ScrapeInterval: model.Duration(60 * time.Second), ScrapeTimeout: model.Duration(10 * time.Second), ExtraScrapeMetrics: true})},
|
||||
},
|
||||
{
|
||||
name: "A global config that disables extra scrape metrics",
|
||||
configFile: "testdata/global_disable_extra_scrape_metrics.good.yml",
|
||||
expectedResult: []*ScrapeConfig{sc(ScrapeConfigOptions{JobName: "prometheus", ScrapeInterval: model.Duration(60 * time.Second), ScrapeTimeout: model.Duration(10 * time.Second), ExtraScrapeMetrics: false})},
|
||||
},
|
||||
{
|
||||
name: "A global config that disables extra scrape metrics and scrape config that enables it",
|
||||
configFile: "testdata/local_enable_extra_scrape_metrics.good.yml",
|
||||
expectedResult: []*ScrapeConfig{sc(ScrapeConfigOptions{JobName: "prometheus", ScrapeInterval: model.Duration(60 * time.Second), ScrapeTimeout: model.Duration(10 * time.Second), ExtraScrapeMetrics: true})},
|
||||
},
|
||||
{
|
||||
name: "A global config that enables extra scrape metrics and scrape config that disables it",
|
||||
configFile: "testdata/local_disable_extra_scrape_metrics.good.yml",
|
||||
expectedResult: []*ScrapeConfig{sc(ScrapeConfigOptions{JobName: "prometheus", ScrapeInterval: model.Duration(60 * time.Second), ScrapeTimeout: model.Duration(10 * time.Second), ExtraScrapeMetrics: false})},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
@ -2962,6 +3019,105 @@ func TestGetScrapeConfigs(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtraScrapeMetrics(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
config string
|
||||
expectGlobal bool
|
||||
expectScrape bool
|
||||
expectEnabled bool
|
||||
}{
|
||||
{
|
||||
name: "default values (not set)",
|
||||
config: `
|
||||
scrape_configs:
|
||||
- job_name: test
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
`,
|
||||
expectGlobal: false,
|
||||
expectScrape: false,
|
||||
expectEnabled: false,
|
||||
},
|
||||
{
|
||||
name: "global enabled",
|
||||
config: `
|
||||
global:
|
||||
extra_scrape_metrics: true
|
||||
scrape_configs:
|
||||
- job_name: test
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
`,
|
||||
expectGlobal: true,
|
||||
expectScrape: true, // inherits
|
||||
expectEnabled: true,
|
||||
},
|
||||
{
|
||||
name: "global disabled",
|
||||
config: `
|
||||
global:
|
||||
extra_scrape_metrics: false
|
||||
scrape_configs:
|
||||
- job_name: test
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
`,
|
||||
expectGlobal: false,
|
||||
expectScrape: false, // inherits
|
||||
expectEnabled: false,
|
||||
},
|
||||
{
|
||||
name: "scrape override enabled",
|
||||
config: `
|
||||
global:
|
||||
extra_scrape_metrics: false
|
||||
scrape_configs:
|
||||
- job_name: test
|
||||
extra_scrape_metrics: true
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
`,
|
||||
expectGlobal: false,
|
||||
expectScrape: true, // overrides global
|
||||
expectEnabled: true,
|
||||
},
|
||||
{
|
||||
name: "scrape override disabled",
|
||||
config: `
|
||||
global:
|
||||
extra_scrape_metrics: true
|
||||
scrape_configs:
|
||||
- job_name: test
|
||||
extra_scrape_metrics: false
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
`,
|
||||
expectGlobal: true,
|
||||
expectScrape: false, // overrides global
|
||||
expectEnabled: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
cfg, err := Load(tc.config, promslog.NewNopLogger())
|
||||
require.NoError(t, err)
|
||||
|
||||
// Check global config
|
||||
require.Equal(t, tc.expectGlobal, cfg.GlobalConfig.ExtraScrapeMetrics)
|
||||
|
||||
// Check scrape config
|
||||
scfgs, err := cfg.GetScrapeConfigs()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, scfgs, 1)
|
||||
|
||||
// Check the effective value via the helper method
|
||||
require.Equal(t, tc.expectEnabled, scfgs[0].ExtraScrapeMetricsEnabled())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func kubernetesSDHostURL() config.URL {
|
||||
tURL, _ := url.Parse("https://localhost:1234")
|
||||
return config.URL{URL: tURL}
|
||||
|
||||
7
config/testdata/global_disable_extra_scrape_metrics.good.yml
vendored
Normal file
7
config/testdata/global_disable_extra_scrape_metrics.good.yml
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
global:
|
||||
extra_scrape_metrics: false
|
||||
scrape_configs:
|
||||
- job_name: prometheus
|
||||
static_configs:
|
||||
- targets: ['localhost:8080']
|
||||
|
||||
7
config/testdata/global_enable_extra_scrape_metrics.good.yml
vendored
Normal file
7
config/testdata/global_enable_extra_scrape_metrics.good.yml
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
global:
|
||||
extra_scrape_metrics: true
|
||||
scrape_configs:
|
||||
- job_name: prometheus
|
||||
static_configs:
|
||||
- targets: ['localhost:8080']
|
||||
|
||||
8
config/testdata/local_disable_extra_scrape_metrics.good.yml
vendored
Normal file
8
config/testdata/local_disable_extra_scrape_metrics.good.yml
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
global:
|
||||
extra_scrape_metrics: true
|
||||
scrape_configs:
|
||||
- job_name: prometheus
|
||||
static_configs:
|
||||
- targets: ['localhost:8080']
|
||||
extra_scrape_metrics: false
|
||||
|
||||
8
config/testdata/local_enable_extra_scrape_metrics.good.yml
vendored
Normal file
8
config/testdata/local_enable_extra_scrape_metrics.good.yml
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
global:
|
||||
extra_scrape_metrics: false
|
||||
scrape_configs:
|
||||
- job_name: prometheus
|
||||
static_configs:
|
||||
- targets: ['localhost:8080']
|
||||
extra_scrape_metrics: true
|
||||
|
||||
@ -159,6 +159,12 @@ global:
|
||||
# native histogram with custom buckets.
|
||||
[ always_scrape_classic_histograms: <boolean> | default = false ]
|
||||
|
||||
# When enabled, Prometheus stores additional time series for each scrape:
|
||||
# scrape_timeout_seconds, scrape_sample_limit, and scrape_body_size_bytes.
|
||||
# These metrics help monitor how close targets are to their configured limits.
|
||||
# This option can be overridden per scrape config.
|
||||
[ extra_scrape_metrics: <boolean> | default = false ]
|
||||
|
||||
# The following explains the various combinations of the last three options
|
||||
# in various exposition cases.
|
||||
#
|
||||
@ -647,6 +653,12 @@ metric_relabel_configs:
|
||||
# native histogram with custom buckets.
|
||||
[ always_scrape_classic_histograms: <boolean> | default = <global.always_scrape_classic_histograms> ]
|
||||
|
||||
# When enabled, Prometheus stores additional time series for this scrape job:
|
||||
# scrape_timeout_seconds, scrape_sample_limit, and scrape_body_size_bytes.
|
||||
# These metrics help monitor how close targets are to their configured limits.
|
||||
# If not set, inherits the value from the global configuration.
|
||||
[ extra_scrape_metrics: <boolean> | default = <global.extra_scrape_metrics> ]
|
||||
|
||||
# See global configuration above for further explanations of how the last three
|
||||
# options combine their effects.
|
||||
|
||||
|
||||
@ -28,6 +28,8 @@ and m-mapped chunks, while a WAL replay from disk is only needed for the parts o
|
||||
|
||||
`--enable-feature=extra-scrape-metrics`
|
||||
|
||||
> **Note:** This feature flag is deprecated. Please use the `extra_scrape_metrics` configuration option instead (available at both global and scrape-config level). The feature flag will be removed in a future major version. See the [configuration documentation](configuration/configuration.md) for more details.
|
||||
|
||||
When enabled, for each instance scrape, Prometheus stores a sample in the following additional time series:
|
||||
|
||||
- `scrape_timeout_seconds`. The configured `scrape_timeout` for a target. This allows you to measure each target to find out how close they are to timing out with `scrape_duration_seconds / scrape_timeout_seconds`.
|
||||
|
||||
@ -217,7 +217,7 @@ func newScrapePool(cfg *config.ScrapeConfig, app storage.Appendable, offsetSeed
|
||||
cfg.ScrapeNativeHistogramsEnabled(),
|
||||
options.EnableStartTimestampZeroIngestion,
|
||||
options.EnableTypeAndUnitLabels,
|
||||
options.ExtraMetrics,
|
||||
options.ExtraMetrics || cfg.ExtraScrapeMetricsEnabled(),
|
||||
options.AppendMetadata,
|
||||
opts.target,
|
||||
options.PassMetadataInContext,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user