DigitalOcean One-Click Droplet 部署 VictoriaMetrics Single:从创建实例到多协议监控接入的实战指南
2026/9/13 15:57:31 网站建设 项目流程

DigitalOcean One-Click Droplet 部署 VictoriaMetrics Single:从创建实例到多协议监控接入的实战指南

【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics

VictoriaMetrics 是一款快速、可扩展的开源时间序列数据库(TSDB)与监控解决方案,面向实时指标的采集、存储与处理。本文围绕 VictoriaMetrics 官方在 DigitalOcean Marketplace 上发布的 One-Click Droplet 镜像展开,完整梳理该镜像预置的架构布局、启动参数、抓取与推送协议端口、vmui 查询界面以及安全加固方式,帮助你在一台云主机上快速获得一个可长期运行的单机监控平台,并具备将数据接入 Prometheus、Graphite、InfluxDB、OpenTSDB 等生态的完整能力。

一、镜像概览:这是一个开箱即用的监控单机方案

VictoriaMetrics 是免费开源的时间序列数据库(TSDB)和监控解决方案,用于采集、存储和处理实时指标。它同时支持 Prometheus 的 Pull 拉取模型,以及 Graphite、InfluxDB、OpenTSDB 等多种 Push 推送协议的数据写入;在存储层面针对高延迟 IO、低 IOPS 和高指标流失率(high churn rate)场景做了专门优化。查询与告警评估方面支持 PromQL、MetricsQL 和 Graphite 查询语言。

该 One-Click 镜像部署的是VictoriaMetrics Single(单机版):一个完全自治、可作为时间序列长期存储的独立进程。它适合中小规模环境,单实例即可承担完整监控职责,这也是本镜像“开箱即用”的定位所在。

镜像内部的安装与初始化脚本全部保存在仓库的 deployment/marketplace/digitialocean/one-click-droplet 目录中,主要包括:

  • scripts/01-setup.sh:创建victoriametrics系统用户与数据目录/var/lib/victoria-metrics-data,并执行系统更新;
  • scripts/02-firewall.sh:配置 UFW 防火墙并放行各协议端口;
  • scripts/04-install-victoriametrics.sh:下载官方 release 二进制victoria-metrics-prod并注册 systemd 服务。

二、镜像预置配置:启动参数、数据目录与服务管理

创建 Droplet 后,VictoriaMetrics 以 systemd 服务形式运行。服务单元文件为 files/etc/systemd/system/vmsingle.service,其关键设计如下:

  • victoriametrics专用系统用户运行,工作目录为/var/lib/victoria-metrics-data
  • 通过EnvironmentFile=/etc/victoriametrics/single/victoriametrics.conf加载启动参数;
  • ExecReload=/bin/kill -HUP $MAINPID:向进程发送 SIGHUP 即可热重载配置,无需重启服务;
  • 设置了LimitNOFILE=1048576LimitNPROC=1048576等较高资源上限,并为存储卷启用ProtectSystem=full只读保护。

镜像实际传给 VictoriaMetrics 的启动参数定义在 files/etc/victoriametrics/single/victoriametrics.conf:

ARGS="-promscrape.config=/etc/victoriametrics/single/scrape.yml -storageDataPath=/var/lib/victoria-metrics-data -retentionPeriod=12 -httpListenAddr=:8428 -graphiteListenAddr=:2003 -opentsdbListenAddr=:4242 -influxListenAddr=:8089 -enableTCP6"

各参数含义与对应源码位置如下:

参数含义源码参考
-promscrape.configPrometheus 兼容的抓取配置路径由 app/victoria-metrics/main.go 中的-dryRun检查与lib/promscrape共同处理
-storageDataPath数据存储目录,默认即/var/lib/victoria-metrics-datavmstorage数据路径
-retentionPeriod=12数据保留期为 12 个月,到期数据自动删除vmstorage保留期参数
-httpListenAddr=:8428主 HTTP 端口(查询、抓取、vmui、/metrics等)app/victoria-metrics/main.go 中-httpListenAddr默认值为:8428
-graphiteListenAddr=:2003Graphite(含 statsd)写入端口,同时监听 TCP/UDPvminsertGraphite 协议处理
-opentsdbListenAddr=:4242OpenTSDB 写入端口vminsertOpenTSDB 协议处理
-influxListenAddr=:8089InfluxDB 行协议(telegraf)写入端口,TCP/UDPvminsertInflux 协议处理
-enableTCP6启用 IPv6 TCP 监听网络监听参数

