跳转至

VictoriaMetrics:长期指标存储

如果需要先理解为什么把指标和日志后端统一到 Victoria 生态,请先阅读 我为什么选择 Victoria 体系

VictoriaMetrics 是时序数据存储与查询系统,可接收 Prometheus Remote Write,也可配合 vmagent 负责抓取和转发。它解决多集群汇聚、较长保留和更大指标规模问题,但不会自动替你治理高基数、告警质量和容量规划。

组件关系

Exporter / Kubernetes
  → vmagent:发现、抓取、Relabel、缓冲、Remote Write
  → VictoriaMetrics:存储与查询
  → vmalert:执行告警/记录规则
  → Alertmanager
  → Grafana / VMUI

Prometheus 也可以保留本地数据并 Remote Write 到 VictoriaMetrics,既作为现场故障时的本地查询入口,又提供集中长期存储。

单机版与集群版

模式 适合 特点
Single-node 单集群、中小规模、简单运维 一个进程,备份和纵向扩容简单
Cluster 数据量/租户/写入查询需要横向扩展 vminsert、vmstorage、vmselect 分工,组件和网络更复杂

不要因为“生产”两个字就直接使用集群版。先根据活跃时序、样本写入率、保留时间、查询并发、故障域和运维能力评估。单机版配合可靠磁盘、备份和恢复演练,可能比维护不当的集群更可靠。

Prometheus Remote Write

remote_write:
  - url: http://victoriametrics:8428/api/v1/write
    queue_config:
      capacity: 10000
      max_shards: 20

Remote Write 需要监控待发送样本、失败、重试、队列长度和最老未发送时间。网络或后端长时间不可用时,本地 WAL/磁盘可能增长;恢复后补发也会形成写入洪峰。

vmagent

vmagent 可以使用 Prometheus 风格抓取配置,执行服务发现和 Relabel,并向一个或多个 Remote Write 目标发送数据。边缘站点或多 Kubernetes 集群可本地部署 vmagent,中央部署存储。

关键检查:

发现目标数 / 抓取成功率 / 每秒样本
Remote Write 队列与丢弃
网络压缩流量
磁盘缓冲和可用空间
每租户与每标签基数

查询与 MetricsQL

VictoriaMetrics 支持 PromQL 兼容查询并提供 MetricsQL 扩展。迁移时仍要用真实 Dashboard/Rule 验证函数、时间窗口和结果,不要只以语法能执行为标准。

sum by (service) (rate(http_server_requests_total[5m]))

VMUI 适合检查标签、原始序列和查询结果;Grafana 通过 Prometheus 数据源接口连接。慢查询要检查时间范围、正则、聚合前序列数和高基数标签。

保留、容量与备份

容量规划至少收集:

  • 活跃时序数和每日新增/消失时序。
  • 每秒写入样本与峰值。
  • 压缩后每日磁盘增长。
  • 保留期、复制因子和安全余量。
  • 查询并发、最大时间范围及缓存效果。

保留期变长会增加磁盘,但高基数还会增加索引、内存和查询压力。备份需要明确组件/目录、对象存储、保留、加密和恢复步骤,并实际恢复到隔离环境验证。

集群版故障定位

写入失败 → vminsert → vmstorage 可达性/容量/只读状态
查询失败 → vmselect → vmstorage → 查询规模与超时
部分数据缺失 → 租户、路由、复制、节点时间和采集端
规则异常 → vmalert 数据源、评估耗时、Remote Write/Alertmanager

扩缩 vmstorage、迁移磁盘和修改复制策略前,必须依据所用版本的官方步骤验证,避免把副本数当成备份。

官方参考:VictoriaMetrics DocumentationvmagentCluster