spring boot 指标监控神器(一)

简介: 大家好,我是指北君PS:最近是跳槽的高峰期,我连日加班好多天,整理出了包含16000 多道面试题的面试宝典,并且指北君也会持续更新这份面试宝典中的题目,希望它能帮助大家找到自己心仪的工作!

不知道大家在写 Spring Boot 项目的过程中,使用过 Spring Boot Actuator 吗?知道 Spring Boot Actuator 是什么,干什么的吗?今天就要来给大家介绍一下 Spring Boot Actuator,学习如何在 Spring Boot 2.x 中使用、配置和扩展这个监控工具。Spring Boot 1.x 的使用就不再这边介绍了。相信大家平时使用的框架基本上都要升级到 2.x了吧。

什么是 Actuator ?

从本质上讲,Spring Boot Actuator 为我们的应用程序带来了生产就绪的功能。监控我们的应用程序,收集指标,了解流量,或者是数据库的状态。有了它,我们就可以很简单的监控应用程序的各种指标数据。

Spring Boot Actuator 使用 http 或者 JMX 的方式来公开运行中的应用程序的操作信息--健康、指标、信息、转储、环境等,我们能够方便的与它互动。只要添加Spring Boot Actuator 依赖到 classpath 中,就有几个指标路径可供我们开箱使用。与大多数 Spring boot 模块一样,我们可以很容易地以多种方式配置或扩展它。

快速入门

要想启用 Spring Boot Actuator,我们只需在软件包管理器中添加 spring-boot-starter-actuator 依赖项。在 pom.xml 文件添加如下代码即可:

1.png

是吧,很简单就添加好了。有的小朋友可能会有疑问了,为什么没有添加 version 节点呢?那是因为 Spring Bootparent pom 会制定版本号,所以这里无需再次指定了。

Spring Boot 2.x Actuator

2.x 版本中,Spring Boot Actuator 保持了 1.x 的基本操作,但简化了它的模型,扩展了它的能力,并加入了更好的默认值。这个版本变得与技术无关。它还简化了其安全模型,将其与应用程序模型合并。最新版本现在支持CRUD模型,而不是旧的读写模型。

技术支持

2.x 中,Spring Boot Actuator 将其模型定义为可插拔和可扩展的,而不依赖于 MVC。通过这个新的模型,我们能够利用 MVC 以及 WebFlux 作为底层 Web 技术的优势。此外,可以通过实现正确的适配器来添加即将到来的技术。不过 JMX 仍然被支持,无需任何额外的代码就可以暴露路径。

重要变化

