Prometheus Exporter
[!INFO] Git Commit:
5ea0bc3| Updated: 2026-10-01
Prometheus Exporter (modid prometheus_exporter) 是一个 Minecraft 1.7.10 / Forge 10.13.4.1614
的服务端监控导出器,把服务器与 JVM 的运行状态以 Prometheus 文本格式暴露给抓取工具。
本 mod 不向游戏内添加任何内容——0 方块、0 物品、0 实体,因此可以随时用新版 jar 覆盖旧版
而不影响存档。
上游作者为 cpburnz,GTNH 维护者为 Caedis。
它做什么
启动后在本机开一个 HTTP 端点(默认 0.0.0.0:19565),Prometheus 定时来抓取共 14 个
mc_ 前缀指标 + jwm_collector 开启时的标准 JVM 指标,覆盖:
- tick 耗时 —— 服务器整体与各维度的 tick 时间直方图(7 档分桶)、主世界总时间;
- 世界负载 —— 各维度的实体数(按类型)、正在 tick 的方块实体数、已加载区块数;
- 玩家 —— 在线玩家列表(含 UUID、名称、所在维度)、每位玩家的原版统计值;
- 队伍领地 —— ServerUtilities 的队伍认领区块数、其中强制加载数、队伍成员;
- 自监控 —— 各采集器上次刷新耗时与数据陈旧度。
仅服务端:preInit 在客户端侧注册配置后即 return,不启动 HTTP 服务器、不注册指令。
客户端仍会生成配置文件。
架构特点:服务器线程采样 + 快照缓存
本 mod 最核心的设计是把指标采集与抓取彻底解耦(GTNH 移植的主要改动):
- 读取世界状态的 6 个采集器在服务器线程上按各自间隔采样,产出不可变快照存入
AtomicReference; - Prometheus 的 HTTP 线程在
collect()中只读缓存,永不触碰世界状态。
因此抓取既不会与 tick 循环竞争,也不会阻塞服务器。每个采集器的刷新间隔可在配置中单独调整 (1 tick ~ 3600 秒),默认廉价的 2 秒、昂贵的 30 秒。 若某次采样抛异常,保留旧快照且不更新时间戳,陈旧度指标会持续增长以暴露故障。
指令
/prometheus <start|stop|restart>(别名 /prom),权限等级默认 4(仅 OP),
可配置。执行 restart 可在不重启服务器的情况下让新配置生效。
注意事项
- 默认监听
0.0.0.0(所有网卡)且无任何认证,部署时需靠防火墙或反向代理限制访问。 - 默认端口 19565(非常见的 9100),由 25565 − 6000 推得,以免与 Minecraft 端口冲突。
- 端口被占用时只记一条 error 日志,指令仍会显示启动成功——排查需看服务端日志。
- 指令的 5 条提示消息是硬编码英文,本 mod 无语言文件,不会本地化。
设定列表
- mod 元信息与打包数据 -
@Mod注解、modid 实读、access transformer、shadow 的 Prometheus 客户端、4 个生命周期事件 - 配置 - 2 个分类 20 个选项的类型、默认值、范围与生效时机
- 采集模型与快照缓存 -
Sampler/CollectorScheduler/BaseCollector的服务器线程采样与失败保留语义 - 指标与采集器 - 14 个
mc_*指标的名称、类型、标签与各自的采集规则 - prometheus 指令 - 三个子命令、权限、幂等行为、消息本地化缺失与端口占用陷阱