
在 OpenBSD 上用 ports 系统安装 VictoriaMetrics端口树、系统服务与 syslog 集成【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics本文基于仓库内的 OpenBSD 端口说明 ports/OpenBSD/README.md 展开讲解如何把 VictoriaMetrics 单节点版集成进 OpenBSD 的 ports 体系包括端口目录放置位置、user.list用户注册、基于 Go 模块的源码构建、安装产物清单以及由rc.d脚本和 Perl 日志转发器组成的系统服务化方案。读完本文后你可以在 OpenBSD 上以标准rc.d服务的形式运行vmetrics存储/查询、vmagent采集及vmetricsbackup/vmetricsrestore备份/恢复并让 VictoriaMetrics 的日志直接进入 syslog。端口树位置与适用版本官方说明 明确了两点适用前提该端口树在OpenBSD Release 6.9上经过验证VictoriaMetrics 端口树必须放在 OpenBSD ports 树的/usr/ports/databases目录下即目标目录为/usr/ports/databases/VictoriaMetrics。仓库中现成的端口树位于 ports/OpenBSD/VictoriaMetrics/包含以下文件文件作用Makefileports 构建/安装规则钉住上游版本distinfo上游源码包的 SHA256 与大小校验pkg/PLIST安装产物清单含用户/组创建指令pkg/DESCR端口的一句话描述pkg/vmetrics.rc/etc/rc.d启动脚本pkg/vmlogger.pl日志转发到 syslog 的 Perl 脚本Makefile 中通过GH_ACCOUNT VictoriaMetrics、GH_PROJECT VictoriaMetrics、GH_TAGNAME v1.59.0把上游钉在v1.59.0标签上由 ports 框架自动从 GitHub 拉取源码包distinfo 记录了VictoriaMetrics-1.59.0.tar.gz的 SHA256 校验值/chb4noFxU6OZbLO7kjBfdleMDvN80hqwqAVQ2QJGr0和 11040979 字节的大小用于下载完整性校验。因此在使用前请确认你的 OpenBSD 版本与上游版本组合是否在维护者验证范围内如需升级版本需要同时修改GH_TAGNAME并重新生成distinfo。注册端口用户修改 user.listVictoriaMetrics 端口以专用系统用户运行不污染 root 环境也不复用现有服务账号。官方说明 要求在/usr/ports/infrastructure/db/user.list中新增一行866 _vmetrics _vmetrics databases/VictoriaMetrics这一行遵循 OpenBSD ports 的用户注册约定UID GID 用户名 组名 所属端口目录。含义是为databases/VictoriaMetrics这个端口预留UID 866 / GID 866用户与组均命名为_vmetrics下划线前缀是 OpenBSD 系统服务账号的命名惯例ports 框架据此保证该 UID/GID 在本机唯一避免与其他端口声明的账号冲突。这个声明必须与 pkg/PLIST 中的创建指令保持严格一致PLIST 开头即为newgroup _vmetrics:866 newuser _vmetrics:866:_vmetrics:daemon:VictoriaMetrics:${VARBASE}/db/vmetrics:/sbin/nologin其中${VARBASE}/db/vmetrics即/var/db/vmetrics被指定为该用户的家目录同时也是 VictoriaMetrics 的存储数据目录/sbin/nologin表明该账号不可登录仅用于进程降权运行。构建与安装将端口树放入/usr/ports/databases/VictoriaMetrics并修改user.list后在端口目录内执行pmake install即可。Makefile 的关键构建变量如下变量取值说明CATEGORIESdatabases端口分类对应放置目录MODULESlang/go使用 ports 树中的 Go 模块进行交叉编译USE_GMAKEYes上游使用 GNU makeWANTLIBc pthread动态库依赖仅有 libc 与 libpthreadPERMIT_PACKAGEYes允许生成二进制包Apache License 2.0SUBST_VARSVARBASE安装时将${VARBASE}展开为实际路径通常为/vardo-build目标Makefile#L26-L31在源码目录内连续调用仓库根 Makefile 提供的四个构建目标并显式指定GOOSopenbsddo-build: cd ${WRKSRC} GOOSopenbsd ${MAKE_ENV} ${MAKE_PROGRAM} victoria-metrics-pure cd ${WRKSRC} GOOSopenbsd ${MAKE_ENV} ${MAKE_PROGRAM} vmbackup cd ${WRKSRC} GOOSopenbsd ${MAKE_ENV} ${MAKE_PROGRAM} vmrestore cd ${WRKSRC} GOOSopenbsd ${MAKE_ENV} ${MAKE_PROGRAM} vmagent-pure也就是说该端口一次性构建 VictoriaMetrics 生态中的四个核心组件单节点数据库victoria-metrics、备份工具vmbackup、恢复工具vmrestore以及采集代理vmagent。值得注意的是victoria-metrics-pure与vmagent-pure两个带-pure后缀的目标——这是 VictoriaMetrics 根 Makefile 中定义的纯 Go禁用 cgo构建变体Makefile 中WANTLIB c pthread仅声明对系统 C 库与 pthread 的依赖从源码结构看这一组合印证了构建产物是除系统 C 库外无额外动态库依赖的静态化 Go 二进制非常适合 ports 对WANTLIB的严格依赖声明机制。安装产物do-install目标Makefile#L32-L41与 pkg/PLIST 共同定义了安装后的系统布局路径类型说明/usr/local/bin/vmetrics程序单节点数据库源自victoria-metrics-pure构建产物/usr/local/bin/vmagent程序指标采集代理/usr/local/bin/vmetricsbackup程序备份工具源自vmbackup/usr/local/bin/vmetricsrestore程序恢复工具源自vmrestore/usr/local/bin/vmetricslogger.pl脚本日志转发到 syslog见后文/var/db/vmetrics/数据目录存储数据目录属主/属组为_vmetrics权限 0755/etc/prometheus/目录sample空配置目录PLIST#L4遵循“配置放在 /etc/prometheus”的惯例/etc/rc.d/vmetrics服务脚本由rcscript ${RCDIR}/vmetricsPLIST#L5安装/usr/share/doc/vmetrics/文档安装上游README.md、LICENSE及docs/目录内容PLIST 结尾的三行指令保证了数据目录的属主正确性mode 0755 owner _vmetrics group _vmetrics sample ${VARBASE}/db/vmetrics/这样服务以降权用户启动后可以直接向/var/db/vmetrics/写入时序数据与索引无需额外chown操作。以系统服务方式启动ports/OpenBSD/VictoriaMetrics/pkg/vmetrics.rc 是标准的 OpenBSDrc.subr服务脚本核心逻辑为daemon${TRUEPREFIX}/bin/vmetrics daemon_flags-storageDataPath/var/db/vmetrics/ ${daemon_flags} daemon_user_vmetrics . /etc/rc.d/rc.subr pexp${daemon} -loggerDisableTimestamps ${daemon_flags}.* rc_bgYES rc_reloadNO要点解析-storageDataPath/var/db/vmetrics/通过daemon_flags前置注入与 PLIST 中为该用户创建的数据目录对应daemon_user_vmetrics使rc.subr启动的进程以系统用户运行pexp是rcctl stop用于匹配进程的正则保证能精准停掉自己启动的vmetricsrc_bgYES表示以后台方式运行rc_reloadNO表示不支持rcctl reload。启用方式遵循 OpenBSD 惯例在/etc/rc.conf中添加vmetrics_enableYES之后即可使用rcctl start|stop|restart vmetrics管理服务。由于daemon_flags会拼接${daemon_flags}你也可以在rc.conf中通过vmetrics_flags追加任何 VictoriaMetrics 命令行参数如-retentionPeriod、-httpListenAddr等这些参数最终会透传给/usr/local/bin/vmetrics。日志集成管道转发到 syslogVictoriaMetrics 的日志以级别TAB时间戳TAB消息的制表符分隔格式输出。为了让日志进入系统 syslog 而不是丢弃到后台vmetrics.rc的rc_start把进程 stdout/stderr 通过管道交给 vmlogger.plvmetrics.rc#L17-L20rc_start() { ${rcexec} ${daemon} -loggerDisableTimestamps ${daemon_flags} \ /dev/null 21 | ${TRUEPREFIX}/bin/vmetricslogger.pl $me }这里特意传入-loggerDisableTimestamps因为 syslog 自身会加盖时间戳避免双重重复。vmlogger.pl 按制表符切分每行日志将 VictoriaMetrics 的日志级别映射到 syslog 标准级别后逐条syslog()写入VictoriaMetrics 级别syslog 级别panicLOG_EMERGfatalLOG_CRITerrorLOG_ERRwarnLOG_WARNINGinfoLOG_INFO无法识别的级别LOG_WARNING兜底由此vmetrics的运行日志会以vmetrics作为 ident 出现在 syslog 中可直接用logger/syslogd的既有采集链路如syslog-ng或集中式日志代理统一收集。验证安装服务启动后可以从三个层面确认安装成功进程层面vmetrics应以_vmetrics用户运行且命令行包含-storageDataPath/var/db/vmetrics/可用ps aux | grep -F vmetrics核对HTTP 层面VictoriaMetrics 单节点默认监听 8428 端口访问http://localhost:8428/health应返回OK数据层面写入若干指标后检查/var/db/vmetrics/下生成索引与数据文件属主应为_vmetrics。备份侧则可以直接运行vmmetricsbackup -storageNodehttp://127.0.0.1:8428 -backupPath备份目标创建备份用vmmetricsrestore恢复二者均已随端口安装就位。小结这套 OpenBSD 端口的完整落地路径为把端口树放入/usr/ports/databases在/usr/ports/infrastructure/db/user.list登记866 _vmetrics _vmetrics databases/VictoriaMetrics一行然后pmake install完成基于 ports Go 模块的GOOSopenbsd交叉构建。安装后系统得到四个二进制、一个不可登录的_vmetrics系统用户、一个预建好的数据目录以及一个把日志送入 syslog 的rc.d服务。适用前提请记牢端口验证版本为 OpenBSD 6.9、上游钉在 v1.59.0跨版本使用或升级时需要同步更新GH_TAGNAME与 distinfo 校验信息。【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考