Prometheus 经过长时间的发展,从 0.x 到 1.x 到现在的 2.x,最近 Prometheus 还发布了 LTS 长期支持版本,Prometheus 开发团队承诺会在主要版本中保持 API 的稳定性,并努力避免对关键特性的更改。一些修饰性的、仍在开发中或依赖于第三方服务的特性不在此范围内。
在 Prometheus 2.x 中被认为稳定的内容:
- PromQL 查询语言和当前设计的数据模型
- 配置文件中的两大规则--告警规则和记录规则
- 针对第三方插件或者 Exporter 集成的格式
- HTTP v1 的 API 接口 (用于 Dashboards 和 UI 的)
- Prometheus 启动时的配置文件格式,但是要除去服务发现部分和远程读写部分。
- 规则或者告警文件的格式
- Prometheus 控制台模板的语法和语义
在 Prometheus 2.x 版本中被认为是不稳定的内容:
- 任何被列为实验性质或可能改变的特性,包括:
- PromQL 查询语言的 holt_winters 函数
- 远程读、远程写和远程读 endpoint
- Prometheus 服务器端的 HTTPS 和基本身份验证
- Prometheus 集成的各类服务发现,比如 Kubernetes 服务发现或者 Consul 服务发现等等,当然要除掉 static_configs 和 file_sd_configs,这两个是稳定的内容。
- Prometheus 服务端的一部分 Go 语言包的 API
- 通过 Prometheus Web 界面生成的 HTML 页面。
- Prometheus 自身的 /metrics 接口路径下的指标
- 准确的磁盘格式,在大部分情况下,这种变化是向前兼容的,并且 Prometheus 会进行透明化处理,维护者基本没有感知。
- Prometheus 运行输出的日志格式
在生产环境使用 Prometheus 的时候,只要没有使用被标记为实验特性或者不稳定的特性,那么在主版本升级中基本不需要太多操心,可以直接升级,而且不会有任何风险。Prometheus 在每次发版的时候都会将有破坏性的更改标记为 CHANGE
,在查看版本发布注记的时候,对于风险只要关注 CHANGE 部分就好。
而且基于这个个稳定性保证,每个 LTS 版本都会将当前的稳定性内容长期维护达半年的时间。这次的 2.37.0 版本会维护到 2023.01.31 。