假设一个集群中的多台服务器每一分钟向监控服务器提交一次 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 ![]() |
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 ![]() @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
插值就好了,误差不会那么大
|