以下是一些默认禁用的功能列表,因为它们是破坏性更改或被认为是实验性的。它们的行为可能会在未来的版本中发生变化,这将通过发布变更日志进行沟通。
您可以使用 --enable-feature
标志和以逗号分隔的功能列表来启用它们。它们可能会在未来的版本中默认启用。
--enable-feature=exemplar-storage
OpenMetrics 引入了抓取目标向某些指标添加示例的能力。示例是对 MetricSet 之外数据的引用。一个常见的用例是程序跟踪的 ID。
示例存储被实现为固定大小的循环缓冲区,用于存储所有序列的内存中的示例。启用此功能将启用存储 Prometheus 抓取的示例。配置文件块 存储/示例 可用于通过示例数量来控制循环缓冲区的大小。一个仅包含 trace_id=<jaeger-trace-id>
的示例通过内存中的示例存储大致使用 100 字节的内存。如果启用了示例存储,我们还将把示例附加到 WAL 以进行本地持久化(用于 WAL 持续时间)。
--enable-feature=memory-snapshot-on-shutdown
这会在关闭时拍摄内存中的块以及序列信息的快照,并将其存储在磁盘上。这将减少启动时间,因为现在可以使用此快照和 m-mapped 块恢复内存状态,而只需要从磁盘重放 WAL 的快照中不包含的部分 WAL。
--enable-feature=extra-scrape-metrics
启用后,对于每个实例抓取,Prometheus 将在以下附加时间序列中存储一个样本
scrape_timeout_seconds
。目标的已配置 scrape_timeout
。这允许您测量每个目标,以找出它们与超时有多接近,使用 scrape_duration_seconds / scrape_timeout_seconds
。scrape_sample_limit
。目标的已配置 sample_limit
。这允许您测量每个目标,以找出它们与达到限制有多接近,使用 scrape_samples_post_metric_relabeling / scrape_sample_limit
。请注意,如果没有配置限制,scrape_sample_limit
可以为零,这意味着上面的查询对于没有限制的目标可能会返回 +Inf
(因为我们除以零)。如果您只想查询确实有样本限制的目标,请使用以下查询:scrape_samples_post_metric_relabeling / (scrape_sample_limit > 0)
。scrape_body_size_bytes
。如果抓取成功,则为最近一次抓取响应的未压缩大小。因超过 body_size_limit
而抓取失败的报告 -1
,其他抓取失败的报告 0
。--enable-feature=promql-per-step-stats
启用后,在查询请求中传递 stats=all
将返回每步统计信息。目前,这仅限于 totalQueryableSamples。
如果在引擎或查询中禁用,则根本不计算每步统计信息。
--enable-feature=native-histograms
启用后,Prometheus 将摄取原生直方图(以前也称为稀疏直方图或高分辨率直方图)。原生直方图仍然是高度实验性的。预计会出现破坏性更改(包括使 TSDB 不可读的更改)。
原生直方图目前仅在传统的 Prometheus protobuf 暴露格式中受支持。因此,此特性标志还启用了一个新的(也是实验性的)protobuf 解析器,通过该解析器摄取所有指标(即,不仅仅是原生直方图)。Prometheus 将尝试首先协商 protobuf 格式。被检测的目标也需要支持 protobuf 格式,并且它需要暴露原生直方图。protobuf 格式允许并排暴露经典和原生直方图。如果禁用此特性标志,Prometheus 将继续解析经典直方图(尽管是通过文本格式)。如果启用此标志,Prometheus 仍然会摄取那些没有对应原生直方图的经典直方图。但是,如果存在原生直方图,Prometheus 将忽略相应的经典直方图,但示例除外,示例始终会被摄取。要保留经典直方图,请在抓取任务中启用 always_scrape_classic_histograms
。
--enable-feature=promql-experimental-functions
启用被认为是实验性的 PromQL 函数。这些函数可能会更改其名称、语法或语义。它们也可能会被完全删除。
--enable-feature=created-timestamp-zero-ingestion
启用创建时间戳的摄取。创建的时间戳会在适当的时候作为值为 0 的样本注入。有关详细信息,请参阅 PromCon 演讲。
目前,Prometheus 仅在传统的 Prometheus Protobuf 协议上支持创建的时间戳(其他协议正在进行中)。因此,在启用此功能时,Prometheus protobuf 抓取协议将被优先考虑(有关更多详细信息,请参阅 scrape_config.scrape_protocols
设置)。
除了在 Prometheus 中启用此功能外,被抓取的应用程序还需要暴露创建的时间戳。
--enable-feature=concurrent-rule-eval
默认情况下,规则组会并发执行,但组内的规则会按顺序执行;这是因为规则可以使用前面规则的输出作为其输入。但是,如果规则之间没有可检测到的关系,则没有理由按顺序运行它们。启用 concurrent-rule-eval
特性标志后,规则组内没有任何依赖关系的规则将并发评估。这有可能提高规则组评估延迟和资源利用率,但会增加并发查询负载。
可以使用 --rules.max-concurrent-rule-evals
配置并发规则评估的数量,默认为 4
。
回退到提供旧的(Prometheus 2.x)Web UI,而不是新的 UI。作为 Prometheus 3.0 的一部分发布的新 UI 是一次完整的重写,旨在使底层更简洁、更少混乱和更现代化。但是,它尚未完全具备所有功能,并且尚未经过实战测试,因此某些用户可能仍然更喜欢使用旧的 UI。
--enable-feature=old-ui
--enable-feature=metadata-wal-records
启用后,Prometheus 将在内存中存储元数据,并按序列跟踪元数据更改作为 WAL 记录。
如果您还使用远程写入 2.0,则必须使用此功能,因为它只会从 WAL 中收集元数据。
--enable-feature=delayed-compaction
一个随机偏移量,最多为块范围的 10%
,被添加到 Head 压缩开始时间。这有助于 Prometheus 实例避免同时进行压缩,并减少共享资源上的负载。
只有自动 Head 压缩和直接由此产生的操作才受此延迟的影响。
如果可能进行多个连续的 Head 压缩,则只有第一次压缩会受到此延迟的影响。
请注意,在此延迟期间,Head 继续其通常的操作,包括服务和追加序列。
尽管压缩存在延迟,但生成的块的时间对齐方式与没有延迟时相同。
--enable-feature=promql-delayed-name-removal
启用后,Prometheus 将更改从 PromQL 查询结果中删除 __name__
标签的方式(对于需要此操作的函数和表达式)。具体来说,它会将删除延迟到查询评估的最后一步,而不是每次评估创建派生指标的表达式或函数时。
这允许通过 label_replace
和 label_join
函数选择性地保留 __name__
标签,并有助于防止“向量不能包含具有相同标签集的指标”错误。当对 __name__
标签应用正则表达式匹配器时,可能会发生此错误。
--enable-feature=auto-reload-config
启用后,Prometheus 将按照指定的时间间隔自动重载其配置文件。该时间间隔由 --config.auto-reload-interval
标志定义,默认为 30s
。
配置重载是通过检测主配置文件或任何引用的文件(例如规则和抓取配置)的校验和变化来触发的。为了确保重载期间的一致性并避免问题,建议原子地更新这些文件。
本文档是开源的。请通过提交问题或拉取请求来帮助改进它。