最省事安装方式是直接下载官方GitHub Releases页的victoria-metrics-*.tar.gz(如v1.94.0-linux-amd64),解压后将./victoria-metrics-prod放入/usr/local/bin,指定-storageDataPath和-retentionPeriod即可运行;切勿误用源码包或企业版。

VictoriaMetrics 单机版怎么装最省事
直接用预编译二进制最稳妥,不依赖 Go 环境,也避开了 Docker 权限、cgroup v2 兼容等干扰项。官方 tar.gz 包已静态链接,扔进 /usr/local/bin 就能跑。
常见错误:下载了源码 zip 或误选了 victoria-metrics-prod(这是企业版,不开源)。正确路径是 GitHub Releases 页找 victoria-metrics-*.tar.gz,例如 victoria-metrics-v1.94.0-linux-amd64.tar.gz。
- 解压后只用
./victoria-metrics-prod这一个文件(单机版主进程) - 不要运行
./vmagent或./vmalert—— 它们属于配套组件,单机监控暂不需要 - 启动时加
-storageDataPath=/var/lib/victoria-metrics,路径必须存在且进程有写权限 - 建议加
-retentionPeriod=6(单位:月),避免磁盘悄悄打满
如何把 Prometheus 的 scrape 配置无缝迁过去
Vmagent 兼容 Prometheus 的 scrape_config 语法,但 VictoriaMetrics 单机版本身不拉数据 —— 必须额外起一个 vmagent 实例来替代 Prometheus Server 的采集角色。
容易踩的坑:直接把 Prometheus 的 prometheus.yml 丢给 victoria-metrics-prod 启动会静默失败,因为它根本不读这个文件。
-
vmagent启动命令里必须指定-promscrape.config指向你的配置文件 - 目标写法和 Prometheus 一致,但
remote_write地址要改成 VictoriaMetrics 的http://localhost:8428/api/v1/write - 如果原 Prometheus 用了
metric_relabel_configs,vmagent完全支持;但metric_relabel_configs中的regex默认是 RE2 语法,不支持\K或反向引用 - 别漏掉
-remoteWrite.tmpDataPath,否则网络抖动时采样点会丢失
查询接口兼容 Prometheus 吗?哪些地方会报错
VictoriaMetrics 的 /api/v1/query 和 /api/v1/series 基本 100% 兼容 Prometheus HTTP API,Grafana 面板几乎不用改。但两个关键差异常导致告警或脚本报错:
-
count_over_time()等函数在 VictoriaMetrics 中默认返回 float64,而 Prometheus 返回 int —— 如果你的告警表达式写了== 0,可能因类型不匹配失效 -
label_values(job)这类元数据查询,VictoriaMetrics 默认只返回最近 24 小时内出现过的 label 值;需加参数?match[]=up或配-search.latencyOffset=72h才查更久历史 -
histogram_quantile()在 VictoriaMetrics 中精度更高,但若原始直方图 bucket 标签名含_bucket以外的下划线(比如http_request_duration_seconds_bucket_v2),函数可能无法识别
为什么 /metrics 页面返回 404 或指标数远少于预期
VictoriaMetrics 默认不暴露自身运行指标到 /metrics —— 这和 Prometheus 不同。它把内部指标输出到 /metrics?format=prometheus,且需显式开启 -selfScrapeInterval 才采集自己。
另一个常见原因:你启用了 -memory.allowedPercent 但设得太低(如 15),导致 TSDB 内存紧张时主动丢弃低频指标,vm_cache_entries 类指标会骤降。
- 要查看 VictoriaMetrics 自身状态,访问
http://localhost:8428/metrics?format=prometheus - 想让
vmagent把 VictoriaMetrics 的指标也拉进来,得在scrape_configs里加一条 job,target 是localhost:8428,并确保 path 是/metrics?format=prometheus -
-search.maxUniqueTimeseries默认是 300k,超出后查询直接 400 错误,不是慢,是拒绝服务 —— 查大时间范围前先确认这个值
VictoriaMetrics 的“高性能”代价是更细的调优粒度:存储路径权限、remote write 重试策略、label cardinality 控制,这些在 Prometheus 里可以糊弄,在 VictoriaMetrics 里一不留神就 OOM 或查不出数。尤其注意 vmagent 的内存占用比 Prometheus Server 高 20%~30%,别拿同样的资源配置去套。



















