Spring Boot 中的监视器是什么?
监视器就是一个类似现实生活中的监控,但是它监控的是程序内部运行情况;Spring Boot自带监控组件—Actuator,它就负责监控程序的健康状况、Bean加载情况、环境变量、日志信息、线程信息等,Actuator的核心是端点(Endpoint),它用来监视、提供应用程序的信息,Spring Boot提供的spring-boot-actuator组件中已经内置了非常多的Endpoint(health、info、beans、metrics、httptrace、shutdown等),每个端点都可以启用和禁用
在Spring Boot中,监视器(Actuator)是一个用于监控和管理应用程序的模块;它提供了一组RESTful接口,可以用于获取应用程序的各种健康指标、性能指标和运行时信息;通过监视器,你可以实时监控应用程序的运行状态、调整配置参数、查看日志等
Spring Boot的监视器模块提供哪些常用的功能?
- 健康检查(Health Check):通过`/actuator/health`端点可以获取应用程序的健康状态,包括是否存活、是否就绪等。你可以使用该端点来监控应用程序是否正常运行
- 信息端点(Info Endpoint):通过`/actuator/info`端点可以获取应用程序的自定义信息,例如版本号、构建信息等
- 环境端点(Environment Endpoint):通过`/actuator/env`端点可以获取应用程序的环境变量和配置属性信息
- 日志配置端点(Log Configuration Endpoint):通过`/actuator/loggers`端点可以获取和修改应用程序的日志配置信息,例如设置日志级别、添加日志输出器等
- 线程转储端点(Thread Dump Endpoint):通过`/actuator/threaddump`端点可以获取应用程序的线程转储信息,用于分析应用程序的线程状态和性能问题
- 执行器端点(Custom Endpoints):除了上述内置的端点外,你还可以自定义其他的端点,用于获取应用程序的特定信息或执行特定的操作
通过在Spring Boot应用程序中添加`spring-boot-starter-actuator`依赖,监视器模块将被自动启用,并提供上述功能;你可以通过配置文件或代码来配置监视器的端点路径、安全性等
如何在 Spring Boot 中禁用 Actuator 端点的安全性?
在Spring Boot中,可以通过配置来禁用Actuator端点的安全性;默认情况下,Actuator端点是受保护的,需要进行身份验证才能访问。以下是禁用Actuator端点安全性的几种方法:
- application.properties配置文件:
management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always
-
application.yml配置文件:
management: endpoints: web: exposure: include: "*" endpoint: health: show-details: always
-
使用Java配置:创建一个配置类,继承`WebSecurityConfigurerAdapter`,重写`configure(HttpSecurity http)`方法,并禁用Actuator端点的安全性
@Configuration public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .requestMatchers(EndpointRequest.toAnyEndpoint()) .permitAll() .and() .csrf().disable(); } }
请注意,禁用Actuator端点的安全性会使所有的Actuator端点对外开放,任何人都可以访问;因此,需要谨慎使用,并确保只在安全的环境中使用;另外,禁用Actuator端点的安全性可能会导致安全风险,请确保在生产环境中仔细评估和测试
我们如何监视所有 Spring Boot 微服务?
Spring Boot 提供监视器端点来监控;这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助;但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应用程序的端点来了解其状态或健康状况;想象一下涉及 50 个应用程序的微服务,管理员将不得不击中所有 50 个应用程序的执行终端;为了帮助我们处理这种情况,我们将使用位于 GitHub - codecentric/spring-boot-admin: Admin UI for administration of spring boot applications 的开源项目;它建立在 Spring Boot Actuator 之上,它提供了一个 Web UI,使我们能够可视化多个应用程序的度量