当前位置: 首页 > 科技观察

SpringBoot应用监控常用解决方案

时间:2023-03-18 11:40:43 科技观察

应用监控在我们的生产环境中是一个非常重要的事情。运维人员不可能24小时盯着应用,及时解决应用也不现实。我们需要能够实时掌握应用的运行数据,以便及早发现问题,同时能够在应用挂掉的时候自动报警,解放开发者。SpringBoot还提供生产级应用程序监控解决方案。单体应用和微服务应用都有相应的解决方案。今天松哥想和大家分享一下SpringBoot中的应用监控解决方案。首先我们来看一下应用监控需要哪些东西?其实有两点:信息收集器数据可视化UI信息收集器会收集应用健康、审计、指标、HTTP请求等信息,并将其暴露出来,数据可视化UI这些数据会通过仪表板、图形等方式展示,并对数据进行分析和报警。我们分开来看。SpringBootActuator在SpringBoot项目中,我们使用的信息采集器主要是SpringBootActuator。该模块由SpringBoot官方提供。它包括许多生产级功能,例如健康检查、审计、指标收集和HTTP请求跟踪。等等,SpringBootActuator收集这些信息后,通过HTTP和JMX暴露给外部模块。例如,SpringBootActuator通过/health端点(endpoints)提供应用健康信息。开发者只需要访问这个端点就可以看到应用程序的健康信息。但是这些端点返回的数据都是JSON格式的,不方便查看。不方便分析,所以一般都是SpringBootActuator配合一些外部模块使用。SpringBootActuator支持的端点主要有以下几种:如果是web应用,基本也支持以下几种端点:说到SpringBootActuator,还有一个东西需要给大家介绍一下,那就是Micrometer,从SpringBoot2.0开始,Actuator底层改为Micrometer。当我们在SpringBoot项目中引入Actuator依赖时,会发现其中包含了Micrometer:这个依赖是干什么用的?Micrometer为Java平台上的性能数据收集提供了一个通用的API。应用只需要使用Micrometer的通用API收集性能指标即可,Micrometer会负责完成与不同监控系统的适配工作,类似于一个Adapter。使用此适配器,切换监控系统变得非常容易。同时,Micrometer还支持向多个不同的监控系统推送数据。SpringBootActuator使用Micrometer与外部应用监控系统集成,开发者只需要稍作配置即可与外部应用监控系统集成。Micrometer支持的监控系统包括:AppOpticsAtlasDatadogDynatraceElasticGangliaGraphiteHumioInfluxJMXKairosDBNewRelicPrometheusSignalFxSimple(in-memory)StatsDWavefrontinformationcollector老实说松哥看到的大部分项目都是用的SpringBootActuator,似乎没有其他更好的选择。如果大家觉得其他解决方案有用,也可以留言讨论。下面我们就来看看一些常用的应用监控可视化工具吧。SpringBootAdmin是SpringBoot中最正宗的应用监控可视化工具。看名字就知道真假了。我们在创建SpringBoot项目的时候,在选择依赖的时候有这个选项:如果是单体应用,很多人可能会选择SpringBootAdmin作为监控数据可视化工具,但是它也支持微服务应用(应用信息可以是通过Eureka、Consul等注册中心获取),但在微服务中,我们可能会选择Grafana+更多的Prometheus组合。SpringBootAdmin主要包含以下功能:显示应用健康信息。显示有关应用程序运行的详细信息,例如JVM和内存指标、数据源指标、缓存指标等。显示应用程序的构建信息。查看JVM系统和环境属性查看SpringBoot配置属性支持SpringCloud端点刷新功能/refresh-endpoint便捷的日志级别管理功能可以与JMX-beans交互查看Threaddump查看http请求查看定时任务查看和删除活动会话查看Flyway/Liquibase数据库迁移下载heapdump状态变化通知...可以看到,SpringBootAdmin不仅将Actuator界面中的数据可视化,还在此基础上提供了分析、告警等功能。SpringBootAdmin的展示界面如下:Grafana+Prometheus的组合在微服务项目中比较常见,在宋哥录制的SpringCloud视频中也有提到。Prometheus是一款开源的监控+时序数据库+告警软件,由SoundCloud开发,CNCF基金会管理,孵化成功,但是Prometheus的UI比较简单,用户体验不是很好,大屏监控比较流行现在页面,展示各种炫酷图表。因此,在实际应用中,一般会结合Grafana使用Prometheus。Grafana也是一个开源的跨平台测量分析和可视化+告警工具。它支持多种数据源,包括Prometheus。Grafana的UI还是挺酷的,如下:当然,使用这个组合也离不开SpringBootActuator。总结之前和朋友分享过SpringBoot应用监控的主流方案,但是没有提到具体的用法。后面有空再跟大家说说具体的用法。除了这些主流的解决方案,还有很多小众的解决方案。宋大哥也看到极少数项目组开发了自己的应用监控方案。但是,对于大多数项目来说,这些现成的成熟解决方案无疑是最好的选择。好了,今天就和小伙伴们说这么多,回头看看具体的用法吧~本文转载自微信公众号《江南的一场小雨》,可以通过以下关注二维码。转载本文请联系江南一点鱼公众号。