本文缩写(英文全称与中文含义)
| 缩写 | 英文全称/名称 | 中文含义 |
|---|---|---|
| UI | User Interface | 用户界面 |
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 |
多租户、认证、反向代理入口 |
vmui |
VictoriaMetrics 内置查询和排障 UI |
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 127.0.0.1:8428:8428 -v victoria-metrics-data:/victoria-metrics-data "${VICTORIAMETRICS_IMAGE:?Set approved image digest}" -retentionPeriod=30dverify:
curl http://localhost:8428/health
curl 'http://localhost:8428/api/v1/query?query=up'Docker Compose#
services:
victoria-metrics:
image: ${VICTORIAMETRICS_IMAGE:?Set approved image digest}
ports:
- "127.0.0.1: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#
单机模式与 cluster 按容量和可用性需求选择;先量化写入、查询、磁盘与恢复要求,不靠组件数量判断 HA。
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
完整路径见 私有入口、备份与恢复。