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=30dverify:
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/writevmagent remote write:
scrape_configs:
- job_name: nodejs-custom-metrics
static_configs:
- targets:
- localhost:3000vmagent \
-promscrape.config=prometheus.yml \
-remoteWrite.url=http://localhost:8428/api/v1/write5. 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 本身负责存储和查询
告警评估通常交给 vmalert7. References#
- VictoriaMetrics docs: https://docs.victoriametrics.com/
- vmagent docs: https://docs.victoriametrics.com/victoriametrics/vmagent/
- Prometheus remote write: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write