- kevinhwang2026-10-135321
如果一个 Agent 能同时向多个 Server 上报,两台主控分别使用独立数据库,那么其中一台主控连同数据库一起故障,另一台仍能继续接收和展示监控数据,可以降低对单个主控可靠性的依赖。
目前了解到 NodeGet 已经支持,不确定还有哪些探针项目支持类似功能。不过我个人更喜欢 Go,主要是不懂 Rust,后续想自己修改功能或排查问题,Go 项目会更容易上手。NodeGet 的功能也比我的实际需求多一些,我更希望有一个轻量的方案。
当然,多端上报也有额外开销,配置维护、告警去重和历史数据同步都需要考虑。但如果主要需求是“一台主控挂了,另一台还能看”,感觉这个思路挺实用。
大家还知道哪些支持多 Server 上报的探针?最好是 Go 写的
主楼 - ningyuv2026-10-135705
不如cf
- astom2026-10-1312861
我这个可以,但是项目不可见了 ^-^
- kevinhwang2026-10-135321
- astom2026-10-1312861
我还在找能 分布式 多主控的 探针,nodeget感觉有点麻烦 ^-^
- kevinhwang2026-10-135321
- UPSTREAM互联网服务2026-10-1353529
- kevinhwang2026-10-135321
看起来可以,你是作者?
可以满足你现在的核心需求:Go 编写,一个 Agent 向两套主控上报,其中一台主控连同数据库故障后,另一台仍能查看监控。 不过,它的主控部署依赖比 SQLite 探针多一些。
我看了中文 README 和 Agent 源码,具体情况如下:
你的要求 |
Ithiltir 的情况 |Go 编写,方便自己修改 |
主控和 Agent 都是 Go |一个 Agent 上报多个 Server |
支持配置多个上报目标,每轮并行发送 |一台主控+数据库故障,另一台继续使用 |
两套主控使用独立数据库、提前同时接收数据,可以实现 |网页入口故障后自动切换 |
未查到现成的自动切换方案,可分别访问两套面板 |数据库、历史和配置自动同步 |
这需要另外解决,多目标上报本身不提供复制能力 |依据:主控说明 (https://github.com/Ithildur/Ithiltir/blob/main/README_CN.md)、Agent 上报文档 (https://github.com/Ithildur/Ithiltir-node/blob/main/docs/reporting_apis_CN.md)。
部署时,在两台机器上分别安装 Dash 和数据库,在两边分别创建节点,再把两个上报目标加入同一个 Agent。README 中的“单实例”限制,是指不能让多个 Dash 进程同时写同一套状态,不妨碍这种独立部署方式。
有两点比较影响你的选择:
- 主控依赖较多。 需要 PostgreSQL+TimescaleDB,默认还使用 Redis;Redis 可以通过 --no-redis 省去。因此,Go 技术栈符合你的偏好,但部署维护不算特别简单。README (https://github.com/Ithildur/Ithiltir/blob/main/README_CN.md)
- 慢主控可能影响上报频率。 源码确实并行发送,但每轮会等待所有目标请求结束,HTTP 请求超时设为 10 秒。如果 A 一直没有响应,B 当轮仍能收到数据,但下一轮上报可能被拖慢。上报实现 (https://github.com/Ithildur/Ithiltir-node/blob/main/internal/push/push.go)
按你“一台挂了,另一台还能看”的目标,它值得试用。 建议重点验证主控无响应时另一端的上报间隔,以及恢复后的历史缺口。本次结论来自文档和源码核查,尚未做双机故障实测。
- UPSTREAM互联网服务2026-10-1353529
不是,作者朋友。
- kevinhwang2026-10-135321
starred,单从文档上看就专业,值得研究