资讯动态

Grafana Mimir 2.9 版本发布说明解析:store-gateway 内存优化、Ruler 存储缓存与实验性流式 Chunks

发布时间:2026/10/14 2:06:39 来源:尧图企业网站定制
时序数据库后端数据存储可观测性云原生【免费下载链接】mimirGrafana Mimir provides horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus.项目地址https://gitcode.com/gh_mirrors/mimir/mimir点击查看免费下载Grafana Mimir 2.9 是一次以“降本增效”为主线的重要版本它降低了 store-gateway 与 querier 在宽匹配器查询下的内存/CPU 开销为 Ruler 引入实验性对象存储缓存并将规则同步间隔从1m放宽至10m还带来了 ingester 到 querier 流式 chunks 的实验性支持。本文基于 docs/sources/mimir/release-notes/v2.9.md 与当前仓库源码完整梳理该版本的功能增强、废弃/移除项、默认值变化与缺陷修复帮助你在升级前准确评估影响面。版本亮点概览Grafana Mimir 2.9 的核心亮点可以归纳为四类性能优化加一项实验性能力降低 store-gateway 内存占用当查询包含宽泛的 label 匹配器例如datacenterdc1时Mimir 2.9 会拉取更少的索引数据从而显著减少 store-gateway 的内存分配降低部分 shuffle sharding 场景下的 CPU 占用当租户启用了 shuffle sharding且 shard size 较大但仍小于 ingester 总数时querier 的 CPU 消耗明显下降减少 compactor 与 ruler 的对象存储 API 调用次数包括实验性的 ruler 存储缓存与“规则变更即时同步”两项优化实验性支持从 ingester 到 querier 流式传输 chunks预期在大基数查询场景下大幅降低 querier 内存占用因为 chunks 可以被按需读入内存。完整的变更清单可参见仓库内的 CHANGELOG.md。功能与增强1. Ruler 存储缓存实验性在运行 2 个及以上 ruler 副本的 Mimir 集群中每个副本都会周期性地向对象存储发起 “list objects” 请求来发现规则文件。2.9 引入了实验性的 ruler 存储缓存来减少这类调用可通过-ruler-storage.cache.*CLI flags 或其对应的 YAML 配置项进行配置。从源码结构看该配置定义在 pkg/ruler/rulestore/config.gorulestore.Config内嵌了Cache cache.BackendConfig字段并以ruler-storage.为前缀注册 flags。需要注意两个实现约束缓存支持的 backend 目前是memcachedsupportedCacheBackends []string{cache.BackendMemcached}且除local本地目录存储外均适用在后续版本中见 CHANGELOG.md 第 1197 行附近实验性 flag-ruler-storage.cache.rule-group-enabled被移除只要配置了缓存规则组内容的缓存就始终启用。2. 规则变更即时同步-ruler.poll-interval放宽至 10m2.9 引入了一项新特性当通过 API 修改租户规则配置时立即触发一次该租户规则组的同步而不必等待周期性轮询。作为配套周期性同步间隔-ruler.poll-interval的默认值从1m放宽到10m。这一新行为默认全局启用可通过以下两种方式调整全局禁用-ruler.sync-rules-on-changes-enabledfalse租户级调整per-tenant overrideRulerSyncRulesOnChangesEnabled接口定义见 pkg/ruler/compat.go。从源码实现看同步链路是异步的 “fire-and-forget” 模式pkg/ruler/ruler.go 中的NotifySyncRulesAsync首先检查租户级开关随后把 userID 入队到outboundSyncQueue随后notifySyncRules会遍历 ring 中所有活跃 ruler调用SyncRulesgRPC 端点pkg/ruler/ruler.go并且不等待远端实例完成同步、失败仅记录日志。这也意味着即时同步是“尽力而为”的加速通道-ruler.poll-interval的周期轮询仍然是最终的一致性兜底。3. 减少 compactor 与 ruler 的对象存储访问除 ruler 缓存外2.9 还包含针对 compactor 和 ruler 访问对象存储中规则数据的通用优化目的是减少不必要的 list/get 调用。对于规则数量庞大或对象存储费用敏感的集群这是一项“静默”的成本优化——升级后通常无需改配置即可受益。4. store-gateway 内存优化与 shuffle sharding CPU 优化宽匹配器索引裁剪面对datacenterdc1这类覆盖大量 series 的匹配器store-gateway 现在只拉取裁剪后的索引数据直接减少内存分配。这在 store-gateway 因宽查询被 OOM 的集群中收益最直接shuffle sharding CPU 优化当租户 shard size 较大但小于 ingester 总数时例如 3 副本 ring 中 shard size 为 2 这类“半冗余”配置querier 过去会在每个 shard 上重复做无效功2.9 修复了这一冗余路径的 CPU 开销。5. 实验性ingester 到 querier 的流式 chunks2.9 增加了实验性支持querier 查询 ingester 时可以流式接收 chunks而不是等整个响应打包后一次性载入内存。这使得选择大量 series 的查询内存曲线从“峰值集中”变为“按需读取”。从源码结构看流式消费侧实现在 pkg/querier/block_streaming.gostoreGatewayStreamReader负责管理来自远端的 chunk 流与缓冲通过StartBuffering启动流式读取逐批处理storepb.StreamingChunks消息并基于StreamingChunksEstimate进行预估。当前仓库主干中这一机制已演进为更通用的 streaming 读路径验证了 2.9 实验特性的技术方向。6. Helm chart 独立发布Grafana Mimir 和 Grafana Enterprise Metrics 的 Helm chart 从 2.9 起独立发布。仓库内保留了完整的 chart 定义与测试集包括 operations/helm/charts 下的模板、operations/helm/tests 下约 2200 个测试 YAML以及 operations/compare-helm-with-jsonnet/ 中用于保证 Helm 与 jsonnet 输出一致性的对比工具。如果你此前跟随 jsonnet 部署升级 chart 时应注意版本节奏与 Mimir 本体不再同步。重要变更Important changes升级 2.9 前以下变更需要逐一核对你的部署配置与监控告警。已移除的指标与配置被移除的已废弃/实验性指标cortex_bucket_store_chunk_pool_requested_bytes_totalcortex_bucket_store_chunk_pool_returned_bytes_total在 2.9 新标记为废弃、并计划于 2.11 移除的配置废弃项说明-querier.query-ingesters-within该配置已迁移至 per-tenant overrides-blocks-storage.bucket-store.bucket-index.enabledbucket index 相关-blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes、-blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes、-blocks-storage.bucket-store.max-chunk-pool-byteschunk pool 相关-querier.iterators、-query.batch-iteratorsiterator 相关实验开关2.9 中正式移除的 2.7 已废弃配置移除项移除后的行为-blocks-storage.bucket-store.chunks-cache.subrange-size固定使用16000-blocks-storage.bucket-store.consistency-delay—-compactor.consistency-delay—-ingester.ring.readiness-check-ring-health—如果你的启动脚本或 Helm values 中还显式传着这些 flag升级后应清理掉避免依赖已无意义的参数。实验特性转为稳定Stable以下 flag 从实验性转为稳定可放心用于生产-query-frontend.query-sharding-max-regexp-size-bytes-query-scheduler.max-used-instances-(alertmanager|blocks|ruler)-storage.storage-prefix-compactor.first-level-compaction-wait-period-usage-stats.enabled与-usage-stats.installation-mode-query-frontend.query-sharding-target-series-per-shard其中query-sharding-max-regexp-size-bytes的判定逻辑可见 pkg/frontend/querymiddleware/limits.go 的接口定义与 pkg/frontend/querymiddleware/querysharding.go 的实现sharding 决策会读取多租户中“最小正数”作为正则大小上限防止因单个租户配置为 0不限制而使分片决策失控。默认值变更Flag旧默认新默认影响-query-frontend.query-sharding-max-regexp-size-bytes04096正则匹配器字节数超过 4096 的查询默认不再被分片-compactor.partial-block-deletion-delay0s1d因上传/删除失败产生的 partial block 将被自动清理-ruler.poll-interval1m10m规则轮询放宽依赖“即时同步”机制兜底关于 partial block 清理从源码结构看compactor 的 block cleaner 在 pkg/compactor/blocks_cleaner.go 中逐租户读取CompactorPartialBlockDeletionDelay当延迟低于允许的最小值时会以警告日志禁用该租户的清理逻辑。默认1d意味着block 上传或租户删除过程中意外中断留下的part/前缀对象会在一天后被自动删除减少了人工清理 partial block 的运维负担——但如果你依赖自定义脚本清理这些对象需要重新核对窗口期是否冲突。缺陷修复Bug fixesStore-gateway检测 postings cache 中的碰撞上游 PR #4770。postings cache 碰撞若不被检测理论上可能返回错误的 postings 列表此修复保证数据正确性Store-gateway修复LabelValues响应缓存值超过 655360 个时的 panic上游 PR #5021。对于高基数 label如instance值极多的租户此前命中的超长缓存条目会触发 panic现予以修复。2.9.4安全补丁2.9.4 将 Alpine 基础镜像升级到 3.18.5用于修复 CVE-2023-5363上游 PR #6895。如果你部署在 2.9.x 线上环境建议直接采用 2.9.4 及以上构建。升级建议小结结合以上变更升级 2.9 前的核对清单清理已移除的 4 个 flag2.7 废弃项否则部分发行版启动时会因未知/无效参数告警监控大盘中引用cortex_bucket_store_chunk_pool_*_total两个指标的面板需要下线或替换评估query-sharding-max-regexp-size-bytes默认4096是否会影响你的长正则查询分片行为必要时显式调大或置 0规则密集、对象存储调用费高的集群可提前规划 memcached 资源并试点-ruler-storage.cache.backendmemcached注意 local 后端不支持缓存依赖-ruler.poll-interval控制规则生效延迟的运维流程需知晓新默认 10m以及默认开启的 API 变更即时同步可用-ruler.sync-rules-on-changes-enabledfalse或租户级 override 关闭安全合规要求下镜像版本选择 2.9.4 及以上。完成上述核对后2.9 带来的 store-gateway 内存下降、querier CPU 下降与对象存储调用下降通常可以“零配置改动”直接享受。赞分享时序数据库后端数据存储可观测性云原生【免费下载链接】mimirGrafana Mimir provides horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus.项目地址https://gitcode.com/gh_mirrors/mimir/mimir点击查看免费下载相关推荐Grafana Mimir 2.10 版本发布解读Ruler 过滤、活跃度 Cardinality、内存优化与实验特性全景Grafana Mimir 2.10 版本发布解读Ruler 过滤、活跃度 Cardinality、内存优化与实验特性全景 本文围绕 Grafana Mimi时序数据库后端数据存储可观测性云原生Grafana Mimir 2.7 版本发布说明解读store-gateway 流式加载默认开启、ruler 支持 keep_firing_for 与原生直方图摄取Grafana Mimir 2.7 版本发布说明解读store gateway 流式加载默认开启、ruler 支持 keep_firing_for 与原生直方时序数据库后端数据存储可观测性云原生Grafana Mimir Helm Chart v5.0 发布说明深度解读PSP 破坏性变更、Ruler 元数据缓存与滚动策略优化Grafana Mimir Helm Chart v5.0 发布说明深度解读PSP 破坏性变更、Ruler 元数据缓存与滚动策略优化 本文基于官方发布说明 v时序数据库后端数据存储可观测性云原生上一篇reactable开发实战构建Twitter粉丝分析仪表盘完整案例下一篇Qwen2-0.5B社区贡献指南如何参与模型改进与开源协作创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