VictoriaMetrics 单机版将所有写入与查询能力聚合在同一个二进制与 HTTP 端口中:从 app/victoria-metrics/main.go 的requestHandler可以看到,/根路径会列出 vmui、targets、service-discovery、config、metrics、flags 等内置端点,随后依次交给vminsert(写入)、vmselect(查询)、vmstorage(存储)处理,这正是单机版“一个进程全搞定”的架构基础。

三、首次访问:SSH 连接与基础验证

Droplet 创建完成后,既可以使用 DigitalOcean 的 Web 控制台启动会话,也可以直接以 root 身份 SSH 登录:

ssh root@your_droplet_public_ipv4

登录后可用以下命令确认服务状态与版本:

systemctl status vmsingle /usr/bin/victoria-metrics-prod --version

VictoriaMetrics 的主 HTTP 端点(含/metrics自监控指标)位于http://your_droplet_public_ipv4:8428-httpListenAddr的默认值:8428同样在 app/victoria-metrics/main.go 中定义(listenAddrs = []string{":8428"}),说明即使不使用镜像参数,8428 也是单机版的标准入口。

四、配置抓取:像 Prometheus 一样拉取目标指标

VictoriaMetrics 支持与 Prometheus 完全一致的指标抓取(scraping)方式。镜像默认的抓取配置位于/etc/victoriametrics/single/scrape.yml,对应仓库中的 files/etc/victoriametrics/single/scrape.yml:

# Scrape config example # scrape_configs: - job_name: self_scrape scrape_interval: 10s static_configs: - targets: ['127.0.0.1:8428']

镜像默认只抓取 VictoriaMetrics 自身的/metrics端点(self_scrape,每 10 秒一次),用于自监控。如需接入更多被监控目标,可按 Prometheus 的scrape_configs语法追加job_namestatic_configsscrape_interval等配置,例如添加 Node Exporter 或业务应用暴露的指标端点。编辑完成后执行热重载使其生效:

systemctl reload vmsingle

热重载依赖服务单元中的ExecReload=/bin/kill -HUP $MAINPID指令。另外,VictoriaMetrics 支持-dryRun启动参数预检-promscrape.config的合法性(见 app/victoria-metrics/main.go 中的-dryRun逻辑),在改动抓取配置后可以用该模式先行校验,避免错误配置导致抓取任务全部失败。

五、写入指标:四种协议、四个端口

除了主动抓取,镜像还预置了多个写入协议的监听端口,可接收不同生态的指标推送。各协议对应端口如下:

协议端口传输方式说明
Datadog、Influx(telegraf)、JSON 行格式、CSV、Prometheus exposition 格式:8428TCP与主 HTTP 端口共用,具体写入路径不同
Graphite(含 statsd):2003TCP / UDP-graphiteListenAddr开启
OpenTSDB:4242TCP-opentsdbListenAddr开启
Influx(telegraf):8089TCP / UDP-influxListenAddr开启

其中 8428 端口承载的写入能力最丰富,包括:

  • Prometheus exposition 格式POST http://your_droplet_public_ipv4:8428/api/v1/write(兼容 remote write);
  • JSON 行格式导入POST /api/v1/import,每行一个 JSON 指标对象;
  • CSV 导入POST /api/v1/import/csv,按列格式写入;
  • Datadog 协议POST /api/v1/datadog/系列端点;
  • InfluxDB 兼容写入POST /write

上述协议的解析与路由在vminsert组件中实现,仓库对应实现位于 app/vminsert 目录(含datadogv1datadogv2influxgraphiteopentsdbopentsdbhttpprometheusimportcsvimport等子包),可据此了解各协议的路径与数据格式约定。

六、查询验证:vmui 界面与 curl 快速测试

VictoriaMetrics 内置 Web UI(vmui),用于查询排障与数据探索,地址为:

http://your_droplet_public_ipv4:8428/vmui

vmui 支持以图表(graph)和表格(table)两种方式呈现查询结果。镜像 README 给出的首个验证查询是自监控指标vm_app_uptime_seconds:在浏览器打开上述地址后,将该指标名输入 Query Field 并执行,即可看到 VictoriaMetrics 运行时长的时间序列曲线,从而确认抓取、存储、查询整条链路工作正常。

