Prometheus 启动时被禁止的功能特性

Posted 耳东xErdong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus 启动时被禁止的功能特性相关的知识,希望对你有一定的参考价值。

Prometheus

Prometheus 有一些功能特性在服务启动的时候是默认禁止的,因为这些功能特性是对 Prometheus 有破坏性或是实验性质的,在未来的版本升级中这些特性会发生变化。如果发生了变化,这些变化会在每个版本的发行注记中进行标注和描述。


我们在 Prometheus 启动的时候在命令行中使用 ​​--enable-feature​​ 参数来开启这些功能特性,如果实验性的功能特性在验证稳定之后,会在未来的版本中默认开启该功能。


本文基于 Prometheus v2.37.0 进行这些功能特性的描述。

在外部的 label 中展示环境变量

​--enable-feature=expand-external-labels​


根据当前环境变量的值替换 ​​$var​​ 或 ​​$var​​ 在 ​​external_labels​​ 中的值 。对未定义变量的引用将被替换为空字符串,​​$​​ 字符可以使用 ​​$$​​ 进行转义。

远程写 Receiver

​--enable-feature=remote-write-receiver​


远程写接收端允许 Prometheus 接受来自其他 Prometheus 服务端的远程写请求。对于这个特性不建议使用 ​​--enable-feature​​ 参数来开启,可以使用 ​​--web.enable-remote-write-receiver​​ 来代替,另外在之后的发版发布过程中,这个功能特性可能会被放弃。

Exemplar 存储

​--enable-feature=exemplar-storage​


OpenMetrics 引入了将 Exemplar 添加到特定指标的能力。Exemplar 是对 MetricSet 之外的数据的引用,比较常见的用例是程序跟踪的 ID。


Exemplar 存储是作为一个固定大小的循环缓冲区来实现的,它将所有 series 的 Exemplar 存储在内存中。启动服务的时候打开该特性会将 Prometheus 所抓取的 Exemplar 存储。块存储或者 Exemplar 的配置文件可以用来控制循环缓冲区的大小。一个只有 ​​traceID=<jaeger-trace-id>​​ 的 Exemplar 在内存中使用了大约 100 字节的 Exemplar 存储空间。如果 Exemplar 存储被启用,我们还将 Exemplar 附加到 WAL 以实现本地持久性(用于 WAL 持续时间)。

关闭的时候创建内存快照

​--enable-feature=memory-snapshot-on-shutdown​


这将在关闭时获取内存中数据块的快照以及 series 信息,并将其存储在磁盘上。开启这个功能以后可以减少 Prometheus 的启动时间,因为可以用这个快照和 m-mapped chunk 恢复内存状态,而不需要 WAL 重放。

获取额外的指标

​--enable-feature=extra-scrape-metrics​


启用这个功能特性以后,对于每个实例的数据抓取,Prometheus 会在以下额外的时间序列中存储一个 sample:


  • ​scrape_timeout_seconds​​ : 为目标配置的 scrape_timeout , 这允许您通过使用 scrape_duration_seconds 和 scrape_timeout_seconds 来测量每个目标,以了解它们距离超时间的距离。
  • ​scrape_sample_limit​​ : 为目标配置的 sample_limit ,这样可以判断每个目标距离达到限制还有多少余量,查询语句可以使用 scrape_samples_post_metric_relabel / scrape_sample_limit


注意,如果没有配置限制,则 scrape_sample_limit 缺省是 ​​0​​,这意味着上面的查询因为没有限制的目标返回 ​​+Inf​​ (因为我们除以零)。


如果只想查询具有 sample 限制的目标,可以使用以下查询:scrape_samples_post_metric_relabeling / (scrape_sample_limit > 0)。


  • ​scrape_body_size_bytes​​ : 如果数据获取成功,那么这个数据是最近获取的未压缩的数据大小。因为 body_size_limit 超过限制而导致的获取数据失败那么会返回值为 -1,其他情况的获取数据失败返回值为 0

新的服务发现管理

​--enable-feature=new-service-discovery-manager​


启用这个功能特性后,Prometheus 将使用一个新的服务发现管理器,该管理器在重新加载时不会重启未修改的发现。这使得重新加载更快,减少了服务发现源的压力。


Prometheus 开发团队鼓励用户测试新的服务发现管理器,并报告上游的任何问题。


在未来的版本中,这个新的服务发现管理器会变成默认的服务发现管理器,这个功能特性的标记会被删除。

Prometheus agent

​--enable-feature=agent​


启用后,Prometheus 运行在代理模式。代理模式仅限于发现、获取数据和远程写。这个模式的主要用途是用来从中心远程端查询数据,并且不需要在本地查询数据。

每一步的统计数据

​--enable-feature=promql-per-step-stats​


这个功能特性启用以后,在查询请求中传入 ​​stats=all​​ 参数将返回每一步的统计数据。目前这个功能仅限于 totalqueryablesample。


当在引擎或查询中禁用这个功能以后,就不会计算每一步的统计数据。

Go 最大进程自动匹配

​--enable-feature=auto-gomaxprocs​


打开这个功能特性以后,GOMAXPROCS 变量会自动设置为匹配 Linux 的容器 CPU 的配额。这个特性当 Prometheus 在容器中运行的时候会比较有用。

以上是关于Prometheus 启动时被禁止的功能特性的主要内容,如果未能解决你的问题,请参考以下文章

翻译Prometheus 2.12.0 新特性

Prometheus 2.14.0 新特性

如何理解 SVM 中的功能余量?

问题 HTTP 错误 403:从 Internet 读取时被禁止 [重复]

忽略 prometheus alertmanager 禁止规则

当我发送 POST 请求时被禁止 403