集群中所有服务器向监控服务器提交 metrics 的时间点无法统一?

2016-07-20 17:20:00 +08:00
 Wien

假设一个集群中的多台服务器每一分钟向监控服务器提交一次 metrics ( QPS 、 TPS 等),由于每台服务器的启动时间都不同,服务器自身的时间也可能不同,导致每台服务器发送 metrics 的时间节点都是不同的,有可能某一台发送的时间点在 17:19:01 ,另一台 17:19:31 ,这样一来就差了 30 秒,那怎么统计集群的总 QPS 、 TPS 呢?就算能统计误差应该也挺大的。

5677 次点击
所在节点    DevOps
14 条回复
qingchn
2016-07-20 17:30:25 +08:00
首先集群时间不统一就是一个问题,我觉得你应该把这个问题解决了。
1 ,在内网部署 NTP 服务。
2 ,所有的服务器向这台 NTP 服务,同步时间。
ryd994
2016-07-20 18:14:23 +08:00
简单办法:开 ntp 服务,就算不是内都行,几十毫秒的误差而已
复杂办法:翻转,改 push 为 pull ,由统计服务器发起请求
Livid
2016-07-20 18:22:29 +08:00
在每台服务器的 crontab 里添加:

*/10 * * * * ntpdate time.asia.apple.com > /dev/null
chzyer
2016-07-20 18:23:49 +08:00
时间以到达监控服务器为准就行了吧.
9hills
2016-07-20 19:13:21 +08:00
监控系统标准问题, ntp 是正道
wsy2220
2016-07-20 19:30:25 +08:00
即使时间同步了也不能同时往监控服务器发,机器多了就是对监控服务器的 DDOS
clino
2016-07-20 19:38:16 +08:00
用自动构建软件如 jenkins buildbot 等控制 slave 做,因为是 master 触发的,所以时间会同步
Wien
2016-07-20 19:59:05 +08:00
@9hills @Livid @chzyer @clino @qingchn @ryd994 @wsy2220 监控这种个性化的数据(比如某个 Api 接口的调用次数)公司现在用的是在项目中加个定时器,定时向 opentsdb 发送监控数据。。。各位项目中一般怎么做的呢?
lhbc
2016-07-20 20:01:20 +08:00
ntpdate 可能不是个好方案,建议每台机器都跑 ntpd
ntpd 不会造成时间漂移
ntpdate 适合对时间序列无感的场景
Livid
2016-07-20 20:19:04 +08:00
@Wien AWS Cloud Watch 可以用于保存这种时间序列数据。国产支持这个的服务目前不太清楚有哪些。
clino
2016-07-20 20:23:08 +08:00
@Wien 我觉得可以打在专门的 log 里然后另外处理
zuo
2016-07-20 20:40:14 +08:00
公司正在尝试使用 Elastic 的 beats ,里面有个 Metricbeat ,不知道能不能满足你的需求
skydiver
2016-07-20 20:40:53 +08:00
插值就好了,误差不会那么大
9hills
2016-07-20 22:27:02 +08:00
@Wien 日志分析,太多了。经典的 ELK

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/293748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX