VictoriaMetrics#

VictoriaMetrics 是一个高性能、低资源占用的 time series database,常用于替代或扩展 Prometheus 的长期存储能力。

1. Core Concepts#

Component Purpose
victoria-metrics Single-node VictoriaMetrics,适合中小规模或单机部署
vmstorage Cluster 模式中的存储节点
vminsert Cluster 模式中的写入入口
vmselect Cluster 模式中的查询入口
vmagent 采集 metrics,并通过 remote_write 写入 VictoriaMetrics
vmalert 执行 recording rules / alerting rules
vmauth 多租户、认证、反向代理入口

2. When To Use#

适合使用 VictoriaMetrics:
    Prometheus 本地存储保留时间不够
    需要更低的存储成本
    需要 remote_write 长期存储
    需要跨集群聚合查询
    Prometheus 压力过大,需要拆分 scrape 和 storage

不一定需要 VictoriaMetrics:
    metrics 规模很小
    只需要本地短期排障
    团队还没有 Prometheus / PromQL 基础

3. Install#

Docker: Single-node#

docker run -d \
  --name victoria-metrics \
  -p 8428:8428 \
  -v victoria-metrics-data:/victoria-metrics-data \
  victoriametrics/victoria-metrics:latest \
  -retentionPeriod=30d

verify:

curl http://localhost:8428/health
curl 'http://localhost:8428/api/v1/query?query=up'

Docker Compose#

services:
  victoria-metrics:
    image: victoriametrics/victoria-metrics:latest
    ports:
      - "8428:8428"
    volumes:
      - victoria-metrics-data:/victoria-metrics-data
    command:
      - -retentionPeriod=30d

volumes:
  victoria-metrics-data:

4. Write Data#

Prometheus remote write:

remote_write:
  - url: http://localhost:8428/api/v1/write

vmagent remote write:

scrape_configs:
  - job_name: nodejs-custom-metrics
    static_configs:
      - targets:
          - localhost:3000
vmagent \
  -promscrape.config=prometheus.yml \
  -remoteWrite.url=http://localhost:8428/api/v1/write

5. Query#

VictoriaMetrics supports PromQL-compatible queries and MetricsQL.

up
sum(rate(http_requests_total[5m])) by (service, route, status)
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service, route))

6. Best Practices#

Storage:
    根据业务需求设置 retentionPeriod
    给数据目录挂载持久化 volume
    单机模式先简单落地,大规模再考虑 cluster

Scrape:
    推荐用 vmagent 负责 scrape + remote_write
    不要让每个 Prometheus 都承担长期存储压力

Labels:
    控制高基数 label
    避免 user_id / request_id / trace_id / full_url
    统一 service / env / region / cluster

Query:
    Dashboard 中避免过宽时间范围 + 高基数 group by
    对常用重查询使用 recording rules

Alerting:
    VictoriaMetrics 本身负责存储和查询
    告警评估通常交给 vmalert

7. References#