与以前的版本不同,Spring Boot Actuator 的大多数路径都是禁用的。默认情况下,只有 /health/info 两个可用。如果我们想启用所有的路径,可以设置 management.endpoints.web.exposure.include=* 来实现。Actuator 现在与常规的 App 安全规则共享安全配置,所以安全模型被大大简化。要调整 Actuator 的安全规则,我们可以只添加一个 /actuator/** 的条目。


2.png

我们可以在全新的 Actuator 官方文档中找到进一步的细节。另外,在默认情况下,所有的 Actuator 路径现在都被放在 /actuator 路径下。和以前的版本一样,我们可以使用新的属性management.endpoints.web.base-path 来调整这个路径。

预定义的路径

让我们看看一些可用的路径,其中大部分在1.x中已经可用。另外,有些路径被添加了,有些被删除了,有些被重组了。

  • /auditevents 列出了安全审计相关的事件,如用户登录/注销。此外,我们还可以通过本金或类型以及其他字段进行过滤。
  • /beans 返回我们BeanFactory中所有可用的bean。与/auditevents不同,它不支持过滤。
  • /conditions,以前被称为/autoconfig,围绕自动配置建立一个条件报告。
  • /configprops 允许我们获取所有@ConfigurationProperties。
  • /env 返回当前的环境属性。此外,我们还可以检索单个属性。
  • /flyway 提供了关于我们Flyway数据库迁移的细节。
  • /health 总结了我们应用程序的健康状态。
  • /heapdump 构建并返回我们应用程序使用的 JVM 的堆存储。
  • /info 返回一般信息。它可能是自定义数据、构建信息或关于最新提交的细节。
  • /liquibase 的行为类似于/flyway,但针对Liquibase。
  • /logfile 返回普通的应用程序日志。
  • /loggers 使我们能够查询和修改我们应用程序的日志级别。
  • /metrics 详细说明我们应用程序的指标。这可能包括通用指标和自定义指标。
  • /prometheus 返回与前面一样的指标,但格式化为与Prometheus服务器一起工作。
  • /scheduledtasks 提供了关于我们应用程序中每个计划任务的细节。
  • /sessions 列出HTTP会话,因为我们使用的是Spring Session。
  • /shutdown 执行应用程序的优雅关闭。
  • /threaddump 转储底层JVM的线程信息。

执行器路径的超媒体

Spring Boot 增加了一个所有路径的集合入口,可以返回所有可用的执行器路径的链接。这将有助于发现执行器路径及其相应的URL。默认情况下,这个集合入口可以通过 /actuator 路径访问。因此,如果我们向这个URL发送一个GET请求,它将返回各种路径的执行器链接。


3.png

如上所示,/actuator 路径在 _links 字段下报告所有可用的执行器路径。如果我们配置了一个自定义的管理基础路径,那么我们应该能使用该集合入口发现URL。例如,如果我们将management.endpoints.web.base-path 设置为 /mgmt ,那么我们应该向 /mgmt 路径发送请求,以查看链接列表。但是如果当管理集合入口被设置为 / 时,集合入口被禁用,以防止与其他映射发生冲突的可能性。

健康指示器

就像以前的版本一样,我们可以很容易地添加自定义指标。与其他 API 相反,用于创建自定义健康路径的抽象概念保持不变。然而,一个新的接口,即 ReactiveHealthIndicator,已经被添加到实现反应式健康检查。让我们来看看一个简单的自定义反应式健康检查。


4.png

健康指标的一个方便的特点是,我们可以把它们作为一个层次结构的一部分进行汇总。因此,按照前面的例子,我们可以把所有的下游服务归入一个下游服务类别。只要每个嵌套的服务都是可以到达的,这个类别就会是健康的。

健康组

Spring Boot 2.2 开始,我们可以将健康指标组织成组,并对所有组员应用相同的配置。例如,我们可以通过在 application.properties 中添加以下内容来创建一个名为 custom 的健康组。

5.png

这样,自定义组包含 diskSpaceping 健康指标。现在,如果我们调用 /actuator/health 路径,它将在 JSON 响应中告诉我们关于新的健康组。


6.png

相关文章
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
26天前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
63 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
1月前
|
监控 Java 对象存储
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
41 1
消息中间件 缓存 监控
106 0
|
3月前
|
Java Spring 监控
Spring Boot Actuator:守护你的应用心跳,让监控变得触手可及!
【8月更文挑战第31天】Spring Boot Actuator 是 Spring Boot 框架的核心模块之一,提供了生产就绪的特性,用于监控和管理 Spring Boot 应用程序。通过 Actuator,开发者可以轻松访问应用内部状态、执行健康检查、收集度量指标等。启用 Actuator 需在 `pom.xml` 中添加 `spring-boot-starter-actuator` 依赖,并通过配置文件调整端点暴露和安全性。Actuator 还支持与外部监控工具(如 Prometheus)集成,实现全面的应用性能监控。正确配置 Actuator 可显著提升应用的稳定性和安全性。
109 0
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
271 6
|
3月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
4月前
|
监控 Java 微服务
Spring Boot微服务部署与监控的实战指南
【7月更文挑战第19天】Spring Boot微服务的部署与监控是保障应用稳定运行和高效维护的重要环节。通过容器化部署和云平台支持,可以实现微服务的快速部署和弹性伸缩。而利用Actuator、Prometheus、Grafana等监控工具,可以实时获取应用的运行状态和性能指标,及时发现并解决问题。在实际操作中,还需根据应用的具体需求和场景,选择合适的部署和监控方案,以达到最佳效果。
|
25天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
126 1
|
9天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
86 62