为了账号安全,请及时绑定邮箱和手机立即绑定

监控架构的思考

标签:
Go

简单说监控的话,至少要包括采集端,收集端,存储端,展示端。一个比较简单的逻辑如下
图片描述

在这个逻辑下,随着业务的扩充,我们有了新的挑战。

挑战

  • 存储的数据比较重要
    监控在排查问题,复盘的时候是比较重要的。例如类似双十一这种数据,肯定是要可靠保存并且下一年要做对比的。所以这里的存储不能是一个机器的磁盘,而是分布式高可靠的存储。这样保证了意外情况下数据可以准备的查找。
  • 机器太多,一个collector撑不住
    业务肯定有增长,原来一台机器接收数据也有撑不住的时候,所以collector也必须多个,这里就牵扯到一个问题,多个collector应该如何工作。这里是需要一个压测的,得到一个collector的能力边界。然后进行细分。我们常见的有几种方式。
    一种是有规划的知道全局,那么每个collector可以实现规划抓取或者接收。这里就需要一个配置服务中心,这个可以给collector,也可以给agent。给agent的话,就是agent自动连接对应的collector,给collector的话,就是collector进行拉取的路子。
    图片描述

这种规划的模式缺点是不太灵活,进程或者机器不可能完全没有意外,需要做高可用,思路有两种,一种是挂掉的机器分摊原来的压力。例如5个collector对应5000节点,现在collector挂掉一个,那么就是4个collector对应5000。这里需要一个分配策略在里面。还有一种方式是每个collector做主备关系,冷备的话的就是主挂掉,有探测能把备拉起来。热备的话一般是双活方案,连个同时在拉取和接受数据。一般的设计collector不存数据,数据在分布式的存储里。
如果是prometheus这种抓取和存储一起的,他本身也会负责一部分查询的话,就需要双活方案了,或者把缓存提出来。
下面是双活的样子图片描述
注:双活方案拉比推更适合,如果想用推的话,可以选择把数据都推倒一个集中点,那个点进行拉取操作。

  • 存储查询的压力
    现在所有的数据都在storage上,数据的及时性以及查询压力都在存储,这种架构的模式的瓶颈最终落在了存储,所以存储这边需要适当的优化。最简单的一种方式就加机器,例如hbase这种,加regionserver是可以有效缓解的。如果是其他存储呢?
    我们考虑监控的一个特点,一般是查询特定的或者近期的数据。所以数据是有热点的。越远的查询的可能性越小,不过类似双十一这种是有数据意义的数据。
    所以可以组织热点数据的一个稳定查询。
    图片描述

小结

设计根据场景来区分,不同的场景其实方案差别挺大的,这些优化都是为了特定场景准备的。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.6万
获赞与收藏
380

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消