假设一个集群中的多台服务器每一分钟向监控服务器提交一次 metrics ( QPS 、 TPS 等),由于每台服务器的启动时间都不同,服务器自身的时间也可能不同,导致每台服务器发送 metrics 的时间节点都是不同的,有可能某一台发送的时间点在 17:19:01 ,另一台 17:19:31 ,这样一来就差了 30 秒,那怎么统计集群的总 QPS 、 TPS 呢?就算能统计误差应该也挺大的。
1 qingchn 2016-07-20 17:30:25 +08:00 ![]() 首先集群时间不统一就是一个问题,我觉得你应该把这个问题解决了。 1 ,在内网部署 NTP 服务。 2 ,所有的服务器向这台 NTP 服务,同步时间。 |
![]() | 2 ryd994 2016-07-20 18:14:23 +08:00 ![]() 简单办法:开 ntp 服务,就算不是内都行,几十毫秒的误差而已 复杂办法:翻转,改 push 为 pull ,由统计服务器发起请求 |
![]() | 3 Livid MOD PRO ![]() |
4 chzyer 2016-07-20 18:23:49 +08:00 时间以到达监控服务器为准就行了吧. |
![]() | 5 9hills 2016-07-20 19:13:21 +08:00 via iPad ![]() 监控系统标准问题, ntp 是正道 |
6 wsy2220 2016-07-20 19:30:25 +08:00 via Android 即使时间同步了也不能同时往监控服务器发,机器多了就是对监控服务器的 DDOS |
![]() | 7 clino 2016-07-20 19:38:16 +08:00 via Android ![]() 用自动构建软件如 jenkins buildbot 等控制 slave 做,因为是 master 触发的,所以时间会同步 |
![]() | 8 Wien OP |
![]() | 9 lhbc 2016-07-20 20:01:20 +08:00 via Android ![]() ntpdate 可能不是个好方案,建议每台机器都跑 ntpd ntpd 不会造成时间漂移 ntpdate 适合对时间序列无感的场景 |
![]() | 10 Livid MOD PRO ![]() @Wien AWS Cloud Watch 可以用于保存这种时间序列数据。国产支持这个的服务目前不太清楚有哪些。 |
12 zuo 2016-07-20 20:40:14 +08:00 ![]() 公司正在尝试使用 Elastic 的 beats ,里面有个 Metricbeat ,不知道能不能满足你的需求 |
![]() | 13 skydiver 2016-07-20 20:40:53 +08:00 插值就好了,误差不会那么大 |