分布式系统监控体系
微服务的分层和监控
监控是为服务治理的关键环节,监控系统的完善程度,直接影响整个微服务系统质量的好坏,我们微服务在线上运行的时候,有没有一套完善的监控体系,能够实时了解它的健康情况,对整个系统的可靠性和稳定性是非常重要的。本篇文章会介绍一下比较完善的微服务监控体系需要涉及哪些层次。
微服务的监控层次主要划分为五个监控层次,分别是:基础设施监控、系统层监控、应用层监控、业务层监控、端用户体验监控。如下图
基础设施监控
该层次一般由运维团队负责,涉及的方面有网络交换机等,底层设备监控,这些设备可靠性稳定性直接影响上层服务的稳定性。一般我们对网络的流量、丢包、错包、连接数等基础设施核心指标进行监控。
系统层监控
系统层监控涵盖了物理机、虚拟机、OS(操作系统)等这些都是属于系统层监控涵盖的方面。我们需要去监控CPU、内存、网络使用情况、磁盘IO等。
应用层监控
应用层监控涉及的方面有很多,比如:URL(性能QPS、计数、响应时间等)、service服务、sql(sql的执行情况,如慢sql)、cache(性能、命中率、响应时间、QPS等)
业务监控
业务监控一般关于业务相关的核心指标,如交易性网站我们关注用户登陆情况、注册情况、下单情况、支付情况。这些会直接影响到实际业务方面,一般由该数据进行BI展示。
端用户体验监控
一般我们的应用程序回交付到客户手上,客户在使用应用程序的时候体验是什么样子的,性能体验,有没有产生错误。在哪些城市、地区使用情况,监控使用的运营商如联通、电信等。还要去监控客户端的版本信息使用的操作系统等。
以上就是我们比较体系化的监控分层,每个层次都非常重要。一般情况下,当一个问题发生的时候,首先发现的会是在用户端或者业务层出现问题,如并发量下降。这个时候我们的研发和运维人员回去从应用层和系统层去监控那个机器是不是CPU负载过高,或者网络波动了。
一般好的监控体系是端到端的全方位进行监控是很重要的。
监控方法
- 日志监控
- 没有日志线上出现故障没有办法排除,所以日志是非常重要的。
- Metics计数
- 计数、延时、响应时间
- 调用链监控
- 是在微服务架构中非常重要的一环。它除了能帮助我们定位问题以外,还能帮助项目成员清晰的去了解项目部署结构,毕竟一个几十上百的微服务,相信在运行时间久了之后,项目的结构很可能就是下面图片这样了,在这种情况下,团队开发者甚至是架构师都不一定能对项目的网络结构有很清晰的了解,那就更别谈系统优化了。
- 告警
- 系统出现问题时,需要通过告警系统,告知研发人员系统出现问题,需要去解决。
- 健康检查
技术实现
目前主流的监控架构,一般都是采用如上的架构
在虚拟机或物理机上部署服务,在主机或者进程内安装agent、agent负责收集机器和日志、Metics中的数据发送到后台的Kafka。使用队列的好处是系统之间可以解耦。后台一般日志监控使用标准的ELK模式。Metics监控一般通过InfluxDB和GraFana进行数据展示。
更多精彩内容关注《杰子学编程》
更多内容请查看 Julywhj的博客期待您的光顾。