在不使用浏览器的情况下,也可以用curl直接调用 HTTP API 验证(README 中的示例):

curl -sg 'http://your_droplet_public_ipv4:8428/api/v1/query_range?query=vm_app_uptime_seconds' | jq

该命令通过query_range接口对vm_app_uptime_seconds执行范围查询,并使用jq格式化返回的 JSON。vm_app_uptime_seconds系列来自 VictoriaMetrics 自身的/metrics自监控指标,由self_scrape抓取任务产生,因此即使尚未接入任何外部数据源,也能通过它验证端到端可用性。除 vmui 外,8428 端口还暴露了/-/reload(重载配置)、/flags(当前运行参数)、/config(当前抓取配置)等运维端点。

七、安全加固:按需裁剪端口与防火墙策略

镜像默认开放了 8428、2003、4242、8089 四个端口以接收不同协议的指标,但这同时也意味着更大的攻击面。官方建议:关闭不需要的协议端口

Droplet 上的防火墙为 Ubuntu 的 UFW(Uncomplicated Firewall),初始化规则由 scripts/02-firewall.sh 写入,允许 SSH、HTTP、HTTPS 以及 VictoriaMetrics 相关端口。若要禁止某个协议的外部访问,可直接删除对应规则,例如禁止 OpenTSDB 端口 4242:

ufw delete allow 4242 ufw status

注意事项:

  • 若只使用 8428 端口完成抓取与写入,建议同时关闭 2003、4242、8089 的入站规则,减少不必要的暴露;
  • 删除防火墙规则只是阻止外部访问,VictoriaMetrics 进程本身仍会监听这些端口(参数在victoriametrics.conf中);如需彻底停用某协议,应从ARGS中移除对应的-graphiteListenAddr/-opentsdbListenAddr/-influxListenAddr参数,然后systemctl restart vmsingle
  • 抓取自身指标的self_scrape目标为127.0.0.1:8428,属于本地回环地址,不受 UFW 入站规则影响。

八、日常运维要点

基于镜像提供的 systemd 服务,常用运维操作如下:

systemctl status vmsingle # 查看运行状态与最近日志 systemctl reload vmsingle # 热重载抓取配置(SIGHUP) systemctl restart vmsingle # 重启(如修改了启动参数) journalctl -u vmsingle -f # 实时查看服务日志

VictoriaMetrics 数据存储在/var/lib/victoria-metrics-data,默认保留期 12 个月(-retentionPeriod=12),可结合 Droplet 磁盘容量评估是否需要调整。若将单机版用作长期存储并计划备份,可参考仓库中vmbackupvmrestore相关组件(见 app/vmbackup 与 app/vmrestore)设计备份策略;不过本镜像默认未安装额外备份组件,仅内置 VictoriaMetrics Single 本体。

九、镜像文件与构建说明

如果你希望复现该镜像的构建过程,DigitalOcean Marketplace 部分提供了完整的构建工具链:

  • template.pkr.hcl:HashiCorp Packer 模板,定义镜像的构建来源与 provisioning 阶段;
  • Makefile 与 RELEASE_GUIDE.md:镜像构建与发布的流程指引;
  • scripts/89-cleanup-logs.sh 与 scripts/90-cleanup.sh:构建完成后清理日志、敏感文件并安全擦除磁盘剩余空间,保证发布镜像干净合规;
  • scripts/99-img-check.sh:DigitalOcean 官方镜像校验工具,在发布前检查防火墙、安全更新、SSH 密钥残留等合规项。

上述脚本共同保证了镜像的可复现性与 Marketplace 发布合规性,也是理解“One-Click 镜像到底做了什么”的第一手资料。

总结

通过 DigitalOcean One-Click Droplet,你可以在数分钟内获得一套完整可用的 VictoriaMetrics Single 监控平台:systemd 托管进程、12 个月数据保留、Prometheus 风格抓取、四种写入协议端口、vmui 查询界面一应俱全。日常使用只需掌握三个动作:编辑/etc/victoriametrics/single/scrape.yml添加抓取目标、按需裁剪 UFW 端口、通过systemctl管理服务生命周期。对于中小规模监控场景,这套镜像足以作为长期运行的时序数据基础设施直接投入使用。

【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询