假如 现在有 10 台云服务器,服务器上运行我的软件,每分钟会记录一次上传和下载
我现在自己得写个监控,通过服务器运行的软件 api 获取到每分钟每台上传和下载,总量写入到本地数据库 数据库表中有个字段是状态,默认状态是 0 ,假如 10 台服务器都能获取正确上传和下载,会把状态改为 1 ,下次不再获取这个时间段的上传下载,如果有一台没有获取到,这个程序都会卡到这里一直去获取 我的判断是根据 10 台在线,必须获取到 10 台的上传和下载才能认为完成
偶尔会发生服务器挂掉的情况,实际在线只有 9 个,服务器的在线统计会有延迟,这样数据库里就会有一些状态为 0 没统计完的数据,我没思路了
1
ZRS 2022-11-17 02:10:04 +08:00
状态字段用 bit 直接精确到哪台已获取就完事了....定时扫表补偿拉取
|
2
gebishushu OP @ZRS 谢谢 我大概也是这么想的 不知道可行不可行 我试试
|
3
opengps 2022-11-17 08:34:05 +08:00
检测结果只代表过去一个检测周期(更准确的说只代表检测那一刻),这种统计推荐用主动上报,被动统计的方案,监控端收不到固定间隔发来的心跳就判定为离线故障
|
4
xaplux 2022-11-17 08:39:18 +08:00
如#3 推荐主动上报
|
5
brader 2022-11-17 09:37:25 +08:00
建议做报表统计页面的形式,那 10 台服务器,不要做任何逻辑判定,做的事情越简单越好。
比如,那 10 台服务器只负责每分钟上报数据到数据统计中心,上报数据可携带时间戳、机器 ID 等字段,统计中心收集数据,根据机器 ID 、时间戳与当前时间判定这份数据属于正常上报还是延迟上报,将判定结果一起写入统计表。 然后数据中心根据统计表,输出每分钟纬度的统计图(可用折线图等),用颜色等方式清晰标明哪一分钟的点,上报的机器数量是否正常 |
6
gebishushu OP |
7
opengps 2022-11-17 11:36:15 +08:00
@gebishushu 如果没法靠服务器里加监控主动上报,那你得把你监控接口请求的超时时间缩短,达到接近实时的效果。比如 1 秒超时,而不是等到默认的超时才报错更新
|
8
jones2000 2022-11-17 12:12:16 +08:00
ws 或 tcp 长连接, 实时推送每个服务器的状态信息。 统计的时候直接获取在线的服务器然后统计
|
9
akira 2022-11-17 14:22:22 +08:00
你自己要先想好,“完成”的定义
|
10
xuanbg 2022-11-17 16:55:34 +08:00
api 不能获取一个时间段内的上传 /下载记录吗?记录拿到了可以很简单地以图表的形式显示出来。这才叫监控,一次拿一个是怎么想的我有些不能理解。
|