编写不易,转载请注明(http://shihlei.iteye.com/blog/2433665)!
一 概述
SpringBoot Actuator 是SpringBoot提供的 “应用监控管理” 工具,可以方便的获取系统的各种信息,配合其他的监控工具定时采集这些信息完成系统监控。
Endpoint 是 Actuator 暴露的信息端点,Actuator 内建了众多的Endpoint 覆盖了常用的监控管理点,同时开发一套框架,方便应用定义自己的Endpoint。
应用获得 Actuator 只需要添加“spring-boot-starter-actuator”依赖即可。
doc:https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#production-ready
注:文章基于 SpringBoot 版本 : 2.0.5.RELEASE
二 Actuator 使用
1)Actuator 使用初步
(1)添加依赖
<!-- 监控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
(2)添加配置
# actuator 监控 management: # 监控开放的端口,可以区别于 应用web服务端口 server: port: 8088 endpoints: # 配置Http 暴露的 Endpoint web: exposure: # include 用于开放指定Endpoint,只开放需要的,默认["info","health"] include: ["*"] # exclude 用于排除指定的Endpoint,只开放需要的 exclude: [] # web 访问路径 base-path: /actuator # 配置Http 暴露的 Endpoint jmx: exposure: # include 用于开放指定Endpoint,只开放需要的,默认["*"] include: ["*"] # exclude 用于排除指定的Endpoint,只开放需要的 exclude: [] # enable 用于 开启禁用 某个 Endpoint, "shutdown" 为 Endpoint id shutdown: enabled: true # headlth Endpoint 配置 endpoint: health: show-details: always
(3)启动 SpringBoot App
【1】Idea SpringBoot RunDashboard 查看
【2】web访问:Http://localhost:8088/actuator
2)内建Endpoint 说明:
(1)概述:
Actuator 默认内建了大量的Endpoint,提供了常用的监控管理功能。按照Endpoint的职能,一般分为如下三类:
(a)配置类:查看应用启动时的某些配置信息
(b)指标类:查看应用运行时的实时信息
(c)控制类:操作应用,例如重启,关闭等
(2)SpringBoot2.0 内建Endpoint举例说明
【1】应用信息
info:显示yml配置的应用信息。
env,env-toMatch:环境信息
【2】配置:可用于检查系统的注入情况是否正确
beans:应用的 bean 列表
conditions:显示Conguration或AutoCongration创建的Bean及创建是Condition的匹配程度
loggers,loggers-name:日志Logger的信息
mappings:web应用@RequestMapping信息
【3】实时信息
health:健康信息
heapdump,threaddump:堆dump,线程栈dump
httptrace:最近该应用的http请求跟踪
metrics,metrics-requiredMetricName:监控信息
【4】操作:比较危险,一般不开放操作
shutdown:关闭应用
(3)开启关闭Endpoint配置:
management.endpoints.enabled-by-default=false management.endpoint.[endpoint id].enabled=true
三 自定义 Endpoint
1)概述
Actuator 内建很多Endpoint ,基本涵盖各个分类,如果业务需要,某些监控管理功能不是和复用或扩展已有的Endpoint,可以自定义Endpoint。
2)自定义 Demo
(1)概述:
自定义Endpoint 需要2步:添加@Endpoint 注解修饰的Endpoint类,通过 @ReadOperation ,@WriteOperation,@DeleteOperation。注解方法。通过 Conguration 注册到容器中。
@ReadOperation:注解的方法提供获取信息的能力
@WriteOperation:注解的方法提供修改能力
@DeleteOperation:注解的方法某些删除能力
Demo 定义一个名叫 app 的endpoint ,提供name,platform信息
(2)Demo实现
依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
【1】定义Endpoint 类
App:
package x.demo.springboot.actuator.app; /** * App 信息 * */ public class App { private String name; private String platform; public App() { } public App(String name, String platform) { this.name = name; this.platform = platform; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPlatform() { return platform; } public void setPlatform(String platform) { this.platform = platform; } }
Endpoint:
package x.demo.springboot.actuator.app; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.boot.actuate.endpoint.annotation.WriteOperation; @Endpoint(id = "app") public class AppEndpoint { App app = new App("actuator-test", "ios"); @ReadOperation public App read() { return app; } @WriteOperation public String write(String name, String platform) { app.setName(name); app.setPlatform(platform); return "success"; } }
【2】添加Configuration
package x.demo.springboot.actuator.app; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * AppEndpointAutoConfiguration */ @Configuration public class AppEndpointConfiguration { @Bean @ConditionalOnMissingBean @ConditionalOnEnabledEndpoint public AppEndpoint appEndpoint() { return new AppEndpoint(); } }
如果是自定义Starter里的Endpoint 可以配置下 AutoConfiguration:在META-INF/spring.factories 添加
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ x.demo.springboot.actuator.app.AppEndpointConfiguration
【3】启动
【4】JMX修改:jconsole --> MBean --> Endpoint --> read/write
四 Health Endpoint
1)概述:
Health Endpoint 如前所述,可以提供应用的健康信息,包括应用自己和应用依赖的中间件或服务(如Redis,db等),所有组件工作正常,应用的status才是up状态。
HealthIndicator是 Health Endpoint 设计的组件的探测器,亦是扩展口,可以通过提供HealthIndicator,通知 Health Endpoint 探测我们关注的依赖服务的健康情况。
提供 HealthIndicator 主要两种方式:实现 HealthIndicator 或 继承 AbstractHealthIndicator 等
2)Demo
(1)方式一:实现 HealthIndicator
package x.demo.springboot.actuator.health; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.stereotype.Component; /** * AppHealthIndicator * */ @Component("app") public class AppHealthIndicator implements HealthIndicator { /** * Return an indication of health. * * @return the health for */ @Override public Health health() { int errorCode = check(); if (errorCode != 0) { // 状态不正常 return Health.down().withDetail("Error Code", errorCode).build(); } // 健康 return Health.up().build(); } private int check() { return -1; } }
(2)方式二:继承 AbstractHealthIndicator
package x.demo.springboot.actuator.health; import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.Health; import org.springframework.stereotype.Component; /** * AppExtraHealthIndicator * */ @Component("app-extra") public class AppExtraHealthIndicator extends AbstractHealthIndicator { /** * Actual health check logic. * * @param builder the {@link Builder} to report health status and details * @throws Exception any {@link Exception} that should create a {@link Status#DOWN} * system status. */ @Override protected void doHealthCheck(Health.Builder builder) throws Exception { // 如果不正常,抛异常接口,AbstractHealthIndicator 完成异常捕获,down builder.up().withDetail("app-extra", "app-extra"); } }
(3)提供Configuration 通知框架
package x.demo.springboot.actuator.health; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * AppHealthIndicatorConfiguration */ @Configuration public class AppHealthIndicatorConfiguration { // 指定名字 @Bean("app-state") AppHealthIndicator appHealthIndicator() { return new AppHealthIndicator(); } @Bean("app-state-extra") AppExtraHealthIndicator appExtraHealthIndicator() { return new AppExtraHealthIndicator(); } }
(4)验证
相关推荐
在Spring Boot生态系统中,Spring Boot Actuator是一个非常重要的模块,它为我们的应用程序提供了丰富的监控和管理功能。通过Actuator,开发者可以轻松地了解应用的健康状况、性能指标、日志输出以及更多的运行时...
一个使用springboot actuator监控应用的实战项目例子,对于想使用actuator来监控应用的初级程序员来说是一个不错的学习例子! 关注我!给我留言或者私信发邮箱,看到的话可以给你们发资源哦~
SpringBoot2.0-Actuator是Spring Boot框架中的一个强大组件,主要负责提供应用程序的监控和管理能力。在Spring Boot应用中,Actuator通过暴露一系列的端点(endpoints),使得开发者可以方便地查看和操作应用程序的...
Spring Boot Actuator是一款基于Spring Boot的监控工具,提供了许多有用的endpoint来监控和管理应用程序。这些endpoint包括beans、configprops、dump、env、health、info、metrics、mappings、shutdown、trace等,每...
SpringBoot Actuator是Spring Boot框架中的一个核心组件,专门用于应用程序的监控和管理。它提供了一组丰富的端点(endpoints),允许开发者深入了解应用程序的运行状态、性能指标、配置信息等,从而帮助优化和维护...
-- 监控和管理应用程序 --> <groupId>org.springframework.boot <artifactId>spring-boot-starter-actuator ``` ##### 2.2 端点信息 端点(Endpoint)是Spring Boot Actuator的核心概念之一,它提供了对...
1. SpringBoot简介与优势 Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化新Spring应用的初始搭建以及开发过程。...·监控和管理:SpringBoot提供了Actuator模块,可以监控和管理应用的健康状态、指标等。
SpringBoot 监控管理模块actuator 没有权限的问题解决方法 SpringBoot 监控管理模块actuator 是一个功能强大且灵活的监控管理模块,它提供了一系列的监控和管理功能,例如自动配置报告、 Beans 列表、配置属性、...
SpringBoot的Actuator组件是Spring Boot框架中用于监控和管理应用程序的一个强大工具。它提供了丰富的端点(endpoints),允许开发者深入了解应用的运行状态,包括健康检查、审计日志、指标统计、环境信息以及应用的...
Spring Boot Actuator 是 Spring Boot 框架提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。Actuator 监控只需要添加以下依赖...
SpringBoot Actuator提供了一套监控和管理应用的工具,包括应用指标、审计、健康检查、环境信息等。 9. **Thymeleaf模板引擎** 对于前端展示,SpringBoot可以配合Thymeleaf或其他模板引擎,如FreeMarker或...
9. **Actuator**:SpringBoot的Actuator模块提供了丰富的健康检查和监控指标,包括应用的环境信息、内存使用情况、线程状态等。 10. **Docker化部署**:SpringBoot应用可以轻松打包为可执行的JAR或WAR文件,进一步...
SpringBoot Actuator是SpringBoot框架中一个非常重要的模块,它为微服务提供了一套丰富的健康检查、监控和管理功能,使得开发者能够更好地了解和控制运行中的应用程序。本篇文章将深入探讨"springboot-actuator-...
Actuator提供了丰富的端点来监控和管理应用程序,而Spring Security则可以帮助你实现权限控制和认证。 总的来说,这个学习资源将带你全面了解SpringBoot的方方面面,从基础的起步搭建到复杂的微服务整合,都是Java...
5. 良好的监控:通过Actuator提供健康检查、指标、审计等监控功能。 三、配置 SpringBoot的配置主要通过application.properties或application.yml文件进行。这些文件中的配置项会被自动加载到Spring的Environment中...
6. **健康检查与监控**:SpringBoot 提供了 Actuator 组件,用于监控应用的健康状态和暴露管理端点,如 `/info` 和 `/health`。 7. **Actuator**:Actuator 提供了一套端点,可用于查看应用程序的状态、日志、指标...
- Actuator是SpringBoot的监控和管理工具,提供了健康检查、指标、审计、日志配置等丰富的端点。 7. **Web MVC与WebFlux** - SpringBoot对Spring MVC的支持无处不在,同时也引入了反应式编程的WebFlux框架,用于...
4. 健康检查和Actuator:SpringBoot提供了Actuator模块,用于监控和管理应用状态,包括健康检查、指标收集等。 5. 模块化:SpringBoot支持Spring生态系统中的多个模块,如Spring Data、Spring Security等,可以方便...