VictoriaMetrics 2026 版本演进深度解读:从 v1.133.0 到 v1.151.0 的变更日志剖析
【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics
本文以 VictoriaMetrics 仓库官方变更日志 docs/victoriametrics/changelog/CHANGELOG.md 为骨架,系统梳理 2026 年发布的 v1.133.0 至 v1.151.0(含 tip 开发版)中值得关注的破坏性变更(Update Note)、安全修复(SECURITY)、新功能(FEATURE)与关键缺陷修复(BUGFIX),并结合仓库源码说明这些变更背后的实现意图与升级注意事项。读完本文,你将掌握该版本区间内的行为变化全貌,能够据此制定安全的升级计划、排查升级后可能出现的兼容性问题,并第一时间使用新版本提供的能力。
一、读懂这份变更日志:文档结构与阅读方法
CHANGELOG.md采用「主文件 + 年度归档」的组织方式:当前主文件只保留 2026 年至今(tip与 v1.133.0 及之后)的完整条目,更早版本(v1.132.0 及以前)则通过「See changes here」跳转到按年度拆分的归档文件:
- docs/victoriametrics/changelog/CHANGELOG_2025.md
- docs/victoriametrics/changelog/CHANGELOG_2024.md
- docs/victoriametrics/changelog/CHANGELOG_2023.md
- docs/victoriametrics/changelog/CHANGELOG_2022.md
阅读时需要特别关注三类条目:
tip区:位于文件头部,对应尚未打 tag 的最新提交(master 分支),可通过按 构建说明 从源码自行编译进行验证;Update Note N:每个版本开头以粗体标注的行为变更,是需要升级方手动配合的破坏性变更,例如默认值翻转、API 方法限制、指标重命名;- LTS 版本线说明:
v1.148.x、v1.136.x、v1.122.x、v1.110.x均声明为 LTS(长期支持)版本线,至少自首个版本发布起维护 12 个月,社区版修复与安全补丁会同步合入对应 LTS 分支,具体可见 docs/victoriametrics/LTS-releases.md。
从源码结构看,每个组件(vmsingle、vmagent、vmalert、vmauth、vmctl、vminsert、vmselect、vmstorage 等)的入口与实现分别位于 app/ 目录下,而流式聚合、指标库、存储引擎等公共能力集中在 lib/ 目录;变更日志中大量「指标新增」「告警规则调整」都能在 dashboards/vm/ 与 deployment/docker/rules/ 中找到对应落点。
二、安全修复专题:2026 年 VictoriaMetrics 的安全演进
2026 年的版本序列几乎每个版本都伴随 SECURITY 更新,主要分为「构建工具链升级」与「真实漏洞修复」两类。
2.1 构建工具链与基础镜像的持续升级
| 版本 | 变更内容 |
|---|---|
| tip | Go 构建器从 Go1.26.6 升级到 Go1.27.1 |
| v1.150.0 / v1.148.2 / v1.136.16 | Go1.26.5 → Go1.26.6 |
| v1.148.0 / v1.136.14 / v1.122.24 | Go1.26.4 → Go1.26.5 |
| v1.145.0 / v1.136.11 / v1.122.24 | Go1.26.3 → Go1.26.4 |
| v1.143.0 / v1.136.9 / v1.122.22 | Go1.26.2 → Go1.26.3 |
| v1.140.0 / v1.136.4 / v1.122.19 | Go1.26.1 → Go1.26.2 |
| v1.138.0 / v1.136.2 | Go1.26.0 → Go1.26.1 |
| v1.136.0 | Go1.25.6 → Go1.26.0 |
| v1.147.0 / v1.136.13 / v1.122.26 | 基础镜像 Alpine 3.23.4 → 3.24.1 |
| v1.141.0 | Alpine 3.23.3 → 3.23.4 |
Go 编译器与基础镜像的升级属于常规安全维护,但由于 VictoriaMetrics 的所有组件均由同一套构建流程产出(见 Makefile),这类升级会一次性影响全部二进制产物,升级方只需跟随版本即可,无需额外动作。
2.2 真实漏洞修复(值得重点评估的条目)
- vmauth JWT 鉴权绕过(tip,GHSA-f99m-22fh-qw96):当使用
match_claims进行 JWT 路由匹配时存在授权绕过,属于必须升级的高危项。相关 JWT 实现位于 app/vmauth/auth_config.go,match_claims配置说明可参见 docs/victoriametrics/vmauth.md 中的 JWT Claim Matching 一节。 - vmsingle / vmselect XSS(tip,GHSA-vw9j-rqhg-qff9):
/metric-relabel-debug返回的服务端错误包含用户输入片段且未正确转义,可导致/vmui/#/relabeling页面 XSS。 - HTTP Basic Auth 检查补齐(v1.151.0 / v1.148.3 / v1.136.17):此前
/api/v1/import/prometheus/config这类路径会匹配到数据写入处理器/api/v1/import/prometheus,导致-httpAuth.*凭据被跳过;修复后所有未单独校验*AuthKey的路径都会校验-httpAuth.*。 - delete_series 端点仅允许 POST(v1.149.0 / v1.148.1 / v1.136.15):
/api/v1/admin/tsdb/delete_series与/tags/delSeries此前接受 GET,存在基于 SSRF 的数据删除攻击面,现限制为仅 POST。如果现有脚本使用 GET 调用这些端点,必须改为 POST。 - 敏感信息脱敏(v1.144.0 系列):vmagent 的
-remoteWrite.headers、-remoteWrite.proxyURL,vmalert 的-remoteWrite.headers/remoteRead.headers/datasource.headers/notifier.headers,vmsingle/vmselect 的vmalert.proxyURL等携带凭据的 flag 值,不再出现在启动日志、/metrics与/flags中,防止 Authorization 头与 API Key 泄露。
三、升级必读:破坏性变更(Update Note)全梳理
这是升级前必须逐条核对的部分。下表汇总了 2026 年版本中所有需要人工配合的行为变化:
| 版本 | 变更内容 | 影响与应对 |
|---|---|---|
| v1.150.0 | -enableMultitenancyViaHeaders默认值由false改为true(vmagent、vminsert、vmselect) | 集群与 vmagent 默认支持通过 Header 指定租户,https://:8481/select/prometheus/api/v1/query这类省略租户 ID 的 URL 变为合法。如不需要可显式传-enableMultitenancyViaHeaders=false恢复旧行为 |
| v1.149.0 | vminsert 的-disableRerouting默认值由true改为false | 基于慢节点的 re-routing 默认开启,-replicationFactor > 1时自动禁用;依赖旧行为需显式传-disableRerouting |
| v1.149.0 / v1.148.1 | delete_series 相关端点仅接受 POST | 更新脚本与工具 |
| v1.148.0 | vmalert-tool 默认测试起始时间由1970-01-01改为2000-01-01 | 涉及time()、day_of_*()等依赖当前时间函数的测试结果可能变化 |
| v1.147.0 | vmagent 存在 CPU/内存升高 bug(引入于 #10854) | 官方建议升级到 v1.148.0 或回退 v1.146.0;同时 vmalert 升级了 LogsQL 解析器(v1.51.0),使用 vlogs 查询类型且含弃用语法时规则校验会失败,需先审查规则 |
| v1.140.0 | CSV 导出/api/v1/export/csv增加表头行 | 现有 CSV 处理脚本需跳过首行;vmui Raw Query 的 CSV 导出同步由后端提供表头 |
| v1.140.0 / v1.136.4 / v1.122.19 | MetricsQL 二元运算存在括号求值顺序 bug(10 - (3 + 3 + 4)被算成10 - 3 + 3 + 4) | 官方强烈建议完全避开这些版本 |
| v1.137.0 | -promscrape.dropOriginalLabels默认值由true改为false | Discovered targets调试 UI 恢复默认开启 |
| v1.133.0 | 引入 per-partition index(分区级索引) | 升级时需要一次性注册全部活跃时间序列,期间写入与查询会变慢;retention 短于 1 个月的用户磁盘占用可能增加;对应dateMetricIDCache改为轮转而非重置,-storage.cacheSizeIndexDBDateMetricIDflag 被移除 |
| v1.134.0 | -retentionPeriod支持显式月单位M | 无破坏性,但提供更明确的配置表达 |
此外 v1.148.x 作为 LTS 线,其修复集与社区最新版保持一致;v1.141.0 起(enterprise 自动 vmstorage 发现)与 v1.142.0 中存在会阻塞写入的已知 bug,同样被多个 Update Note 点名,建议相关用户避开。
四、新功能纵深:2026 年的能力增量
4.1 存储与查询引擎:时间维度管理全面增强
- 未来时间戳支持(v1.141.0):vmsingle 与集群 vmstorage/vmselect 新增
-futureRetentionflag,控制允许写入与查询的未来时间戳范围(对应 issue #827)。 - 历史回填限制(v1.148.0):新增
-maxBackfillAgeflag,用于限制写入历史时间戳样本,例如在冷热分层(nvme/hdd)迁移旧数据后避免误写超期数据。 - per-partition index(v1.133.0):索引随分区一并过期删除,显著降低 indexDB 长期占用的磁盘空间。这是 2026 年存储层最重大的架构级变更,动机可追溯到 issue #7599,配套改动包括缓存轮转策略与
-storage.cacheSizeIndexDBDateMetricIDflag 的移除。 - Unix domain socket 监听(v1.151.0):所有组件支持
-httpListenAddr=unix:/run/victoria-metrics.sock,便于在无网络命名空间场景下对接本地进程。 - 工作集缓存持久化(v1.148.2 / v1.136.16):优雅停机时持久化包含活跃工作集的上一轮缓存,避免 split-mode 缓存轮转后重启出现缓存冷启动拖慢写入与查询(对应 issue #11299)。
查询侧的新增包括 MetricsQL 的fill修饰符(v1.148.0,为二元运算两侧缺失序列填充默认值)、histogram_fraction()(v1.137.0,计算落在lowerLe与upperLe之间的桶占比,实现在 lib/metricsql)、buckets_limit选择算法改进(v1.147.0,去掉首尾连续空桶以获得更准确的 min/max);/api/v1/query_range还新增optimize_repeated_binary_op_subexprs=1参数(v1.147.0),让共享同一优化聚合结果的二元运算两侧顺序执行、复用 rollup 缓存。
4.2 vmagent:采集与远端写入能力的扩展
- Monitoring Data eXchange(MDX,v1.147.0):通过
-remoteWrite.mdx.enable=true将仅来自 VictoriaMetrics 服务自身的指标路由到指定-remoteWrite.url,适用于「监控之监控」场景——一个远端存储接收全量指标,另一个只接收 VM 自身指标。相关过滤逻辑可在 app/vmagent 的 remotewrite 子目录中追溯。 - 标签混淆(v1.149.0):
-remoteWrite.obfuscateLabels对指定标签值做哈希后再发送,可在对外共享指标的同时隐藏敏感标签值。 - 内存队列优先(v1.146.0):
-remoteWrite.inmemoryQueues让新摄入数据优先于文件型持久队列中的历史数据,缩短端到端延迟。 - 按 URL 独立配置队列(v1.135.0):
-remoteWrite.queues可对每个 remoteWrite 目标分别设置,例如对不支持乱序写入的后端(如 Mimir)用-remoteWrite.queues=1,对 VictoriaMetrics 保持高队列数,无需再拆分多实例。 - Unix domain socket 抓取(v1.148.0):通过目标标签
__unix_socket__配置 socket 路径即可抓取本地进程指标;__max_scrape_size__标签支持按目标覆盖max_scrape_size。 - 服务发现扩充:新增
linode_sd_configs(v1.150.0)、ec2_sd_configs的profile选项(v1.140.0)、yandexcloud_sd_configs的folder_ids(v1.139.0)、Hetznerrobot角色的__meta_hetzner_robot_datacenter标签(v1.143.0);http_sd后台发现性能得到优化(v1.148.0)。 - 全局 sampleLimit(v1.133.0):支持全局级
sampleLimit,且目标级sample_limit可正确覆盖全局值。 - 卡点与保护:
-remoteWrite.maxHourlySeries/-remoteWrite.maxDailySeries支持-1(v1.140.0),即只统计不限制,便于先评估再落限;集群模式下新增-promscrape.cluster.shardByLabels(v1.146.0)用于指定分片依据标签。
4.3 vmauth:JWT / OIDC 认证体系成型
2026 年 vmauth 从「基础反向代理」演进为具备完整 JWT 生态的认证网关(核心配置结构见 app/vmauth/auth_config.go):
- JWT Token 认证代理(v1.137.0):基于
public_keys做签名校验的 JWT 认证; - JWT Claim 路由(v1.138.0):
match_claims按 JWT 声明做请求路由,v1.139.0 扩展了数组型声明值支持; - JWT Claim 模板化(v1.137.0):使用
vm_accessclaim 中的字段动态改写上游 URL 与请求头,免去为每个租户单独维护配置;v1.144.0 补充{{.MetricsAccountID}}、{{.MetricsProjectID}}占位符,v1.147.0 增加default_vm_access_claim兜底; - OIDC Discovery(v1.138.0):自动拉取并轮换 OIDC Provider 的公钥,免除手动维护公钥;
- deny_paths(tip):在
url_map中对src_paths命中的子路径返回 403/401,避免逐一枚举白名单路径; - 请求体缓冲(v1.135.0):
-requestBufferSize缓冲慢客户端(如 IoT 设备)请求体后再转发,降低后端压力; -maxQueueDuration(v1.133.0):并发超限时等待入队执行而非立即触发重试风暴。
配合这些能力,deployment/docker/rules/alerts-vmauth.yml 在 v1.147.0 新增InvalidAuthTokenRequestErrors告警规则,用于识别错误令牌、过期令牌与暴力破解尝试;vmauth 同时引入 2~3 秒的 OWASP 建议延迟并支持将无效令牌请求写入 access log。
4.4 vmalert 与 vmalert-tool:规则编排与回放增强
- 模板新增
$interval变量(v1.149.0,暴露规则组评估间隔,可拼接带相对回看窗口的 dashboard 链接)与formatTime函数(v1.143.0); -rule.stripFilePath(v1.143.0)从日志与 API 响应中剥离规则文件路径;/api/v1/rules支持match[]=过滤与search/分页(v1.145.0 / v1.139.0);- 组级
eval_offset支持负值(v1.138.0),在[0...groupInterval]内以groupInterval-abs(eval_offset)起始评估;v1.140.0 起组评估时间与eval_offset对齐; -replay.continueWithExecutionErr(v1.149.0)允许回放时跳过执行失败的规则;v1.150.0 起同时处理 400 Bad Request;- 新增
vmalert_remotewrite_sent_rows/vmalert_remotewrite_sent_bytes/vmalert_remotewrite_queue_size/vmalert_remotewrite_queue_capacity等可观测性指标(v1.140.0);v1.143.0 支持通过 VictoriaMetrics remote write 协议发送数据。
4.5 vmctl:迁移能力大扩展
- 专用 Thanos 模式(v1.140.0):支持原始与降采样 Thanos 块及全部聚合类型(count/sum/min/max/counter),每个聚合以
metric_name:5m:count形式的独立指标导入;配套--thanos-*前缀 flags; - Mimir 对象存储迁移(v1.145.0):新增从 Mimir 对象存储迁移数据的能力;
- Prometheus Native Histograms 迁移(v1.149.0):remote read 模式下原生直方图转换为
_count/_sum/_bucket+vmrange序列,自定义桶保留原始边界; - 认证与监控(v1.146.0 / v1.135.0):新增
-vm-headers、-vm-bearer-token;内置迁移进度指标,失败退出时也会推送-pushmetrics.url(v1.146.0)。
4.6 流式聚合(Stream Aggregation)
流式聚合实现在 lib/streamaggr,2026 年主要增量:
- 新增
sum_samples_total输出(v1.146.0),将输入 delta 值累加为累计计数器; staleness_interval默认值由2*interval改为聚合规则间隔(v1.146.0),减少样本间隙导致的尖峰;- 新增
vm_streamaggr_dedup_dropped_samples_total(v1.146.0)与vm_streamaggr_counter_resets_total(v1.141.0,用于total*/increase*/rate*输出,辅助排查计数器重置); - 刷新延迟由样本 p95 滞后改为最大滞后(v1.144.0 / v1.136.10),避免极端离群样本被当作「过旧」丢弃。
4.7 可观测性与告警规则
- 新指标:
vm_os_info(v1.140.0)、vm_fs_info(v1.143.0,暴露数据目录文件系统类型)、vm_filestream_fsync_duration_seconds_total与vm_filestream_fsync_calls_total(v1.140.0,检测存储写入瓶颈)、vm_data_size_bytes{type="storage/metaindex"}与{type="indexdb/metaindex"}(v1.147.0)、vm_app_prev_shutdown_unclean(v1.151.0,配合 deployment/docker/rules/alerts-health.yml 中新增的UncleanShutdown告警规则,异常停机后触发 10 分钟); vm_log_messages_total增加is_printed标签(v1.135.0),并统计被-loggerLevel抑制的日志,便于无日志环境排障;- 告警规则:vmbackupmanager 新增 5 条「备份缺失」告警(v1.149.0,基于新指标
vm_backup_last_success_at);vmalert 新增AlertingRuleResultsApproachingLimit/RecordingRuleResultsApproachingLimit(v1.147.0);alert-statistics dashboard 增加 pending/firing 统计(v1.140.0)。
4.8 vmui 与 Dashboard
vmui(前端源码见 app/vmselect/vmui)在 2026 年持续打磨:Top Queries 页新增「内存占用最高查询」与人类可读时长/容量显示(v1.144.0 / v1.136.0);Cardinality Explorer 聚焦指标/标签时展示seriesCountByMetricName表(v1.139.0);Raw Query 图表显示null/stale marker(v1.144.0);favicon 颜色可定制(v1.150.0);时区偏移量常驻显示(v1.151.0);自动刷新间隔持久化到 URL(v1.149.0)。Grafana 侧则新增基于 Cardinality Explorer 的 dashboards/metrics-explorer.json(v1.139.0,需 Infinity 插件)。
五、关键 BUGFIX 实战解读:从生产事故中学习
5.1 崩溃类(建议优先升级)
sort_by_label_numeric()崩溃(v1.151.0):标签值含 309 位及以上数字时进程崩溃,已修复;/api/v1/import/native崩溃(v1.151.0):约 45 字节的特制请求可触发进程崩溃;- OpenTelemetry Firehose 无限循环(v1.151.0 / v1.148.3):
/opentelemetry/api/v1/push收到 data 字段含不完整 varint 的畸形记录时 goroutine 永久自旋、持续占满 CPU,属典型的资源耗尽型 DoS; - vmselect 临时结果磁盘不足(v1.151.0):磁盘空间不足时直接失败查询,而非崩溃;
- regexp 深度过大(v1.137.0):
{"__name__"=~"a{0,1000}"}这类大重复范围正则导致expression nests too deeplypanic。
5.2 数据正确性类(静默错误,危害更大)
- MetricsQL 二元运算顺序 bug(v1.140.0 引入,v1.141.0 修复):
10 - (3 + 3 + 4)被错误求值为10 - 3 + 3 + 4,官方明确建议避开 v1.140.0、v1.136.4、v1.122.19; - 比较运算 NaN 语义(v1.149.0 / v1.148.1):
foo != (bar > 100)中内层比较过滤掉的点以 NaN 表示,而value != NaN恒为 true,导致意外结果; integrate()尾部外推(v1.145.0):序列结束后不再无限累加最后一个采样值,避免积分被严重高估;changes()跨窗口误报(v1.135.0):样本间隙超过回看窗口时可能返回非零值;- 时间戳解析(v1.148.2 / v1.149.0):小数 Unix 时间戳(如
12.0曾被当作 12000 秒)与亚秒级科学计数法(1.784144612388E9)的解析修复; - 空标签名覆盖指标名(v1.150.0 / v1.148.2):
"metric":{"__name__":"foo","":"bar"}此前会把指标名覆盖为bar,现统一跳过空名标签。
5.3 数据丢失与队列可靠性类
- 持久队列元数据原子写入(v1.148.0):先 flush chunk 数据再更新元数据、原子写 metainfo,避免异常停机后丢队列;
- 工作集缓存(v1.148.2):优雅停机时避免保存空缓存导致重启后写入/查询变慢;
- vmalert 样本时间戳截断(v1.151.0 / v1.148.3):decimal/scientific 记法的实例查询时间戳曾被静默截断为 0;
- vmalert-tool 连接复用(v1.151.0):每次写入新建连接导致大量
TIME_WAIT套接字、可能耗尽临时端口,新增-remoteWrite.maxIdleConnections调节; - vmctl vm-native 模式连接复用(v1.151.0):
--vm-concurrency超过 2 时此前空闲连接数被限制为每主机 2 个,现可复用。
5.4 连接与并发类
- vmselect 连接池复用失效连接(v1.145.0 / v1.136.11):复用被静默丢弃的 TCP 连接导致偶发
write: connection timed out,修复为失败时新建连接重试; - 优雅停机排空(v1.147.0):
-http.maxGracefulShutdownDuration到期前主动取消 in-flight 请求,避免logger.Fatalf -> os.Exit跳过存储 flush 导致内存数据丢失; - vminsert 缓冲按节点优化(v1.141.0):依据 CPU、内存与存储节点数自适应调整每 vmstorage 节点缓冲大小,降低 OOM 风险。
六、升级与验证建议
- 避开已知坏版本:v1.140.0、v1.136.4、v1.122.19(二元运算 bug);使用 enterprise 自动 vmstorage 发现的用户避开 v1.141.0 与 v1.142.0;v1.147.0 的 vmagent 用户注意 CPU/内存升高问题;
- LTS 用户:v1.148.x / v1.136.x / v1.122.x / v1.110.x 均持续接收重要修复,生产环境可优先选择 LTS 线,社区最新版则获得全部功能;
- 逐条核对 Update Note:特别是 v1.150.0 的多租户 Header 默认开启、v1.149.0 的 re-routing 默认开启与 delete_series POST 限制、v1.140.0 的 CSV 表头、v1.137.0 的 dropOriginalLabels 翻转,这些都会影响既有脚本与拓扑;
- 功能验证:新版本中与自身场景相关的修复(如 Kafka 消费、S3 备份重试、OpenTelemetry 摄入)可在 apptest/tests 下的集成测试中看到配套覆盖(例如 ingestprotocols、vmagent_remotewrite、vmctl 系列迁移测试);
- 试用 tip:需要提前验证最新提交时,可参照 docs/victoriametrics/README.md 中各组件的从源码构建说明编译,并按 docs/victoriametrics/Single-server-VictoriaMetrics.md 或 docs/victoriametrics/Cluster-VictoriaMetrics.md 部署。
总体来看,2026 年的版本线以「安全加固 + 多租户/认证体系完善 + 存储层索引重构 + 可观测性补全」为主轴,v1.133.0 的 per-partition index 与 v1.137.0 起的 vmauth JWT/OIDC 体系是其中最值得深入研究的架构级演进,值得按本指南逐条对照自身环境评估。
【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考