如果一个 Agent 能同时向多个 Server 上报,两台主控分别使用独立数据库,那么其中一台主控连同数据库一起故障,另一台仍能继续接收和展示监控数据,可以降低对单个主控可靠性的依赖。
目前了解到 NodeGet 已经支持,不确定还有哪些探针项目支持类似功能。不过我个人更喜欢 Go,主要是不懂 Rust,后续想自己修改功能或排查问题,Go 项目会更容易上手。NodeGet 的功能也比我的实际需求多一些,我更希望有一个轻量的方案。
当然,多端上报也有额外开销,配置维护、告警去重和历史数据同步都需要考虑。但如果主要需求是“一台主控挂了,另一台还能看”,感觉这个思路挺实用。
大家还知道哪些支持多 Server 上报的探针?最好是 Go 写的
https://github.com/Ithildur/Ithiltir
不如cf
我这个可以,但是项目不可见了
@astom #2 我也是没精力(token)去搞探针了
@kevinhwang #3 我还在找能 分布式 多主控的 探针,nodeget感觉有点麻烦
@astom #4 这个复杂了,感觉没必要。多server单纯是oneman有些机器性能很强,但是不稳定,可最大化压榨server的性能
@UPSTREAM互联网服务 #6
看起来可以,你是作者?
可以满足你现在的核心需求:Go 编写,一个 Agent 向两套主控上报,其中一台主控连同数据库故障后,另一台仍能查看监控。 不过,它的主控部署依赖比 SQLite 探针多一些。
我看了中文 README 和 Agent 源码,具体情况如下:
依据:主控说明 (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 进程同时写同一套状态,不妨碍这种独立部署方式。
有两点比较影响你的选择:
按你“一台挂了,另一台还能看”的目标,它值得试用。 建议重点验证主控无响应时另一端的上报间隔,以及恢复后的历史缺口。本次结论来自文档和源码核查,尚未做双机故障实测。
@kevinhwang #7
不是,作者朋友。
@UPSTREAM互联网服务 #8 starred,单从文档上看就专业,值得研究