☰
GOST Manager 监控实战:用零依赖 SQLite 本地监控轻松守住你的隧道服务器
2026/11/3 10:40:59 网站建设 项目流程

GOST Manager 监控实战:用零依赖 SQLite 本地监控轻松守住你的隧道服务器

GOST Manager是一款基于菜单驱动的 Bash 运维工具,用于在 Ubuntu 服务器上安装官方 GOST 并管理多路 Direct Mode 隧道。它内置的Monitoring Lite监控模块采用SQLite作为本地历史存储,纯 Python 标准库实现、零第三方依赖,让你无需部署任何额外组件,就能在终端里看清隧道服务器的实时负载、网络吞吐与 GOST 服务健康度。

下面这篇 GOST Manager 监控实战教程,从原理到日常操作,带你一步步用好这个零依赖的 SQLite 本地监控体系。

监控原理:本地、可选、不碰流量

Monitoring Lite 只回答四个有边界的问题,见 docs/MONITORING-V0.2.md:

  1. 主机是否资源受限(CPU、内存、磁盘、文件句柄)?
  2. 外部或回环网络计数器是否异常?
  3. 当前的 Direct Mode GOST 服务与监听是否健康?
  4. 采集器本身是否最新、可靠?

关键设计原则:

  • 本地:数据库就在本机/var/lib/gost-manager/metrics.sqlite3,不依赖任何外网、NGINX 或远程探针。
  • 可选:不开监控完全不影响隧道运行。
  • 只读:监控模块无法启动、停止、重启或改配任何 GOST 流量服务,见 monitoring/。

快速上手:一条命令打开监控

GOST Manager 安装时会自动部署监控组件并启动采集服务(gost-monitor-collector.service)。日常查看只需:

sudo gost-manager

进入主菜单后选择10) Monitoring,即打开监控工作流:

1) Live resources 2) Last 10 minutes 3) Last 30 minutes 4) Last 1 hour 5) Services and tunnels 6) Collector status 7) Advanced tools 0) Back

除了菜单,还提供了直连命令,适合脚本化或 SSH 快捷查看:

gost-monitor snapshot gost-monitor live gost-monitor summary --window 10m gost-monitor-admin status gost-monitor-admin maintenance

六大监测对象一览

gost-monitor snapshot的输出固定包含HOST / NETWORK / TCP/CONNECTIONS / GOST SERVICES / TUNNELS / COLLECTOR六个区块,覆盖范围如下:

区块关注内容
HOST 主机CPU 与派生百分比、1/5/15 分钟负载、内存与 swap、根/监控文件系统、diskstats、系统文件句柄容量
NETWORK 网络每网卡 RX/TX 字节与包速率、错误与丢包、接口状态/速率/MTU、外部与回环分别统计
TCP/CONNECTIONS 连接ESTABLISHED、SYN-SENT、SYN-RECV、CLOSE-WAIT、TIME-WAIT、重传、监听丢弃与溢出、可用时的 conntrack 占用
GOST SERVICES 服务全部gost-iran-N/gost-kharej-N服务的活跃状态与主 PID、聚合 CPU/RSS/进程数/线程/FD、监听器与已建立套接字、重启计数
TUNNELS 隧道各编号 Iran/Kharej 配置的端口、Kharej 端允许的 Iran 源、观测到的监听器与当前连接数
COLLECTOR 采集器最近采样时间与数据龄、采集/检查点耗时、错过期限、源错误、数据库大小、负载丢弃状态

其中 conntrack 属于可选能力:主机缺少对应 sysctl 文件时标记为conntrack: unsupported,不会计入错误、也不拉低健康度;采集器从不加载内核模块,见 docs/MONITORING-V0.2.md。

采集节奏:分级采样,高负载下自动降载

采集器按「快—中—慢」三档节奏工作,默认值见 packaging/monitoring.env:

周期默认间隔采集内容
Fast 快速20 秒CPU、内存、负载、服务状态、进程身份
TCP 网络60 秒网络/协议计数器 + 每周期一次共享的完整ss快照
Slow 慢速120 秒FD 枚举、socket 归属、cgroup/进程细节、磁盘/文件系统
Maintenance 维护1800 秒聚合、保留期清理、WAL 检查点

当某次采集错过期限时,内置的负载丢弃(load shedding)机制会暂停重量级任务、保留 Fast 指标继续采样,并在连续 3 个准时周期后自动恢复——全程不建无界队列。该特性可用GOST_MONITOR_LOAD_SHEDDING=0关闭,机制实现见 monitoring/scheduler.py。

零流量依赖:监控坏了也不会断流

