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