编写不易,转载请注明(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)验证
相关推荐
一个使用springboot actuator监控应用的实战项目例子,对于想使用actuator来监控应用的初级程序员来说是一个不错的学习例子! 关注我!给我留言或者私信发邮箱,看到的话可以给你们发资源哦~
springboot(十九):使用Spring Boot Actuator监控应用 - 纯洁的微笑博客http://www.ityouknow.com/spri
Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等。这篇文章主要介绍了使用SpringBoot Actuator监控应,有兴趣的可以了解一下
主要介绍了Springboot actuator应用后台监控实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本篇文章主要介绍了springboot 使用Spring Boot Actuator监控应用小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
就可以实现远程监控,和用户管理模块,动态定时任务支付windows服务器和Linux服务监控,Mac还未测试 应该也支持参考项目地址:项目框架SpringBoot 2.0.3.RELEASEmybatis-plus 3.6MySqlJdk1.8目录说明actuator-...
应用监控:Actuator Swagger 2.8 统一异常处理 数据库连接池:HikariCP Mybatis Redis MongoDB 基本概念 spring-boot-starter-parent 使用 Maven 可以继承 spring-boot-starter-parent 项目来获得一些合理的默认配置...
Actuator监控应用 38 Maven依赖 38 YML配置 39 Actuator访问路径 40 Admin-UI分布式微服务监控中心 40 Admin-UI-Server 40 Admin-UI-Client 41 十、 性能优化 43 组件自动扫描带来的问题 43 将Servlet容器...
按照本教程启动 Spring Boot Actuator 应用程序。 然后,查看以获取有关如何启动此仪表板的更多信息。
提供运行时的应用监控 极大地提高了开发,部署效率 与云计算的天然集成 缺点 书籍文档较少,且不够深入 SpringBoot版本 SpringBoot快速搭建 http://start.spring.io SpringTool...
使用Actuator检查与监控 actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。
在传统Spring应用中使用spring-boot-actuator模块提供监控端点 Spring Boot应用的后台运行配置 Spring Boot自定义Banner Dubbo进行服务治理 chapter9-2-1:Spring Boot中使用Dubbo进行服务治理 chapter9-2-2:Spring...
7.3 通过 JMX 监控应用程序 ....................... 126 7.4 定制 Actuator......................................... 128 7.4.1 修改端点 ID ............................... 128 7.4.2 启用和禁用端点 ...........
+ [actuator应用监控](#actuator) + [lombok](#lombok) + [baseEntity](#baseEntity) + [统一响应返回值](#result) + [异常](#exception) + [数据校验](#validation) + [日志](#log) + [swagger](#swagger) + ...
7.3 通过 JMX 监控应用程序 ....................... 126 7.4 定制 Actuator ......................................... 128 7.4.1 修改端点 ID ............................... 128 7.4.2 启用和禁用端点 ..........
- [在传统Spring应用中使用spring-boot-actuator模块提供监控端点](http://blog.didispace.com/spring-boot-actuator-without-boot/) - [Spring Boot应用的后台运行配置]...
所有的 spring-boot-starter 都有约定俗成的默认配置,但允许我们调整这些配置以改变默认...spring-boot-starter-actuator与应用监控 资料是spring-boot-starter 常用模块进行详细内容的思维导图,整理好的,望采纳。
这个社区项目为 Spring Boot 应用程序提供了一个管理界面。 应用程序向我们的 Spring Boot Admin Client 注册(通过 HTTP)或使用 Spring Cloud(例如 Eureka、Consul)发现。 UI 只是一个位于 Spring Boot Actuator...
使用远程shell来进行监控和管理 i. 43.1. 连接远程shell i. 43.1.1. 远程shell证书 ii. 43.2. 扩展远程shell i. 43.2.1. 远程shell命令 ii. 43.2.2. 远程shell插件 v. 44. 度量指标(Metrics) i. 44.1. 系统指标 ...