强大的 actuator 服务监控与管理
SpringBoot
是为了简化Spring
应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程
actuator
是spring boot
项目中非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api
请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节…
Endpoints
actuator
的核心部分,它用来监视应用程序及交互,spring-boot-actuator
中已经内置了非常多的 Endpoints(health、info、beans、httptrace、shutdown等等)
,同时也允许我们自己扩展自己的端点
Spring Boot 2.0
中的端点和之前的版本有较大不同,使用时需注意。另外端点的监控机制也有很大不同,启用了不代表可以直接访问,还需要将其暴露出来,传统的management.security
管理已被标记为不推荐。
皮一下很开心
内置Endpoints
id | desc | Sensitive |
---|---|---|
auditevents |
显示当前应用程序的审计事件信息 | Yes |
beans |
显示应用Spring Beans的完整列表 | Yes |
caches |
显示可用缓存信息 | Yes |
conditions |
显示自动装配类的状态及及应用信息 | Yes |
configprops |
显示所有 @ConfigurationProperties 列表 | Yes |
env |
显示 ConfigurableEnvironment 中的属性 | Yes |
flyway |
显示 Flyway 数据库迁移信息 | Yes |
health |
显示应用的健康信息(未认证只显示status ,认证显示全部信息详情) |
No |
info |
显示任意的应用信息(在资源文件写info.xxx即可) | No |
liquibase |
展示Liquibase 数据库迁移 | Yes |
metrics |
展示当前应用的 metrics 信息 | Yes |
mappings |
显示所有 @RequestMapping 路径集列表 | Yes |
scheduledtasks |
显示应用程序中的计划任务 | Yes |
sessions |
允许从Spring会话支持的会话存储中检索和删除用户会话。 | Yes |
shutdown |
允许应用以优雅的方式关闭(默认情况下不启用) | Yes |
threaddump |
执行一个线程dump | Yes |
httptrace |
显示HTTP跟踪信息(默认显示最后100个HTTP请求 - 响应交换) | Yes |
导入依赖
在 pom.xml
中添加 spring-boot-starter-actuator
的依赖
1 |
<dependency> |
注意事项
如果要访问info
接口想获取maven
中的属性内容请记得添加如下内容
1 |
<build> |
属性配置
在 application.properties
文件中配置actuator
的相关配置,其中info
开头的属性,就是访问info
端点中显示的相关内容,值得注意的是Spring Boot2.x
中,默认只开放了info、health
两个端点,剩余的需要自己通过配置management.endpoints.web.exposure.include
属性来加载(有include
自然就有exclude
,不做详细概述了)。如果想单独操作某个端点可以使用management.endpoint.端点.enabled
属性进行启用或禁用
1 |
# 描述信息 |
简单测试
启动项目,访问 http://localhost:8080/actuator/info 看到如下内容代表配置成功
1 |
{ |
自定义 - 重点
上面讲了很多都是配置相关,以及自带的一些端点,在实际应用中有时候默认并不能满足我们的要求,比如Spring Boot
默认的健康端点就很有可能不能满足
默认装配 HealthIndicators
下列是依赖spring-boot-xxx-starter
后相关HealthIndicator
的实现(通过management.health.defaults.enabled
属性可以禁用它们),但想要获取一些额外的信息时,自定义的作用就体现出来了…
名称 | 描述 |
---|---|
CassandraHealthIndicator |
检查 Cassandra 数据库是否启动。 |
DiskSpaceHealthIndicator |
检查磁盘空间不足。 |
DataSourceHealthIndicator |
检查是否可以获得连接 DataSource 。 |
ElasticsearchHealthIndicator |
检查 Elasticsearch 集群是否启动。 |
InfluxDbHealthIndicator |
检查 InfluxDB 服务器是否启动。 |
JmsHealthIndicator |
检查 JMS 代理是否启动。 |
MailHealthIndicator |
检查邮件服务器是否启动。 |
MongoHealthIndicator |
检查 Mongo 数据库是否启动。 |
Neo4jHealthIndicator |
检查 Neo4j 服务器是否启动。 |
RabbitHealthIndicator |
检查 Rabbit 服务器是否启动。 |
RedisHealthIndicator |
检查 Redis 服务器是否启动。 |
SolrHealthIndicator |
检查 Solr 服务器是否已启动。 |
健康端点(第一种方式)
实现HealthIndicator
接口,根据自己的需要判断返回的状态是UP
还是DOWN
,功能简单。
1 |
package com.battcn.health; import org.springframework.boot.actuate.health.Health; |
简单测试
启动项目,访问 http://localhost:8080/actuator/health 看到如下内容代表配置成功
1 |
{ |
健康端点(第二种方式)
继承AbstractHealthIndicator
抽象类,重写doHealthCheck
方法,功能比第一种要强大一点点,默认的DataSourceHealthIndicator 、 RedisHealthIndicator
都是这种写法,内容回调中还做了异常的处理。
1 |
package com.battcn.health; import org.springframework.boot.actuate.health.AbstractHealthIndicator; |
简单测试
启动项目,访问 http://localhost:8080/actuator/health 看到如下内容代表配置成功
1 |
{ |
定义自己的端点
上面介绍的 info
、health
都是spring-boot-actuator
内置的,真正要实现自己的端点还得通过@Endpoint、 @ReadOperation、@WriteOperation、@DeleteOperation
。
注解介绍
不同请求的操作,调用时缺少必需参数,或者使用无法转换为所需类型的参数,则不会调用操作方法,响应状态将为400(错误请求)
@Endpoint
构建 rest api 的唯一路径@ReadOperation
GET请求,响应状态为 200 如果没有返回值响应 404(资源未找到)@WriteOperation
POST请求,响应状态为 200 如果没有返回值响应 204(无响应内容)@DeleteOperation
DELETE请求,响应状态为 200 如果没有返回值响应 204(无响应内容)
1 |
package com.battcn.endpoint; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; |
以为这就大功告成了吗,现实告诉我的是spring-boot
默认是不认识这玩意的,得申明成一个Bean
(请看 主函数
)
皮一下很开心
主函数
1 |
package com.battcn; import com.battcn.endpoint.MyEndPoint; |
测试
完成准备事项后,启动Chapter13Application
访问 http://localhost:8080/actuator/battcn 看到如下内容代表配置成功…
1 |
{ |
总结
参考文档:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready
强大的 actuator 服务监控与管理的更多相关文章
- Spring Boot (27) actuator服务监控与管理
actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管.审计.收集应用的运行情况,针对微服务而言它是必不可少的一个环节. ...
- spring boot 2.x 系列 —— actuator 服务监控与管理
文章目录 一.概念综述 1.1 端点 1.2 启用端点 1.3 暴露端点 1.4 健康检查信息 二.项目说明 1.1 项目结构说明 1.2 主要依赖 1.3 项目配置 1.4 查看监控状态 三.自定义 ...
- spring boot actuator服务监控与管理
1.引入actuator所需要的jar包 <dependency> <groupId>org.springframework.boot</groupId> < ...
- Springboot监控之一:SpringBoot四大神器之Actuator之3-springBoot的监控和管理--指标说明
Spring Boot包含很多其他的特性,它们可以帮你监控和管理发布到生产环境的应用.你可以选择使用HTTP端点,JMX或远程shell(SSH或Telnet)来管理和监控应用.审计(Auditing ...
- 监控与管理dubbo服务
Dubbo是阿里多年前开源的一套服务治理框架,在众多互联网企业里应用广泛.本文介绍了一些如何监控与管理dubbo服务.使用的工具与<dubbox 的各种管理和监管>大致相同,本文更侧重于命 ...
- Spring Cloud系列(三) 应用监控与管理Actuator
Spring Cloud系列(二) 应用监控与管理Actuator 前言:要想使用Spring Cloud ,Spring Boot 提供的spring-boot-starter-actuator模块 ...
- SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统
业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件. spring-b ...
- SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator.提到Actuator,又不得不提Micrometer ...
- 笔记:Spring Boot 监控与管理
在微服务架构中,我们将原本庞大的单体系统拆分为多个提供不同服务的应用,虽然,各个应用的内部逻辑因分解而简化,但由于部署的应用数量成倍增长,使得系统的维护复杂度大大提升,为了让运维系统能够获取各个为服务 ...
随机推荐
- Java实现 蓝桥杯 基础练习 杨辉三角形
基础练习 杨辉三角形 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数. 它的一个重要性质 ...
- Java实现 LeetCode 318 最大单词长度乘积
318. 最大单词长度乘积 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母.你可以认为每个单词只包含小 ...
- Java实现 蓝桥杯VIP 算法提高 数字黑洞
算法提高 数字黑洞 时间限制:1.0s 内存限制:256.0MB 问题描述 任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个 ...
- 【CSS】滚动条样式
/*定义滚动条宽高及背景,宽高分别对应横竖滚动条的尺寸*/ .scrollbar::-webkit-scrollbar{ width: 16px; height: 16px; background-c ...
- syslog客户端java实现
//package com.tony.util; import java.io.*; import java.net.*; /** * UDP客户端程序,用于对服务端发送数据,并接收服务端的回应信息. ...
- OV2640读ID全是FF问题
最近刚好在Cyclone IV上通过LVDS把一个7寸的屏点亮,赶着热度,淘宝买了OV2640这个摄像头模块,初始化因为用Vrilog比C复杂得多,易调试性不如C,所以使用STM32初始化,模块有F3 ...
- 温故知新-多线程-forkjoin、CountDownLatch、CyclicBarrier、Semaphore用法
Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 文章目录 摘要 forkjoin C ...
- 手把手带你入门numpy,从此数据处理不再慌【四】
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是numpy专题的第四篇文章,numpy中的数组重塑与三元表达式. 首先我们来看数组重塑,所谓的重塑本质上就是改变数组的shape.在保 ...
- vue甘特图gantt
vue做甘特图,先大致介绍下核心功能: (1)横轴.纵轴拖拽: (2)自定义监听点击事件(双击.右键等)(3)任务之间显示父子层级关系:(4)左侧列表信息,右侧时间轴表示任务:(5)每个任务可以订制样 ...
- throws,throw,try,catch,finally 分别代表什么 意义?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口. 在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例.当一个方法出现异常后便 抛出一个异 ...