高并发系统设计--监控

系统监控是为了快速地发现和定位业务系统中出现的问题。在构建系统监控的过程中,一般需关注以下三方面问题:

  1. 如何选择监控的指标
  2. 有哪些方法和途径可以采集指标
  3. 采集的指标如何处理和展示
如何选择监控的指标

一般服务层需要监控四个指标,分别为延迟、通信量、错误和饱和度。

  • 延迟指的是请求的响应时间。比如接口的响应时间、访问数据库和缓存的响应时间。
  • 通信量可以理解为吞吐量,也就是单位时间内请求量的大小。比如访问第三方服务的请求量,访问消息队列的请求量。
  • 错误表示当前系统发生的错误数量。
  • 饱和度指的是服务或者资源到达上限的程度(也可以说是服务或者资源的利用率),比如 CPU 的使用率、内存使用率、磁盘使用率、缓存数据库的连接数等等。

一些特殊的系统也有特殊的监控指标,例如:数据库主从延迟数据、消息队列的堆积情况、缓存的命中率等等

有哪些方法和途径可以采集指标

监控指标的采集,一般会依据采集数据源的不同选用不同的采集方式,总结起来,大概有以下几种类型:

  • Agent 是一种比较常见的采集数据指标的方式,在数据源的服务器上部署自研或者开源的 Agent 来收集数据,发送给监控系统,实现数据的采集。
  • 另一种很重要的数据获取方式是在代码中埋点
  • 日志也是你监控数据的重要来源之一
采集的指标如何处理和展示

在采集到监控数据之后,对它们进行处理和存储了。一般会先用消息队列来承接数据,主要的作用是削峰填谷,防止写入过多的监控数据,对监控服务产生影响。
可以部署两个队列处理程序,来消费消息队列中的数据。

  • 一个处理程序接收到数据后,把数据写入到 Elasticsearch,然后通过 Kibana 展示数据,这些数据主要是用来做原始数据的查询。
  • 另一个处理程序是一些流式处理的中间件,比如 Spark、Storm。接收数据后会做一些处理,这些处理包括:解析数据格式。从里面提取诸如请求量、响应时间、请求 URL 等数据;对数据做一些聚合运算。

一般从不同的数据源中采集了很多的指标,最终在监控系统中一般会形成以下几个报表:

  1. 访问趋势报表:展示了服务整体的访问量、响应时间情况、错误数量、带宽等信息。它主要反映的是服务的整体运行情况,帮助你来发现问题。
  2. 性能报表:这类报表对接的是资源和依赖服务的埋点数据,展示了被埋点资源的访问量和响应时间情况。它反映了资源的整体运行情况。
  3. 资源报表:这类报表主要对接的是使用 Agent 采集的资源的运行情况数据。当你从性能报表中,发现某一个资源出现了问题,那么就可以进一步从这个报表中,发现资源究竟出现了什么问题,是连接数异常增高还是缓存命中率下降。这样可以进一步帮你分析问题的根源,找到解决问题的方案。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值