基于spring boot框架的云上微服务整体监控方案

背景

spring boot是一个轻量级的java开发框架,其不仅提供了开箱即用的默认设置,简化了应用开发,还提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标、健康检测、外部化配置等。而在云上,阿里云有云监控、应用实时监控、日志服务等。在这样的背景下,我们构建基于spring boot框架的云上微服务全面监控方案相对方便很多。

主机监控

对于云主机ECS,在购买后,就会默认提供ECS自带的默认基础监控。不过,ECS基础监控指标只有CPU使用率、网络流量和速率以及磁盘读写次数和字节数,缺少了常用的一些监控项目和指标,比如内存使用情况和磁盘空间占用情况。所以不能满足日常的主机监控需求。
基于spring boot框架的云上微服务整体监控方案

云监控提供了云上几乎所有产品的默认监控服务。 对于云主机ECS,只要安装好云监控插件,就会从操作系统内部获取主机运行时的各种数据,并提供图表查看和报警功能。对于云主机,云监控提供了CPU、内存、系统平均负载、磁盘、网络、进程的详细监控指标和数据,几乎涵盖了主机监控需求的各个方面。同时,云监控插件的采集频率为15秒一次,可完全满足监控报警实时性的要求。

服务存活监控

对于自研服务存活状态的监控,一直是比较麻烦的事情。一般通过调用服务的某个接口然后判断返回值来确认服务是否存活。而基于spring boot框架的应用服务,就相对方便多了。
spring boot admin,简写sba,是用于管理和监控Spring Boot应用的开源项目。 应用可以通过sba client注册或者使用Spring Cloud(如Eureka、Consul)发现。sba在Spring Boot Actuator基础上提供了简洁的可视化WEB UI。
我们使用eureka发现的方式对基于spring boot的服务存活状态进行监控非常方便。服务本身不需要进行任何变更和配置(前提是已经正确使用了相关依赖,比如actuator等),spring boot admin即可直接发现并采集相关应用指标。作为管理和监控Spring Boot应用的开源项目,sba当然不仅仅是监控服务存活状态,它可以查看自动配置的使用情况、查看配置属性、查看bean及其关系列表、打印线程栈、查看所有环境变量、查看具体变量值、查看应用信息、查看所有url映射、查看基本追踪信息,甚至还可以在线修改运行参数并调试、重启和关闭应用程序。就算仅仅是监控服务存活状态,spring boot暴露的应用健康接口指标也非常全面,spring boot admin也提供了详细的信息和直观的展示。其不仅仅是应用健康监控接口本身的状态,而且包含了服务依赖项的可访问状态。
基于spring boot框架的云上微服务整体监控方案

日志监控

传统的日志监控也是非常棘手的事情。著名的ELK,集数据收集、存储、搜索、展示与一体,功能强大,但其部署、运维均较复杂,要在生产环境大规模的使用,并不是看上去那么简单。当然,现在也有很多专门提供日志数据处理类的厂商产品,比如日志易、splunk等。不过,在阿里云上,我们有一种更简单的方式来收集存储处理日志数据。
日志服务(Log Service)是阿里云提供的针对海量日志收集、存储、查询的平台化服务。日志服务可以用来集中收集服务集群中所有的日志,并支持实时消费,实时查询和投递到OSS、MaxCompute等其他云产品做进一步分析。而如果要对日志进行监控,使用日志服务当然是首选方案。在已经配置好日志服务将日志收集到日志服务后,我们就可以用日志查询功能检查日志情况。阿里云的日志服务在首次查询后即可按需创建报警。报警规则将在云监控自动建立,后续即可自动查询分析统计日志情况,并按照规则进行监控报警。日志服务也提供了强大的api支持,在服务标准化程度较高,报警规则也相对统一的情况下,可编写程序调用api接口,快速创建日志监控报警规则。
基于spring boot框架的云上微服务整体监控方案

应用性能监控

微服务架构下服务调用关系复杂,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径会构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响。我们必须理解和掌握系统行为,对应用程序的性能进行监测,必要时要能快速诊断确认瓶颈所在,才能保证服务应用程序良好稳定的运行。
应用性能管理和监控已经不是一个新概念了。相关的成熟产品也较多,国内商业产品有听云、博睿、OneAPM等,开源产品有SkyWalking、Cat、Pinpoint、Zipkin等。阿里云上的相关产品名为应用实时监控服务ARMS。ARMS主要包括应用监控和前端监控两部分。应用监控又叫应用性能管理,主要提供分布式应用调用链、本地调用堆栈、数据库慢SQL检测、异常捕获、各类中间件接口调用监控等功能。
使用应用性能监控需要安装探针,安装好探针后即可通过web页面查看、分析系统行为和运行情况。
基于spring boot框架的云上微服务整体监控方案
基于spring boot框架的云上微服务整体监控方案
基于spring boot框架的云上微服务整体监控方案

总结

以上,从各个层面介绍了阿里云上监控基于spring boot框架的微服务的产品和服务。这是一种快速有效的搭建整体监控体系的方案。对于中小企业,可以快速搭建起一套完整的体系以对服务运行环境从基础设施到应用性能进行运行态掌控、数据分析、监控报警、故障定位。当然,这不是一个完美的方案,其中还有很多监控项可能没有涉及,有些没法做到,需要我们根据实际情况进行二次开发或者使用其他产品进行补充完善。

上一篇:复习Linux如何显示文件指定行数的内容


下一篇:利用函数计算流式 gz 打包 ECS 上的单个 超大文件