这是 Monitoring Lite 最重要的安全边界:采集服务与 GOST 隧道服务之间不存在Requires=、PartOf=、BindsTo=等任何生命周期关系,也没有任何 stop/restart/reload 调用,见 packaging/gost-monitor-collector.service#L4。

换句话说:采集器崩溃、历史库损坏、维护失败、甚至彻底卸载监控,都不会停掉 Direct Mode 流量。

同时采集服务自带系统级加固:低 CPU/IO 优先级(Nice=10、IOSchedulingClass=idle)、NoNewPrivileges、ProtectSystem=strict、私有0700状态目录等。

存储预算:6 小时原始 + 24 小时汇总

SQLite 采用 WAL 模式、busy timeout、事务与外键,配合有界保留策略:

  • 原始指标点:6 小时
  • 分钟级汇总(minute rollups):24 小时
  • 结构化事件:24 小时

按代表性 Direct Mode 画像(6 个 GOST 服务、当前 20/60/120 秒节奏)估算:

组件估算大小
原始指标表(6h)≈ 0.052 GiB
分钟汇总表(24h)≈ 0.117 GiB
cycles / samples / events / entities≈ 0.005 GiB
索引与可复用页≈ 0.087 GiB
WAL 与运维余量≈ 0.052 GiB
合计(保守)≈ 0.312 GiB

💡 官方建议为代表性画像至少预留 1 GiB磁盘;若服务数量、保留时长或采集节奏更高,需重新核算,见 docs/MONITORING-V0.2.md。

指标质量:每个数字都有可信标签

每条指标都带一种语义质量标签(语义定义见 monitoring/metric_semantics.py):

  • exact 精确:来自权威本地源的直接观测
  • derived 派生:由精确计数器与单调时钟推算
  • estimated 估计:有用但非权威
  • unavailable 不可用:源无法提供有效观测

速率一律用单调计数器增量计算,因此计数器重置、采样间隙、进程替换或接口抖动都不会产生负速率或假尖峰。

另外一个安全细节:用户名、密码、令牌等凭据永远不会进入指标、事件、实体元数据、采集器状态或导出文件——隧道凭据只存在于/etc/gost/*.env的 0600 私有文件里。

高级工具:高流量预设与数据导出

Advanced tools提供明细、事件、自定义汇总、JSON/CSV 导出、诊断、维护、清空与采集器控制等工作流(命令入口见 monitoring/admin_cli.py、查询引擎见 monitoring/query_engine.py)。

高流量预设可在高并发场景一键收紧采集节奏:展示当前值 → 原子备份 → 校验 → 带 fsync 原子写入,且只重启采集器(可选),绝不下发任何 GOST 服务命令:

gost-monitor-admin apply-preset high-traffic --restart-collector

配置校验与安全解析逻辑位于 monitoring/config.py;配置被当作严格KEY=VALUE数据解析,从不被 shell source 或执行。

常见问题 FAQ

Q:监控会占用隧道带宽或影响转发吗?不会。监控完全本地、只读,不进流量路径;采集器高优先级被刻意压低(低 Nice + idle IO),且错过期限会自动降载。

Q:历史数据会不会无限撑爆磁盘?不会。6 小时原始 + 24 小时分钟汇总 + 24 小时事件的保留策略会自动滚动清理;gost-monitor-admin maintenance会在单事务中执行有界的聚合/保留并做 WAL 检查点。

Q:不想要监控了,能单独移除吗?可以。安全卸载脚本 uninstall.sh 将监控组件与隧道、凭据、GOST 二进制逐项独立确认;移除监控只删监控本身,不动任何流量文件与服务。

Q:支持哪些系统与架构?Ubuntu 22.04 / 24.04 LTS,amd64与arm64架构。

小结

GOST Manager 的 Monitoring Lite 用零依赖的 SQLite + Python 标准库,把「主机—网络—TCP—GOST 服务—隧道—采集器」六层状态收进同一个本地数据库:

  • 一条gost-monitor snapshot看清当前状态;
  • 10/30/60 分钟窗口回看趋势;
  • 监控故障永远不会牵连隧道流量。

对于在 Ubuntu 上运维 GOST Direct Mode 隧道服务器的你,这套 SQLite 本地监控方案就是最省心的「守夜人」——无需任何额外组件,数据全程留在本机。


  • 监控模块源码:monitoring/
  • 架构说明:docs/ARCHITECTURE-V0.2.md
  • 监控设计文档:docs/MONITORING-V0.2.md
  • 使用指南:docs/USAGE.md
  • 运维手册:docs/OPERATIONS.md
  • 采集器服务单元:packaging/gost-monitor-collector.service

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

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

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

立即咨询