discuz 企业网站 模板,福州建站模板厂家,南昌建设局,东莞做网站排名目录一、简介二、Maven依赖三、使用入门1.HTTP 方式访问端点2.JMX 方式访问端点3.端点信息整理4.端点的启用与禁用5.端点的公开6.保护 HTTP 端点7.配置 CORS 跨域官方文档#xff1a; https://docs.spring.io/spring-boot/docs/2.4.5/reference/htmlsingle/#production-ready …
目录一、简介二、Maven依赖三、使用入门1.HTTP 方式访问端点2.JMX 方式访问端点3.端点信息整理4.端点的启用与禁用5.端点的公开6.保护 HTTP 端点7.配置 CORS 跨域官方文档 https://docs.spring.io/spring-boot/docs/2.4.5/reference/htmlsingle/#production-ready
2.4.5 为 SpringBoot 版本号查看其他的 SpringBoot 版本对应的 Spring Actuator 文档可以直接在地址栏替换后访问。
一、简介 Spring Actuator 是 Spring Boot 提供的一组用于 监控和管理 Spring Boot 应用 的组件可以通过 HTTP、JMX 或远程 Shell 访问应用的运行时信息和统计数据。Actuator 提供了一些常用的端点endpoint可以用来获取应用的健康状况、环境信息、配置信息、日志 等。 端点指的是用于监控应用服务的指标比如应用服务的健康状况等一般是 HTTP 或 JMX 接口形式。
常用的端点包括 /health用于获取应用的健康状况返回的结果包含应用的状态信息、健康检查结果、数据库连接状态等 /info用于获取应用的基本信息返回的结果包含应用的版本信息、构建时间、Git 提交 ID 等。 /metrics用于获取应用的统计信息返回的结果包含应用的请求数、响应时间、错误数等。 /env用于获取应用的环境信息返回的结果包含应用的配置属性、系统属性等。 /loggers用于获取或修改应用的日志记录器可以查看日志的级别、修改日志的级别等。 更多端点的详细信息在文章的后面具体介绍
Actuator 还提供了一些扩展的端点和功能如审计Audit、远程 Shell 访问、线程 Dump 等。通过 Actuator开发者可以更方便地了解应用地运行状况和性能同时可以通过暴露地端点和功能来对应用进行管理和调优。可以通过在 pom.xml 文件中引入 spring-boot-starter-actuator 依赖来使用 Actuator 组件。
二、Maven依赖
!-- Spring Actuator --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId
/dependency三、使用入门
1.HTTP 方式访问端点
查看服务开启的 HTTP 端点浏览器访问地址http://localhost:8080/actuator 查看不同服务的端点只需要在端口后拼接 /actuator / 端点 即可例如http://localhost:8080/actuator/health
2.JMX 方式访问端点
JMXJava Management Extensions 接口需要通过 Java Consolejconsole 来进行访问。 Java Consolejconsole 是 Java 平台自带的一款监控工具可以用于监控 Java 应用程序的性能和资源使用情况。jconsole 可以监控本地或远程的 Java 进程并提供了可视化界面GUI展示 Java 进程的运行状态和性能指标。 注意因为 jconsole 使用 GUI 进行可视化界面的展示所以没有可视化界面的 Linux 服务器是无法使用的。
jconsole 与 JMX 服务一起使用通过 JMX 服务暴露的 MBeanManaged Bean 对象来获取和管理 Java 应用程序的状态和属性信息。开发者可以在 Java 应用程序中使用 JMX API 来暴露自定义的 MBean 对象并在 jconsole 中查看和管理这些 MBean 对象。
jconsole 使用方式
方式一命令行直接输入 jconsole 回车方式二Windows 系统下可以使用 Ctrl R输入 jconsole 回车。 选择好自己的 Java 项目后可以双击连接。
会提示 无法使用 SSL 连接到 *** 这个不影响我们点击 不安全的连接 即可。 然后就可以看到我们的可视化界面了这里我们可以查看 概览、内存、线程、类、VM、概要、MBean 等信息。 我们把标签切换到 MBean点击 org.springframework.boot再点击 Endpoint就可以看到 Spring Actuator 在 JMX 中默认暴露出来的端点了。这里可以发现JMX 暴露的端点比 HTTP 暴露的端点更多 3.端点信息整理
以下是与技术无关的可用端点
HTTP 方式默认只开启 health 和 infoJMX 方式默认全部开启
端点ID说明默认HTTP默认JMXauditevents展示当前应用程序的审核事件信息。需要一个 AuditEventRepository bean。NYbeans展示应用中所有 Spring bean 的完整列表。NYcaches展示所有可用的缓存。NYconditions显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。NYconfigprops显示所有 ConfigurationProperties 的信息。NYenv显示 ConfigurableEnvironment 中的属性。NYflyway显示已应用的任何 Flyway 数据库迁移。需要一个或多个 Flyway bean。NYhealth显示应用程序健康信息。YYhttptrace显示 HTTP 跟踪信息默认情况下最近 100 次 HTTP 请求-响应交换。需要一个 HttpTraceRepository bean。NYinfo显示任意应用程序信息。YYintegrationgraph显示 Spring Integration 图。需要对 spring-integration-core。NYloggers显示和修改应用程序中 loggers 的配置。NYliquibase显示已应用的任何 Liquibase 数据库迁移。需要一个或多个 Liquibase bean。NYmetrics显示当前应用程序的“指标”信息。NYmappings显示所有路径的整理列表 RequestMapping。NYscheduledtasks显示应用程序中的计划任务。NYsessions允许从 Spring Session 支持的会话存储中检索和删除用户会话。需要使用 Spring Session 的基于Servlet 的 Web 应用程序。NYshutdown让应用程序正常关闭。默认情况下禁用。NYstartup显示收集的启动步骤数据 ApplicationStartup。需要 SpringApplication 配欸只一个 BufferingApplicationStartup。NYthreaddump执行线程转储。NY
如果您的应用程序是 Web 应用程序Spring MVC、Spring WebFlux 或 Jersey可以使用以下附加端点
端点ID说明默认HTTP默认JMXheapdump返回 hprof 堆转储文件。N不适用jolokia通过 HTTP 展示 JMX bean当 Jolokia 在类路径上时不适用于 WebFlux。需要 jolokia-core 依赖。N不适用logfile返回日志文件的内容如果 logging.file.name 或 logging.file.path 属性已设置。支持使用 HTTP Range 标头检索日志文件的部分内容。N不适用prometheus以 Prometheus 服务器可以抓取的格式展示指标。需要 micrometer-registry-prometheus 依赖。N不适用
4.端点的启用与禁用
默认情况下除 shutdown 之外的所有端点都是开启的。如果需要配置一个端点的启用状态可以使用 management.endpoint.id.enabled 属性。例如启用 shutdown 端口
management.endpoint.shutdown.enabledtrue如果你希望端点是指定哪些启用而不是指定哪些禁用可以将 management.endpoints.enabled-by-default 属性设置为 false 并想要启用端点的 enabled 属性设置为 true。例如启用 info 端点并禁用其他所有端点
management.endpoints.enabled-by-defaultfalse
management.endpoint.info.enabledtrue注意禁用的端点会完全从应用程序的上下文中删除。如果指向更改公开的端点可以使用 include 和 exclude 属性。
5.端点的公开
要更改公开的端点可以使用以下方式指定 HTTP 或 JMX 的 include 和 exclude 属性。
属性默认management.endpoints.jmx.exposure.excludemanagement.endpoints.jmx.exposure.include*management.endpoints.web.exposure.excludemanagement.endpoints.web.exposure.includeinfo, health
include 属性列出了公开的端点 IDexclude 属性列出不应公开的端点 ID。属性 exclude 优于 include 属性。
例如要停止公开通过 JMX 的所有端点并仅公开 health 和 info 端点请使用以下属性
management.endpoints.jmx.exposure.includeinfo,health符号 * 可用于选择所有的端点。例如公开通过 HTTP 除 env 和 beans 端点之外的所有内容请使用以下属性
management.endpoints.web.exposure.include*
management.endpoints.web.exposure.excludeenv,beans注意 符号 * 在 YAML 中具有特殊函数因此如果要包含或排除所有端点请务必添加引号
management:endpoints:web:exposure:include: *exclude: env,beans补充 如果想在暴露端点时实时自己的策略可以自己注册一个 EndpointFilter bean。
6.保护 HTTP 端点
我们需要像保护任何其他敏感 URL 一样注意保护 HTTP 端点。如果存在 Spring Security则默认情况下使用 Spring Security 的内容协商策略保护端点。如果希望为 HTTP 端点配置自定义安全性例如只允许具有特定角色的用户访问它们Spring Boot 提供了一些 RequestMatcher 可以与 Spring Security 结合使用的方便对象。
典型的 Spring Security 配置可能类似于以下示例
Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests) - requests.anyRequest().hasRole(ENDPOINT_ADMIN));http.httpBasic();return http.build();
}前面的示例使用 EndpointRequest.toAnyEndpoint() 将请求匹配到任何端点然后确保所有端点都具有该 ENDPOINT_ADMIN 角色。EndpointRequest 上还提供了其他几种匹配器方法。相关的 API 文档地址https://docs.spring.io/spring-boot/docs/2.4.5/actuator-api/htmlsingle/
如果是在防火墙后部署应用程序你可能希望无需身份验证即可访问所有执行器端点。可以通过更改 management.endpoints.web.exposure.include 属性来实现如下所示
management:endpoints:web:exposure:include: *此外如果存在 Spring Security将需要添加自定义安全配置以允许对端点进行未经身份验证的访问如下所示
Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throw Exception {http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequest((requests) -requests.anyRequest().permitAll());return http.build();
}注意 在上面的两个示例中配置仅适用于执行器断电。由于 Spring Boot 的安全配置在任何 bean 存在的情况下都需要完全退出 SecurityFilterChain因此您需要使用 SecurityFilterChain 适用于应用程序其余部分的规则配置额外的 bean。
7.配置 CORS 跨域
可以进行如下配置
managements:endpoints:web:cors:allowed-origins: https://example.comallowed-methos: GET,POST整理完毕完结撒花~