假设一个集群中的多台服务器每一分钟向监控服务器提交一次 metrics ( QPS 、 TPS 等),由于每台服务器的启动时间都不同,服务器自身的时间也可能不同,导致每台服务器发送 metrics 的时间节点都是不同的,有可能某一台发送的时间点在 17:19:01 ,另一台 17:19:31 ,这样一来就差了 30 秒,那怎么统计集群的总 QPS 、 TPS 呢?就算能统计误差应该也挺大的。
假设一个集群中的多台服务器每一分钟向监控服务器提交一次 metrics ( QPS 、 TPS 等),由于每台服务器的启动时间都不同,服务器自身的时间也可能不同,导致每台服务器发送 metrics 的时间节点都是不同的,有可能某一台发送的时间点在 17:19:01 ,另一台 17:19:31 ,这样一来就差了 30 秒,那怎么统计集群的总 QPS 、 TPS 呢?就算能统计误差应该也挺大的。
|
1
首先集群时间不统一就是一个问题,我觉得你应该把这个问题解决了。
1 ,在内网部署 NTP 服务。 2 ,所有的服务器向这台 NTP 服务,同步时间。 |
|
2
简单办法:开 ntp 服务,就算不是内都行,几十毫秒的误差而已
复杂办法:翻转,改 push 为 pull ,由统计服务器发起请求 |
|
3
|
|
chzyerJul 20, 2016
4
时间以到达监控服务器为准就行了吧.
|
|
5
监控系统标准问题, ntp 是正道
|
|
wsy2220Jul 20, 2016 via Android
6
即使时间同步了也不能同时往监控服务器发,机器多了就是对监控服务器的 DDOS
|
|
7
用自动构建软件如 jenkins buildbot 等控制 slave 做,因为是 master 触发的,所以时间会同步
|
|
8
|
|
9
ntpdate 可能不是个好方案,建议每台机器都跑 ntpd
ntpd 不会造成时间漂移 ntpdate 适合对时间序列无感的场景 |
|
12
公司正在尝试使用 Elastic 的 beats ,里面有个 Metricbeat ,不知道能不能满足你的需求
|
|
skydiverJul 20, 2016
13
插值就好了,误差不会那么大
|