VictoriaMetrics时序指标监控替代
许多运维同学在监控服务器和业务指标时,最初会选择 Prometheus。
但随着节点增多、指标量上升,Prometheus 的内存和存储压力会越来越高。
VictoriaMetrics 作为一款高性能时序数据库,兼容 Prometheus 查询语言 PromQL,却能大幅降低资源消耗,成为替代 Prometheus 的热门方案。
本文面向零基础用户,手把手演示如何用 VictoriaMetrics 替换 Prometheus 搭建时序指标监控平台。
准备工作与环境要求
在开始前,请确认满足以下条件:
- 一台 Linux 服务器(CentOS 7+ 或 Ubuntu 18.04+),建议 2 核 4G 以上配置。
- 服务器的 root 或 sudo 权限。
- 可选:已有 Grafana 实例用来展示数据(本文也会说明如何快速安装 Grafana)。
- 网络能正常下载二进制文件。
下载并启动 VictoriaMetrics 核心组件
VictoriaMetrics 提供单机版 victoria-metrics 和集群版,单机版已足够替代中小规模 Prometheus 场景。
操作如下:
- 下载最新稳定版二进制(以 Linux amd64 为例):
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest/download/victoria-metrics-linux-amd64.tar.gz
tar -xzf victoria-metrics-linux-amd64.tar.gz
- 将解压后的二进制文件移动到
/usr/local/bin/:
sudo mv victoria-metrics-prod /usr/local/bin/victoria-metrics
- 创建数据目录并启动服务(默认监听 8428 端口):
sudo mkdir -p /var/lib/victoria-metrics-data
nohup /usr/local/bin/victoria-metrics \
-storageDataPath /var/lib/victoria-metrics-data \
-retentionPeriod 30d \
-httpListenAddr :8428 &
注意事项:-retentionPeriod 指定数据保留天数,根据磁盘空间调整;-httpListenAddr 可自定义端口,但后续配置需一致。
- 验证服务是否运行:
curl http://localhost:8428/metrics
返回大量 Metrics 数据即表明成功。
配置数据写入与 Prometheus 兼容接收
VictoriaMetrics 原生支持 Prometheus remote write 协议,
这样你可以让现有 Prometheus 实例把数据转发过来,
也可以直接由 VictoriaMetrics 替代 Prometheus 抓取任务。
方式一:让现有 Prometheus 将数据远程写入 VictoriaMetrics
在 Prometheus 的配置文件 prometheus.yml 的 remote_write 段添加:
remote_write:
- url: "http://:8428/api/v1/write"
重启 Prometheus 后,所有历史数据会持续写入 VictoriaMetrics。
方式二:直接用 VictoriaMetrics 做抓取(替代 Prometheus 抓取)
VictoriaMetrics 提供了类似 Prometheus 的抓取功能,通过启动参数 -promscrape.config 指定抓取配置文件:
- 创建
/etc/victoria-metrics/scrape.yml:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
- 重启 VictoriaMetrics 时加入配置:
kill $(pgrep victoria-metrics)
nohup /usr/local/bin/victoria-metrics \
-storageDataPath /var/lib/victoria-metrics-data \
-retentionPeriod 30d \
-httpListenAddr :8428 \
-promscrape.config /etc/victoria-metrics/scrape.yml &
此时 VictoriaMetrics 便会按照配置主动抓取指标。
对接 Grafana 展示时序数据
- 安装 Grafana(如果已有则跳过):
sudo apt install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt update && sudo apt install -y grafana
sudo systemctl start grafana-server
- 添加 VictoriaMetrics 数据源:
- 浏览器访问
http://,默认账号密码为:3000 admin/admin。 - 左侧菜单进入 Configuration > Data Sources > Add data source。
- 选择 Prometheus 类型(因为 VictoriaMetrics 兼容 PromQL)。
- URL 填写
http://,其余保持默认,点击 Save & Test 提示成功即可。:8428
- 导入仪表盘:你可以使用已有的 Prometheus 仪表盘(例如 Node Exporter Full 仪表盘 ID 1860),在 Grafana 中导入,选择 VictoriaMetrics 数据源,图表即可正常显示。
常见问题与避坑指南
Q:VictoriaMetrics 占用内存很高怎么办?
A:单机版 VictoriaMetrics 内存消耗主要与活跃时间序列数量成正比,可通过 -memory.allowedPercent 参数限制内存使用百分比(如 30)。
Q:Grafana 查询时报错“No data”
A:先确认 VictoriaMetrics 的 /targets 页面(http://)能看到抓取目标正常。若抓取正常,检查数据源 URL 末尾是否加了 /api/v1/query?VictoriaMetrics 的 Prometheus 兼容接口直接使用 /api/v1/query,但 Grafana 数据源配置时只需填入基础 URL 如 http://x.x.x.x:8428,不需要额外路径。
Q:如何将 Prometheus 历史数据迁移到 VictoriaMetrics?
A:可使用 Prometheus 的 snapshot API 导出快照,再用 VictoriaMetrics 的 vmctl 工具迁移。但多数场景下直接使用 remote write 持续写入即可,无需单独迁移历史。
Q:VictoriaMetrics 能否直接替代 Prometheus Alertmanager?
A:VictoriaMetrics 本身不包含告警功能,仍需保留或另行部署 Alertmanager,不过 VictoriaMetrics 支持与 Alertmanager 集成配置。
避坑说明:
- 首次启动时注意磁盘空间,
-storageDataPath目录会快速增长,建议挂载独立数据盘。 - 如果使用 systemd 管理 VictoriaMetrics,请打开
LimitNOFILE=65536避免文件描述符耗尽。 - 升级 VictoriaMetrics 时,建议先备份数据目录,再替换二进制重启。
效果验证
- 确认 VictoriaMetrics 自带页面:访问
http://,如果能显示“Single-node version”和一系列链接,说明服务正常。:8428/ - 在 Grafana 中添加一个 Dashboard,选择节点监控模板,查看 CPU、内存等曲线是否有数据刷新。
- 打开 VictoriaMetrics 的
vmui页面(http://),输入 PromQL 查询如:8428/vmui/ up,如果能返回数字,说明数据写入和查询均正常。
完成以上步骤,你就成功用 VictoriaMetrics 替换了 Prometheus,获得了一套更省资源的时序指标监控系统。
如果你对 Grafana 告警或集群版部署感兴趣,可以参考本站后续文章继续扩展。