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=1048576、LimitNPROC=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.config | Prometheus 兼容的抓取配置路径 | 由 app/victoria-metrics/main.go 中的-dryRun检查与lib/promscrape共同处理 |
-storageDataPath | 数据存储目录,默认即/var/lib/victoria-metrics-data | vmstorage数据路径 |
-retentionPeriod=12 | 数据保留期为 12 个月,到期数据自动删除 | vmstorage保留期参数 |
-httpListenAddr=:8428 | 主 HTTP 端口(查询、抓取、vmui、/metrics等) | app/victoria-metrics/main.go 中-httpListenAddr默认值为:8428 |
-graphiteListenAddr=:2003 | Graphite(含 statsd)写入端口,同时监听 TCP/UDP | vminsertGraphite 协议处理 |
-opentsdbListenAddr=:4242 | OpenTSDB 写入端口 | vminsertOpenTSDB 协议处理 |
-influxListenAddr=:8089 | InfluxDB 行协议(telegraf)写入端口,TCP/UDP | vminsertInflux 协议处理 |
-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 --versionVictoriaMetrics 的主 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_name、static_configs、scrape_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 格式 | :8428 | TCP | 与主 HTTP 端口共用,具体写入路径不同 |
| Graphite(含 statsd) | :2003 | TCP / UDP | 由-graphiteListenAddr开启 |
| OpenTSDB | :4242 | TCP | 由-opentsdbListenAddr开启 |
| Influx(telegraf) | :8089 | TCP / 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 目录(含datadogv1、datadogv2、influx、graphite、opentsdb、opentsdbhttp、prometheusimport、csvimport等子包),可据此了解各协议的路径与数据格式约定。
六、查询验证:vmui 界面与 curl 快速测试
VictoriaMetrics 内置 Web UI(vmui),用于查询排障与数据探索,地址为:
http://your_droplet_public_ipv4:8428/vmuivmui 支持以图表(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 磁盘容量评估是否需要调整。若将单机版用作长期存储并计划备份,可参考仓库中vmbackup与vmrestore相关组件(见 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),仅供参考