mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Add flag for enabling and disabling OOO native histogram ingestion
Signed-off-by: Carrie Edwards <edwrdscarrie@gmail.com>
This commit is contained in:
parent
29b62762db
commit
49e795edd8
|
@ -228,6 +228,9 @@ func (c *flagConfig) setFeatureListOptions(logger log.Logger) error {
|
|||
config.DefaultConfig.GlobalConfig.ScrapeProtocols = config.DefaultProtoFirstScrapeProtocols
|
||||
config.DefaultGlobalConfig.ScrapeProtocols = config.DefaultProtoFirstScrapeProtocols
|
||||
level.Info(logger).Log("msg", "Experimental native histogram support enabled. Changed default scrape_protocols to prefer PrometheusProto format.", "global.scrape_protocols", fmt.Sprintf("%v", config.DefaultGlobalConfig.ScrapeProtocols))
|
||||
case "ooo-native-histograms":
|
||||
c.tsdb.EnableOOONativeHistograms = true
|
||||
level.Info(logger).Log("msg", "Experimental out-of-order native histogram ingestion enabled. This will only take effect if OutOfOrderTimeWindow is > 0 and if EnableNativeHistograms = true")
|
||||
case "created-timestamp-zero-ingestion":
|
||||
c.scrape.EnableCreatedTimestampZeroIngestion = true
|
||||
// Change relevant global variables. Hacky, but it's hard to pass a new option or default to unmarshallers.
|
||||
|
@ -1715,6 +1718,7 @@ type tsdbOptions struct {
|
|||
MaxExemplars int64
|
||||
EnableMemorySnapshotOnShutdown bool
|
||||
EnableNativeHistograms bool
|
||||
EnableOOONativeHistograms bool
|
||||
}
|
||||
|
||||
func (opts tsdbOptions) ToTSDBOptions() tsdb.Options {
|
||||
|
@ -1734,6 +1738,7 @@ func (opts tsdbOptions) ToTSDBOptions() tsdb.Options {
|
|||
MaxExemplars: opts.MaxExemplars,
|
||||
EnableMemorySnapshotOnShutdown: opts.EnableMemorySnapshotOnShutdown,
|
||||
EnableNativeHistograms: opts.EnableNativeHistograms,
|
||||
EnableOOONativeHistograms: opts.EnableOOONativeHistograms,
|
||||
OutOfOrderTimeWindow: opts.OutOfOrderTimeWindow,
|
||||
EnableOverlappingCompaction: true,
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ var (
|
|||
ErrExemplarLabelLength = fmt.Errorf("label length for exemplar exceeds maximum of %d UTF-8 characters", exemplar.ExemplarMaxLabelSetLength)
|
||||
ErrExemplarsDisabled = fmt.Errorf("exemplar storage is disabled or max exemplars is less than or equal to 0")
|
||||
ErrNativeHistogramsDisabled = fmt.Errorf("native histograms are disabled")
|
||||
ErrOOONativeHistogramsDisabled = fmt.Errorf("out-of-order native histogram ingestion is disabled")
|
||||
|
||||
// ErrOutOfOrderCT indicates failed append of CT to the storage
|
||||
// due to CT being older the then newer sample.
|
||||
|
|
17
tsdb/db.go
17
tsdb/db.go
|
@ -170,6 +170,12 @@ type Options struct {
|
|||
// EnableNativeHistograms enables the ingestion of native histograms.
|
||||
EnableNativeHistograms bool
|
||||
|
||||
// EnableOOONativeHistograms enables the ingestion of OOO native histograms.
|
||||
// It will only take effect if EnableNativeHistograms is set to true and the
|
||||
// OutOfOrderTimeWindow is > 0. This flag will be removed after testing of
|
||||
// OOO Native Histogram ingestion is complete.
|
||||
EnableOOONativeHistograms bool
|
||||
|
||||
// OutOfOrderTimeWindow specifies how much out of order is allowed, if any.
|
||||
// This can change during run-time, so this value from here should only be used
|
||||
// while initialising.
|
||||
|
@ -936,6 +942,7 @@ func open(dir string, l log.Logger, r prometheus.Registerer, opts *Options, rngs
|
|||
headOpts.MaxExemplars.Store(opts.MaxExemplars)
|
||||
headOpts.EnableMemorySnapshotOnShutdown = opts.EnableMemorySnapshotOnShutdown
|
||||
headOpts.EnableNativeHistograms.Store(opts.EnableNativeHistograms)
|
||||
headOpts.EnableOOONativeHistograms.Store(opts.EnableOOONativeHistograms)
|
||||
headOpts.OutOfOrderTimeWindow.Store(opts.OutOfOrderTimeWindow)
|
||||
headOpts.OutOfOrderCapMax.Store(opts.OutOfOrderCapMax)
|
||||
headOpts.EnableSharding = opts.EnableSharding
|
||||
|
@ -1156,6 +1163,16 @@ func (db *DB) DisableNativeHistograms() {
|
|||
db.head.DisableNativeHistograms()
|
||||
}
|
||||
|
||||
// EnableOOONativeHistograms enables the ingestion of out-of-order native histograms.
|
||||
func (db *DB) EnableOOONativeHistograms() {
|
||||
db.head.EnableOOONativeHistograms()
|
||||
}
|
||||
|
||||
// DisableOOONativeHistograms disables the ingestion of out-of-order native histograms.
|
||||
func (db *DB) DisableOOONativeHistograms() {
|
||||
db.head.DisableOOONativeHistograms()
|
||||
}
|
||||
|
||||
// dbAppender wraps the DB's head appender and triggers compactions on commit
|
||||
// if necessary.
|
||||
type dbAppender struct {
|
||||
|
|
15
tsdb/head.go
15
tsdb/head.go
|
@ -149,6 +149,11 @@ type HeadOptions struct {
|
|||
// EnableNativeHistograms enables the ingestion of native histograms.
|
||||
EnableNativeHistograms atomic.Bool
|
||||
|
||||
// EnableOOONativeHistograms enables the ingestion of OOO native histograms.
|
||||
// It will only take effect if EnableNativeHistograms is set to true and the
|
||||
// OutOfOrderTimeWindow is > 0
|
||||
EnableOOONativeHistograms atomic.Bool
|
||||
|
||||
// EnableCreatedTimestampZeroIngestion enables the ingestion of the created timestamp as a synthetic zero sample.
|
||||
// See: https://github.com/prometheus/proposals/blob/main/proposals/2023-06-13_created-timestamp.md
|
||||
EnableCreatedTimestampZeroIngestion bool
|
||||
|
@ -1035,6 +1040,16 @@ func (h *Head) DisableNativeHistograms() {
|
|||
h.opts.EnableNativeHistograms.Store(false)
|
||||
}
|
||||
|
||||
// EnableOOONativeHistograms enables the ingestion of out-of-order native histograms.
|
||||
func (h *Head) EnableOOONativeHistograms() {
|
||||
h.opts.EnableOOONativeHistograms.Store(true)
|
||||
}
|
||||
|
||||
// DisableOOONativeHistograms disables the ingestion of out-of-order native histograms.
|
||||
func (h *Head) DisableOOONativeHistograms() {
|
||||
h.opts.EnableOOONativeHistograms.Store(false)
|
||||
}
|
||||
|
||||
// PostingsCardinalityStats returns highest cardinality stats by label and value names.
|
||||
func (h *Head) PostingsCardinalityStats(statsByLabelName string, limit int) *index.PostingsStats {
|
||||
cacheKey := statsByLabelName + ";" + strconv.Itoa(limit)
|
||||
|
|
Loading…
Reference in a new issue