热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot学习(二十七):SpringBootActuator让你轻松监控你的SpringBoot应用

SpringBootActuatorSpringBootActuator可以帮助你监控和管理SpringBoot应用,比如健康检查、审计、统计和HTTP追踪等。所有

Spring Boot Actuator

Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等。所有的这些特性可以通过JMX或者HTTP endpoints来获得。

Actuator同时还可以与外部应用监控系统整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用。

Spring Boot还有一个用于监控基于 Spring Boot 的应用:Spring Boot Admin,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI。Spring Boot Admin会在下一篇文章进行讲解



集成Spring Boot Actuator

Spring Boot 集成Spring Boot Actuator很简单,只需要添加一个actuator依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>



Spring Boot Actuator使用

当我们将Spring Actuator Dependencies添加到我们的Spring启动项目时&#xff0c;它就会自动启用执行器端点。

Actuator 的核心是端点&#xff08;endpoints&#xff09;&#xff0c;我们通过端点可以获取应用的一些监控信息或者通过端点来改变系统的一些状态。

当你运行应用程序时&#xff0c;你将看到执行器端点映射到日志中。

//在基本路径“/actuator&#39;”下暴露2个端点Exposing 2 endpoint(s) beneath base path &#39;/actuator&#39;

执行器端点&#xff08;endpoints&#xff09;可用于监控应用及与应用进行交互&#xff0c;Spring Boot包含很多内置的端点&#xff0c;你也可以添加自己的。下面是Spring Boot内置的端点

项目Value
电脑$1600
手机$12
导管$1

ID描述
auditevents公开当前应用程序的审核事件信息。
beans显示应用程序中所有Spring bean的完整列表。
caches暴露可用的缓存。
conditions显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。
configprops显示所有的整理列表&#64;ConfigurationProperties,查看配置属性&#xff0c;包括默认配置
env露出Spring的属性的各种环境变量,后面可跟/{name}查看具体的值
flyway显示已应用的任何Flyway数据库迁移。
health显示应用健康信息,在spring boot2.0以后需要在配置里show-details打开所有健康信息
httptrace显示HTTP跟踪信息&#xff08;默认情况下&#xff0c;最后100个HTTP请求 - 响应交换&#xff09;,2.0以后需要手动打开
info显示任意应用信息,是在配置文件里自己定义的
integrationgraph显示Spring Integration图。
loggers显示和修改应用程序中记录器的配置。
liquibase显示已应用的任何Liquibase数据库迁移。
metrics显示当前应用程序的“指标”信息,比如内存用量和HTTP请求计数,后可跟/{name}查看具体值
mappings显示所有&#64;RequestMapping路径的整理列表。
scheduledtasks显示应用程序中的计划任务。
sessions允许从Spring Session支持的会话存储中检索和删除用户会话。使用Spring Session对响应式Web应用程序的支持时不可用
shutdown允许应用以优雅的方式关闭&#xff08;默认情况下不启用&#xff09;。 默认关闭
threaddump执行线程转储。

注意事项:

在spring boot 2.0以后,actuator默认只公开了info和health两个端点,要想使用其他的端点,需要在application.yml中打开:

management:endpoints:web:exposure:include:"*"

注意:

在这里include: “*” ,这个"“双引号在YML中是必须要,在application.properties是不需要”"双引号的,application.properties中是这样的:

management.endpoints.web.exposure.include&#61;*

而且所有的端点都以默认的路径http://localhost:8080/actuator 开始;

如我们查看health端点的信息就是访问:http://localhost:8080/actuator/health

默认health端点只显示一些简单的信息

显示所有健康状态&#xff0c;需要加配置

management.endpoint.health.show-details&#61;always

如下&#xff0c;是我访问health的所有信息。因为我的rabbitmq服务下掉了&#xff0c;所以状态变成了DOWN
在这里插入图片描述


端点的路径

默认情况下&#xff0c;端点通过使用端点的ID在/actuator路径下的HTTP上公开。例如&#xff0c;beans端点暴露在/actuator/beans下。如果要将端点映射到其他路径&#xff0c;则可以使用management.endpoints.web.path-mapping属性。另外&#xff0c;如果您想更改基本路径&#xff0c;则可以使用management.endpoints.web.base-path。
以下示例将/actuator/health重新映射到/healthcheck&#xff1a;

#修改基本路径为/&#xff0c;即将/actuator改为/
management.endpoints.web.base-path&#61;/
#修改health端点的路径&#xff0c;即将/health改为/healthcheck
management.endpoints.web.path-mapping.health&#61;healthcheck


启用端点

但是如果你只想打开某个端点,我们是这样的配置的,同样式在application.yml中:

management:endpoint:端点名称:enabled: true

默认情况下&#xff0c;除shutdown以外的所有端点均已启用。要配置单个端点的启用&#xff0c;请使用management.endpoint..enabled属性。以下示例启用shutdown端点&#xff1a;

management.endpoint.shutdown.enabled&#61;true

暴露端点

要更改公开哪些端点&#xff0c;请使用以下技术特定的include和exclude属性&#xff1a;

PropertyDefault
management.endpoints.jmx.exposure.exclude*
management.endpoints.jmx.exposure.include*
management.endpoints.web.exposure.exclude*
management.endpoints.web.exposure.includeinfo, health

include属性列出了公开的端点的ID,exclude属性列出了不应该公开的端点的ID
exclude属性优先于include属性。包含和排除属性都可以使用端点ID列表进行配置。

注意&#xff1a;这里的优先级是指同一端点ID,同时出现在include属性表和exclude属性表里,exclude属性优先于include属性,即此端点没有暴露


配置端点缓存时间

对于不带任何参数的读取操作,端点自动缓存对其响应。要配置端点缓存响应的时间&#xff0c;请使用cache.time-live属性。以下示例将beans端点缓存的生存时间设置为10秒&#xff1a;

management.endpoint.beans.cache.time-to-live&#61;10s

注意&#xff1a;在进行经过验证的HTTP请求时&#xff0c;Principal将被视为端点的输入&#xff0c;因此不会缓存响应。



Actuator Endpoints安全

我们可以使用Spring Security来保证Actuator Endpoints安全:

1、在pom.xml中添加依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

2、添加配置类&#xff0c;拦截所有actuator请求

&#64;Configuration
&#64;EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {&#64;Overrideprotected void configure(HttpSecurity http) throws Exception {//对actuator监控所用的访问全部需要认证http.formLogin().and().authorizeRequests().antMatchers("/actuator/*").authenticated();}
}

3、在application.yml中配置帐号密码:这里是在spring boot2.0以后的版本中,在2.0之前不是这样的,稍微有差别:

# http安全机制
spring:security:user:name: mpassword: 123roles: ADMIN

properties:

#http安全机制
spring.security.user.name&#61;m
spring.security.user.password&#61;123
spring.security.user.roles&#61;ADMIN

配置完之后&#xff0c;访问就需要帐号密码了
在这里插入图片描述


推荐阅读
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • 全面解析Java虚拟机:内存模型深度剖析 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
author-avatar
晨光微露36
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有