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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 从各个层面介绍了阿里云上监控基于spring boot框架的微服务的产品和服务。这是一种快速有效的搭建整体监控体系的方案。对于中小企业,可以快速搭建起一套完整的体系以对服务运行环境从基础设施到应用性能进行运行态掌控、数据分析、监控报警、故障定位。

背景

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

主机监控

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

云监控提供了云上几乎所有产品的默认监控服务。 对于云主机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也提供了详细的信息和直观的展示。其不仅仅是应用健康监控接口本身的状态,而且包含了服务依赖项的可访问状态。
image

日志监控

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

应用性能监控

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

总结

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

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
1月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
6天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
21 4
|
8天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
46 3
|
8天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
62 1
|
3天前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
8 0
|
10天前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
74 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
5天前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
10天前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
21 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
10天前
|
自然语言处理 Java Maven
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
这篇博客介绍了如何使用Spring Boot整合TransportClient搭建Elasticsearch服务,包括项目创建、Maven依赖、业务代码和测试示例。
34 0
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
|
1月前
|
缓存 前端开发 Java
springboot 的单体服务 字典参数转译
本文介绍了如何在Spring Boot项目中使用缓存来管理字典参数,并确保前后端数据一致性。首先,通过`@EnableCaching`启用缓存功能,接着创建一个自定义的字典缓存类`DicCache`。然后,通过配置类将`DicCache`添加到`cacheManager`中。此外,对字典服务进行改造,使用`@CachePut`和`@CacheEvict`注解保证数据一致性。最后,实现自定义注解`@DicSerializer`和序列化处理类`DictSerializerHandel`,用于在序列化过程中自动转换字典值。通过这种方式,可最小化代码改动并提高系统性能。
springboot 的单体服务 字典参数转译