ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Vultr 市场一键部署 VictoriaMetrics Single:配置、数据接入与源码级解析

Vultr 市场一键部署 VictoriaMetrics Single:配置、数据接入与源码级解析 Vultr 市场一键部署 VictoriaMetrics Single配置、数据接入与源码级解析【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics本指南以 deployment/marketplace/vultr/README.md 为骨架完整讲解在 Vultr 云市场通过 One-Click 镜像部署 VictoriaMetrics Single 的完整流程镜像内置的端口与配置布局、Prometheus 风格的指标抓取、五种主流写入协议的数据接入、vmui 查询界面以及 SSH/Web 控制台访问方式。同时结合本仓库deployment/marketplace/vultr目录下的 Packer 构建脚本、systemd 单元文件与实际抓取配置从镜像构建到运行时参数逐层还原部署原理帮助你在几台实例上快速落地一套可直接用于生产的小型监控方案。一、这个 Vultr One-Click 应用是什么Vultr Marketplace 提供的是VictoriaMetrics Single形态——单实例、全自主的监控与时间序列数据库。文档描述其定位为Hassle-free monitoring solution一个实例即可支撑中小规模环境并可直接作为时间序列的长期存储long-term storage。VictoriaMetrics Single 在部署后的核心能力体现在两个层面采集层既支持 Prometheus 拉取pull模型也支持 Graphite、InfluxDB、OpenTSDB 等多种推送push协议查询层支持 PromQL、MetricsQL 与 Graphite 三种查询语言并内置 vmui 交互式查询界面。该镜像并非简单的装一个二进制而是由本仓库deployment/marketplace/vultr目录下的完整基础设施代码Packer systemd UFW 防火墙 cloud-init 脚本支撑起来的一套开箱即用方案下文将从构建源头开始逐层剖析。二、镜像是怎么构建出来的从 Packer 到 systemd2.1 Packer 构建模板镜像的构建入口是 victoriametrics-single.pkr.hcl。该文件声明了 Vultr 的 Packer 插件依赖github.com/vultr/vultr版本 v2.3.2并使用vc2-1c-1gb1 vCPU / 1GB 内存这一最小档位机型作为模板机os_id 387指定基础操作系统镜像ssh_username root用于构建期远程执行脚本。构建流程通过provisioner分四步完成上传helper-scripts/vultr-helper.sh提供install_cloud_init、clean_system等辅助函数上传setup-per-boot.sh与setup-per-instance.sh两个 cloud-init 生命周期脚本将victoriametrics-single/etc/整目录拷贝到/etc/包含 systemd 单元、抓取配置、运行参数文件、MOTD 欢迎页模板执行victoriametrics-single.sh完成二进制下载与系统准备。2.2 二进制安装脚本victoriametrics-single.sh 负责镜像内的实际装配关键步骤包括创建一个无登录 shell 的系统用户victoriametrics-s /sbin/nologin --system数据目录/var/lib/victoria-metrics-data归属该用户通过wget从 GitHub Releases 下载对应VM_VERSION的victoria-metrics-linux-amd64-v${VM_VERSION}.tar.gz解压到/usr/bin并安装为victoria-metrics-prod将两个生命周期脚本分别安装到/var/lib/cloud/scripts/per-boot/与/var/lib/cloud/scripts/per-instance/并systemctl enable vmsingle.service实现开机自启最后调用clean_system清理构建痕迹产出干净的 Marketplace 快照。其中VM_VERSION由根目录 Makefile 中release-victoria-metrics-vultr-server目标自动注入VM_VERSION ? $(shell git describe --abbrev0 --tags)即取当前仓库最新的 git tag 作为发布版本。2.3 systemd 单元进程是如何跑起来的服务由 vmsingle.service 管理关键设计Uservictoriametrics/Groupvictoriametrics以非 root 低权限运行EnvironmentFile-/etc/victoriametrics/single/victoriametrics.conf启动参数全部外置到独立配置文件便于运维修改后systemctl restart vmsingle生效ExecStart/usr/bin/victoria-metrics-prod $ARGS加载配置中的参数Restarton-failureRestartSec5保证异常退出后自动拉起ExecReload/bin/kill -HUP $MAINPID支持向进程发送 HUP 信号触发配置热重载对应 VictoriaMetrics 的-reloadAuthKey/ HTTP reload 机制用于抓取配置变更场景LimitNOFILE1048576与LimitNPROC1048576放宽了文件描述符与进程数上限避免高指标基数场景下的资源瓶颈ProtectSystemfull则限制了对系统目录的写操作。三、配置布局与开放端口3.1 运行时参数文件镜像把全部启动参数放在/etc/victoriametrics/single/victoriametrics.conf对应仓库中的 victoriametrics.confARGS-promscrape.config/etc/victoriametrics/single/scrape.yml -storageDataPath/var/lib/victoria-metrics-data -retentionPeriod12 -httpListenAddr:8428 -graphiteListenAddr:2003 -opentsdbListenAddr:4242 -influxListenAddr:8089 -enableTCP6各参数含义与部署影响如下参数值作用-promscrape.config/etc/victoriametrics/single/scrape.ymlPrometheus 风格抓取配置路径VictoriaMetrics 会按该文件定义的目标与间隔进行拉取-storageDataPath/var/lib/victoria-metrics-data数据存储目录对应源码中vmstorage的存储根路径逻辑-retentionPeriod12数据保留周期月超出后旧数据会被后台合并与删除任务清理-httpListenAddr:8428HTTP 服务监听地址同时承载 Prometheus 远程写入、导入 API 与 vmui-graphiteListenAddr:2003Graphite 明文协议监听端口tcp/udp-opentsdbListenAddr:4242OpenTSDB telnet 协议监听端口-influxListenAddr:8089InfluxDB 行协议监听端口tcp/udp对应 telegraf 的 UDP 输出-enableTCP6—同时监听 IPv6 回环与公网地址这些协议端口的监听实现分别位于仓库的lib/ingestserver/graphite、lib/ingestserver/influx、lib/ingestserver/opentsdb与lib/ingestserver/opentsdbhttp等包中VictoriaMetrics 通过-*ListenAddr系列参数为每种协议拉起独立的 ingest server。3.2 抓取配置默认抓取配置 scrape.yml 采用自监控模式# Scrape config example # scrape_configs: - job_name: self_scrape scrape_interval: 10s static_configs: - targets: [127.0.0.1:8428]即每 10 秒拉取一次本机8428端口上的/metrics采集 VictoriaMetrics 自身暴露的运行指标如vm_app_uptime_seconds。这也解释了 README 中演示查询为何直接使用vm_app_uptime_seconds——它是镜像开箱即可查到的指标。需要采集其他 Prometheus exporter如 node_exporter时只需在该文件追加新的job_name与static_configs目标然后执行systemctl reload vmsingle或重启服务即可。3.3 防火墙UFW开放策略镜像首次启动时由 setup-per-instance.sh 配置 UFW 防火墙开放规则与端口一一对应22SSH、80HTTP、443HTTPS基础访问8428VictoriaMetrics HTTP 端口2003/tcp与2003/udpGraphite 协议4242OpenTSDB 协议8089/tcp与8089/udpInfluxDB 行协议。由于镜像默认开放了全部写入端口README 明确建议只保留实际使用的协议端口其余一律用 UFW 关闭。例如仅需 Prometheus 远程写入时可执行sudo ufw deny 2003/tcp sudo ufw deny 2003/udp sudo ufw deny 4242 sudo ufw deny 8089/tcp sudo ufw deny 8089/udp登录服务器后通过sudo ufw status numbered即可查看当前规则sudo ufw delete 编号可删除指定规则。四、指标抓取Pull与数据写入Push4.1 抓取指标VictoriaMetrics 的抓取行为与 Prometheus 完全一致抓取配置由-promscrape.config指向的 YAML 文件控制支持scrape_configs、job_name、scrape_interval、static_configs等 Prometheus 兼容字段。修改 scrape.yml 添加新目标后通过kill -HUP或systemctl reload vmsingle热加载即可生效无需中断服务。4.2 五种协议的写入方式镜像默认支持以下数据写入协议README 中的对应关系如下协议端口典型发送端Prometheus remote write / exposition:8428Prometheus、vmagent、任意 /metrics 数据Datadog:8428Datadog Agent-datadog.*相关端点InfluxDB / JSON 行 / CSV 导入:8428curl直接 POST、telegrafHTTP 输出Graphite:2003tcp/udpstatsd、collectd 等 Graphite 协议客户端OpenTSDB:4242OpenTSDB telnet 客户端InfluxDB 行协议:8089tcp/udptelegraf 的influxdb_listener/ UDP 输出插件8428 端口是一个多协议复用入口Prometheus 远程写入/api/v1/write、exposition 格式导入/api/v1/import/prometheus、JSON 行格式导入/api/v1/import、CSV 导入/api/v1/import/csv以及 Datadog 兼容端点均监听于此。相关实现可参考app/vminsert下datadogv1、datadogv2、csvimport、promremotewrite等协议的接入代码。2003 / 4242 / 8089 端口则分别对应lib/ingestserver中独立的 Graphite、OpenTSDB、Influx ingest server由-graphiteListenAddr、-opentsdbListenAddr、-influxListenAddr参数决定是否开启。不需要的协议应通过 UFW 关闭对应端口减小攻击面。4.3 数据流向说明Push 数据进入vminsert组件后会按租户与时间序列哈希分片写入vmstoragePull 抓取的数据同样经由 scrape 流水线lib/promscrape处理后再落盘。对 Single 形态而言写入与查询收敛在同一个进程内存储层使用-storageDataPath指定的目录默认/var/lib/victoria-metrics-data-retentionPeriod12控制保留 12 个月。五、查询vmui 与 Prometheus HTTP API5.1 vmui 界面VictoriaMetrics 内置的 Web UIvmui用于查询排障与数据探索地址为http://your_server_public_ipv4:8428/vmui该界面基于仓库app/vmselect/vmui目录下的前端源码构建。快速验证步骤浏览器打开上述地址在 Query Field 输入vm_app_uptime_seconds点击 Execute Query即可通过图表或表格查看该指标。vm_app_uptime_seconds是 VictoriaMetrics 自身暴露的进程运行秒数指标由-httpListenAddr对应的/metrics端点持续输出镜像默认的自抓取任务每 10 秒采集一次因此开箱即有数据可查。5.2 curl 查询示例README 提供了通过 HTTP API 查询区间数据的命令curl -sg http://your_server_public_ipv4:8428/api/v1/query_range?queryvm_app_uptime_seconds | jq参数说明-s静默模式隐藏进度信息-g关闭 URL 中的 glob 字符转义避免[]被 shell 通配/api/v1/query_rangePrometheus 兼容的区间查询端点返回该指标在时间范围内的序列点| jq将 JSON 响应格式化输出便于阅读。若未安装jq可先执行apt install -y jq镜像的 per-instance 脚本已安装wget、ufw、software-properties-common等基础工具jq属于可选补充。查询单点瞬时值可将端点替换为/api/v1/query并附加timeunix_timestamp参数。六、访问服务器SSH 与 Web 控制台服务器创建完成后有两种方式进入系统Vultr Web 控制台在 Vultr 控制台页面打开对应实例的 Web Console直接开始交互式会话SSH 直连 rootssh rootyour_server_public_ipv4登录后可通过以下路径管理服务项目路径启动参数/etc/victoriametrics/single/victoriametrics.conf抓取配置/etc/victoriametrics/single/scrape.ymlsystemd 单元/etc/systemd/system/vmsingle.service数据目录/var/lib/victoria-metrics-data进程日志journalctl -u vmsingle -f常用管理命令# 查看服务状态 systemctl status vmsingle # 重启修改 victoriametrics.conf 后 systemctl restart vmsingle # 热重载抓取配置修改 scrape.yml 后 systemctl reload vmsingle # 跟踪日志 journalctl -u vmsingle -f七、自定义与安全加固建议按需裁剪协议端口README 强调只保留实际使用的协议端口这是该镜像最重要的安全动作。建议使用 UFW 关闭 2003、4242、8089 等未使用端口仅保留 8428或进一步限制为仅内网网段访问。调整数据保留期修改/etc/victoriametrics/single/victoriametrics.conf中的-retentionPeriod单位月可控制数据保留时长修改后执行systemctl restart vmsingle。扩展抓取目标在/etc/victoriametrics/single/scrape.yml的scrape_configs下追加新 job例如采集另一台主机的 node_exporter在static_configs.targets中加入node_ip:9100随后systemctl reload vmsingle热加载。更新版本镜像中VM_VERSION由构建期注入实例内的二进制版本随 Marketplace 镜像固定如需升级可从官方 Releases 下载新版victoria-metrics-linux-amd64-*.tar.gz替换/usr/bin/victoria-metrics-prod后重启服务。监控自身默认的自抓取任务self_scrape10s 间隔已保证vm_app_uptime_seconds、vm_*系列自身指标持续入库可作为实例健康监控的基础数据源。八、与 DigitalOcean 变体的对照本仓库在 deployment/marketplace/digitialocean 目录下提供了同构的 DigitalOcean 一键镜像实现两者共享同一套配置文件布局/etc/victoriametrics/single/下的scrape.yml与victoriametrics.conf、vmsingle.servicesystemd 单元仅在云厂商适配层01-setup.sh、02-firewall.sh、04-install-victoriametrics.sh等分步脚本与 Packer 模板template.pkr.hcl上存在差异。如果你同时运维多家云厂商可以参考其脚本结构做横向迁移。九、小结通过 Vultr Marketplace 部署 VictoriaMetrics Single你得到的不仅是一个二进制进程而是一套由仓库代码驱动、自带 systemd 托管、UFW 防火墙策略、cloud-init 生命周期脚本与自监控抓取配置的完整最小监控系统。整个流程的关键事实均可追溯到仓库源码构建装配victoriametrics-single.sh运行参数与抓取配置victoriametrics.conf 与 scrape.yml进程托管vmsingle.service防火墙与生命周期setup-per-instance.sh镜像构建victoriametrics-single.pkr.hcl。按照本文的顺序部署 → 确认端口与配置 → 接入抓取与写入 → vmui 验证 → SSH 加固即可在数分钟内让一套可用的时间序列监控方案运行起来。【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表