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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 从各个层面介绍了阿里云上监控基于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监测,评估网站服务质量和用户体验。
相关文章
|
2月前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
361 0
|
2天前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
20 1
|
7天前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
27 2
|
7天前
|
Cloud Native 安全 Java
Micronaut对决Spring Boot:谁是微服务领域的王者?揭秘两者优劣,选对框架至关重要!
【9月更文挑战第5天】近年来,微服务架构备受关注,Micronaut和Spring Boot成为热门选择。Micronaut由OCI开发,基于注解的依赖注入,内置多种特性,轻量级且启动迅速;Spring Boot则简化了Spring应用开发,拥有丰富的生态支持。选择框架需考虑项目需求、团队经验、性能要求及社区支持等因素。希望本文能帮助您选择合适的微服务框架,助力您的软件开发项目取得成功!
38 2
|
25天前
|
JSON 算法 Java
微服务Token鉴权设计的几种方案
【8月更文挑战第18天】在微服务架构中,Token鉴权是确保服务安全性的重要环节。本文将详细介绍几种常见的微服务Token鉴权设计方案,旨在帮助大家在工作和学习中更好地理解和应用这些技术。
47 2
|
25天前
|
小程序 JavaScript Java
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
|
29天前
|
Java Windows
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
32 2
|
1月前
|
Java 开发者 Spring
"揭秘SpringBoot魔法SPI机制:一键解锁服务扩展新姿势,让你的应用灵活飞天!"
【8月更文挑战第11天】SPI(Service Provider Interface)是Java的服务提供发现机制,用于运行时动态查找和加载服务实现。SpringBoot在其基础上进行了封装和优化,通过`spring.factories`文件提供更集中的配置方式,便于框架扩展和组件替换。本文通过定义接口`HelloService`及其实现类`HelloServiceImpl`,并在`spring.factories`中配置,结合`SpringFactoriesLoader`加载服务,展示了SpringBoot SPI机制的工作流程和优势。
36 5
|
28天前
|
NoSQL Java Linux
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
该博客文章介绍了如何在Spring Boot项目中通过配置和代码实现连接运行在Linux虚拟机上的Redis服务,并提供了详细的步骤和测试结果截图。
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
|
30天前
|
安全 前端开发 Java
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
在Web安全上下文中,源(Origin)是指一个URL的协议、域名和端口号的组合。这三个部分共同定义了资源的来源,浏览器会根据这些信息来判断两个资源是否属于同一源。例如,https://www.example.com:443和http://www.example.com虽然域名相同,但由于协议和端口号不同,它们被视为不同的源。同源(Same-Origin)是指两个URL的协议、域名和端口号完全相同。只有当这些条件都满足时,浏览器才认为这两个资源来自同一源,从而允许它们之间的交互操作。
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例